@@ -22,11 +22,22 @@ class CreateTest extends TestCase
22
22
{
23
23
protected $ route = 'wiki/create ' ;
24
24
25
+ const defaultData = [
26
+ 'domain ' => 'dErP.com ' ,
27
+ 'sitename ' => 'merp ' ,
28
+ 'username ' => 'AdminBoss ' ,
29
+ 'profile ' => '{
30
+ "audience": "narrow",
31
+ "temporality": "permanent",
32
+ "purpose": "data_hub"
33
+ } '
34
+ ];
35
+
25
36
use OptionsRequestAllowed;
26
37
use DatabaseTransactions;
27
38
28
39
/**
29
- * @dataProvider createProvider
40
+ * @dataProvider createDispatchesSomeJobsProvider
30
41
*/
31
42
public function testWikiCreateDispatchesSomeJobs ( $ elasticSearchConfig )
32
43
{
@@ -40,15 +51,7 @@ public function testWikiCreateDispatchesSomeJobs( $elasticSearchConfig )
40
51
Config::set ( 'wbstack.elasticsearch_shared_index_host ' , $ sharedIndexHost );
41
52
Config::set ( 'wbstack.elasticsearch_shared_index_prefix ' , $ sharedIndexPrefix );
42
53
43
- // seed up ready db
44
- $ manager = $ this ->app ->make ('db ' );
45
- $ job = new ProvisionWikiDbJob ();
46
- $ job ->handle ($ manager );
47
-
48
- $ dbRow = QueryserviceNamespace::create ([
49
- 'namespace ' => "derp " ,
50
- 'backend ' => "wdqs.svc " ,
51
- ]);
54
+ $ this ->createSQLandQSDBs ();
52
55
53
56
Queue::fake ();
54
57
@@ -62,7 +65,12 @@ public function testWikiCreateDispatchesSomeJobs( $elasticSearchConfig )
62
65
[
63
66
'domain ' => 'dErP.com ' ,
64
67
'sitename ' => 'merp ' ,
65
- 'username ' => 'AdminBoss '
68
+ 'username ' => 'AdminBoss ' ,
69
+ 'profile ' => '{
70
+ "audience": "narrow",
71
+ "temporality": "permanent",
72
+ "purpose": "data_hub"
73
+ } '
66
74
]
67
75
);
68
76
@@ -109,7 +117,7 @@ public function testWikiCreateDispatchesSomeJobs( $elasticSearchConfig )
109
117
}
110
118
}
111
119
112
- static public function createProvider () {
120
+ static public function createDispatchesSomeJobsProvider () {
113
121
yield [ [
114
122
'enabledForNewWikis ' => true ,
115
123
'clusterWithoutSharedIndex ' => 'all ' ,
@@ -219,4 +227,50 @@ public function testCreateWikiLimitsNumWikisPerUser()
219
227
->assertJsonPath ('data.domain ' , 'mywikidomain-2.com ' )
220
228
->assertJsonPath ('success ' , true );
221
229
}
230
+
231
+ private function createSQLandQSDBs (): void {
232
+ $ manager = $ this ->app ->make ('db ' );
233
+ $ job = new ProvisionWikiDbJob ();
234
+ $ job ->handle ($ manager );
235
+
236
+ QueryserviceNamespace::create ([
237
+ 'namespace ' => "derp " ,
238
+ 'backend ' => "wdqs.svc " ,
239
+ ]);
240
+ }
241
+
242
+ /**
243
+ * @dataProvider createWikiHandlesRangeOfPostValuesProvider
244
+ */
245
+ public function testCreateWikiHandlesRangeOfPostValues ($ data , $ expectedStatus ): void {
246
+ $ this ->createSQLandQSDBs ();
247
+ Queue::fake ();
248
+ $ user = User::factory ()->create (['verified ' => true ]);
249
+ $ response = $ this ->actingAs ($ user , 'api ' )
250
+ ->json (
251
+ 'POST ' ,
252
+ $ this ->route ,
253
+ $ data
254
+ );
255
+ $ response ->assertStatus ( $ expectedStatus );
256
+ }
257
+
258
+ static public function createWikiHandlesRangeOfPostValuesProvider (): array {
259
+ $ noDomain = self ::defaultData;
260
+ unset($ noDomain ['domain ' ]);
261
+ $ noSitename = self ::defaultData;
262
+ unset($ noSitename ['sitename ' ]);
263
+ $ noUsername = self ::defaultData;
264
+ unset($ noUsername ['username ' ]);
265
+ $ noprofile = self ::defaultData;
266
+ unset($ noprofile ['profile ' ]);
267
+ return [
268
+ 'all params present ' => [self ::defaultData , 200 ],
269
+ 'missing domain ' => [$ noDomain , 422 ],
270
+ 'missing sitename ' => [$ noSitename , 422 ],
271
+ 'missing username ' => [$ noUsername , 422 ],
272
+ 'missing profile ' => [$ noprofile , 200 ]
273
+ ];
274
+ }
275
+
222
276
}
0 commit comments