55
66class DataverseSearchBuilderTest extends PHPUnit \Framework \TestCase
77{
8+ private const DATAVERSE_URL = 'https://test.dataverse.org/dataverse/testDataverse ' ;
9+ private const SEARCH_URL = 'https://test.dataverse.org/api/search? ' ;
10+
811 private function getDataverseSearchBuilder (): DataverseSearchBuilder
912 {
1013 $ configuration = new DataverseConfiguration ();
1114 $ httpClient = new \GuzzleHttp \Client ();
1215
13- $ configuration ->setDataverseUrl (' https://test.dataverse.org/dataverse/testDataverse ' );
16+ $ configuration ->setDataverseUrl (self :: DATAVERSE_URL );
1417
1518 return new DataverseSearchBuilder ($ configuration , $ httpClient );
1619 }
1720
1821 public function testEmptyQuery (): void
1922 {
2023 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
21- $ this ->assertEquals ('q=* ' , $ searchBuilder ->getParams ());
24+ $ this ->assertEquals (
25+ [self ::SEARCH_URL . 'q=* ' ],
26+ $ searchBuilder ->getSearchUrls ()
27+ );
2228 }
2329
2430 public function testSingleQuery (): void
2531 {
2632 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
2733 $ searchBuilder ->addQuery ('test ' );
28- $ this ->assertEquals ('q=test ' , $ searchBuilder ->getParams ());
34+ $ this ->assertEquals (
35+ [self ::SEARCH_URL . 'q=test ' ],
36+ $ searchBuilder ->getSearchUrls ()
37+ );
2938 }
3039
3140 public function testMultipleQueries (): void
@@ -34,14 +43,20 @@ public function testMultipleQueries(): void
3443 ->addQuery ('title:test ' )
3544 ->addQuery ('language:English ' );
3645
37- $ 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+ );
3850 }
3951
4052 public function testSingleType (): void
4153 {
4254 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
4355 $ searchBuilder ->addType ('dataset ' );
44- $ this ->assertEquals ('q=*&type=dataset ' , $ searchBuilder ->getParams ());
56+ $ this ->assertEquals (
57+ [self ::SEARCH_URL . 'q=*&type=dataset ' ],
58+ $ searchBuilder ->getSearchUrls ()
59+ );
4560 }
4661
4762 public function testMultipleTypes (): void
@@ -50,14 +65,20 @@ public function testMultipleTypes(): void
5065 ->addType ('dataset ' )
5166 ->addType ('file ' );
5267
53- $ 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+ );
5472 }
5573
5674 public function testSingleFilterQuery (): void
5775 {
5876 $ searchBuilder = $ this ->getDataverseSearchBuilder ();
5977 $ searchBuilder ->addFilterQuery ('publicationDate ' , '2016 ' );
60- $ this ->assertEquals ('q=*&fq=publicationDate:2016 ' , $ searchBuilder ->getParams ());
78+ $ this ->assertEquals (
79+ [self ::SEARCH_URL . 'q=*&fq=publicationDate:2016 ' ],
80+ $ searchBuilder ->getSearchUrls ()
81+ );
6182 }
6283
6384 public function testMultipleFilterQueries (): void
@@ -66,7 +87,10 @@ public function testMultipleFilterQueries(): void
6687 ->addFilterQuery ('publicationDate ' , '2016 ' )
6788 ->addFilterQuery ('publicationStatus ' , 'Published ' );
6889
69- $ 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+ );
7094 }
7195
7296 public function testFullParamsSearch (): void
@@ -77,22 +101,24 @@ public function testFullParamsSearch(): void
77101 ->addFilterQuery ('publicationStatus ' , 'Published ' );
78102
79103 $ this ->assertEquals (
80- 'q=foo&type=dataset&fq=publicationStatus:Published ' ,
81- $ searchBuilder ->getParams ()
104+ [ self :: SEARCH_URL . 'q=foo&type=dataset&fq=publicationStatus:Published ' ] ,
105+ $ searchBuilder ->getSearchUrls ()
82106 );
83107 }
84108
85- public function testBuildDataverseSearchUrl (): void
109+ public function testLargeNumberOfFiltersGenerateMultipleUrls (): void
86110 {
87- $ searchBuilder = $ this -> getDataverseSearchBuilder ()
88- -> addQuery ( ' foo ' )
89- -> addType ( ' dataset ' )
90- -> addType ( ' file ' )
91- -> addFilterQuery ( ' publicationStatus ' , ' Published ' );
111+ $ largeNumberOfFilters = 1000 ;
112+ $ searchBuilder = $ this -> getDataverseSearchBuilder ();
113+ for ( $ i = 0 ; $ i < $ largeNumberOfFilters ; $ i ++) {
114+ $ searchBuilder -> addFilterQuery ( ' publicationStatus ' , ' Published ' );
115+ }
92116
93- $ this ->assertEquals (
94- 'https://test.dataverse.org/api/search?q=foo&type=dataset&type=file&fq=publicationStatus:Published ' ,
95- $ searchBuilder ->getSearchUrl ()
96- );
117+ $ searchUrls = $ searchBuilder ->getSearchUrls ();
118+
119+ $ this ->assertGreaterThan (1 , count ($ searchUrls ));
120+ foreach ($ searchUrls as $ searchUrl ) {
121+ $ this ->assertStringContainsString (self ::SEARCH_URL , $ searchUrl );
122+ }
97123 }
98124}
0 commit comments