11<?php
22
33import ('plugins.generic.dataverse.dataverseAPI.search.DataverseSearchBuilder ' );
4+ import ('plugins.generic.dataverse.classes.dataverseConfiguration.DataverseConfiguration ' );
45
56class DataverseSearchBuilderTest extends PHPUnit \Framework \TestCase
67{
8+ private const DATAVERSE_URL = 'https://test.dataverse.org/dataverse/testDataverse ' ;
9+ private const SEARCH_URL = 'https://test.dataverse.org/api/search? ' ;
10+
711 private function getDataverseSearchBuilder (): DataverseSearchBuilder
812 {
913 $ configuration = new DataverseConfiguration ();
1014 $ httpClient = new \GuzzleHttp \Client ();
1115
12- $ configuration ->setDataverseUrl (' https://test.dataverse.org/dataverse/testDataverse ' );
16+ $ configuration ->setDataverseUrl (self :: DATAVERSE_URL );
1317
1418 return new DataverseSearchBuilder ($ configuration , $ httpClient );
1519 }
1620
1721 public function testEmptyQuery (): void
1822 {
1923 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
20- $ this ->assertEquals ('q=* ' , $ searchBuilder ->getParams ());
24+ $ this ->assertEquals (
25+ [self ::SEARCH_URL . 'q=* ' ],
26+ $ searchBuilder ->getSearchUrls ()
27+ );
2128 }
2229
2330 public function testSingleQuery (): void
2431 {
2532 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
2633 $ searchBuilder ->addQuery ('test ' );
27- $ this ->assertEquals ('q=test ' , $ searchBuilder ->getParams ());
34+ $ this ->assertEquals (
35+ [self ::SEARCH_URL . 'q=test ' ],
36+ $ searchBuilder ->getSearchUrls ()
37+ );
2838 }
2939
3040 public function testMultipleQueries (): void
@@ -33,14 +43,20 @@ public function testMultipleQueries(): void
3343 ->addQuery ('title:test ' )
3444 ->addQuery ('language:English ' );
3545
36- $ this ->assertEquals ('q=title:test+language:English ' , $ searchBuilder ->getParams ());
46+ $ this ->assertEquals (
47+ [self ::SEARCH_URL . 'q=title:test+language:English ' ],
48+ $ searchBuilder ->getSearchUrls ()
49+ );
3750 }
3851
3952 public function testSingleType (): void
4053 {
4154 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
4255 $ searchBuilder ->addType ('dataset ' );
43- $ this ->assertEquals ('q=*&type=dataset ' , $ searchBuilder ->getParams ());
56+ $ this ->assertEquals (
57+ [self ::SEARCH_URL . 'q=*&type=dataset ' ],
58+ $ searchBuilder ->getSearchUrls ()
59+ );
4460 }
4561
4662 public function testMultipleTypes (): void
@@ -49,14 +65,20 @@ public function testMultipleTypes(): void
4965 ->addType ('dataset ' )
5066 ->addType ('file ' );
5167
52- $ this ->assertEquals ('q=*&type=dataset&type=file ' , $ searchBuilder ->getParams ());
68+ $ this ->assertEquals (
69+ [self ::SEARCH_URL . 'q=*&type=dataset&type=file ' ],
70+ $ searchBuilder ->getSearchUrls ()
71+ );
5372 }
5473
5574 public function testSingleFilterQuery (): void
5675 {
5776 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
5877 $ searchBuilder ->addFilterQuery ('publicationDate ' , '2016 ' );
59- $ this ->assertEquals ('q=*&fq=publicationDate:2016 ' , $ searchBuilder ->getParams ());
78+ $ this ->assertEquals (
79+ [self ::SEARCH_URL . 'q=*&fq=publicationDate:2016 ' ],
80+ $ searchBuilder ->getSearchUrls ()
81+ );
6082 }
6183
6284 public function testMultipleFilterQueries (): void
@@ -65,7 +87,10 @@ public function testMultipleFilterQueries(): void
6587 ->addFilterQuery ('publicationDate ' , '2016 ' )
6688 ->addFilterQuery ('publicationStatus ' , 'Published ' );
6789
68- $ this ->assertEquals ('q=*&fq=publicationDate:2016+publicationStatus:Published ' , $ searchBuilder ->getParams ());
90+ $ this ->assertEquals (
91+ [self ::SEARCH_URL . 'q=*&fq=publicationDate:2016+publicationStatus:Published ' ],
92+ $ searchBuilder ->getSearchUrls ()
93+ );
6994 }
7095
7196 public function testFullParamsSearch (): void
@@ -76,22 +101,24 @@ public function testFullParamsSearch(): void
76101 ->addFilterQuery ('publicationStatus ' , 'Published ' );
77102
78103 $ this ->assertEquals (
79- 'q=foo&type=dataset&fq=publicationStatus:Published ' ,
80- $ searchBuilder ->getParams ()
104+ [ self :: SEARCH_URL . 'q=foo&type=dataset&fq=publicationStatus:Published ' ] ,
105+ $ searchBuilder ->getSearchUrls ()
81106 );
82107 }
83108
84- public function testBuildDataverseSearchUrl (): void
109+ public function testLargeNumberOfFiltersGenerateMultipleUrls (): void
85110 {
86- $ searchBuilder = $ this -> getDataverseSearchBuilder ()
87- -> addQuery ( ' foo ' )
88- -> addType ( ' dataset ' )
89- -> addType ( ' file ' )
90- -> addFilterQuery ( ' publicationStatus ' , ' Published ' );
111+ $ largeNumberOfFilters = 1000 ;
112+ $ searchBuilder = $ this -> getDataverseSearchBuilder ();
113+ for ( $ i = 0 ; $ i < $ largeNumberOfFilters ; $ i ++) {
114+ $ searchBuilder -> addFilterQuery ( ' publicationStatus ' , ' Published ' );
115+ }
91116
92- $ this ->assertEquals (
93- 'https://test.dataverse.org/api/search?q=foo&type=dataset&type=file&fq=publicationStatus:Published ' ,
94- $ searchBuilder ->getSearchUrl ()
95- );
117+ $ searchUrls = $ searchBuilder ->getSearchUrls ();
118+
119+ $ this ->assertGreaterThan (1 , count ($ searchUrls ));
120+ foreach ($ searchUrls as $ searchUrl ) {
121+ $ this ->assertStringContainsString (self ::SEARCH_URL , $ searchUrl );
122+ }
96123 }
97124}
0 commit comments