@@ -252,7 +252,37 @@ def setUp(self):
252252 self .client .login (username = 'admin' , password = 'password' )
253253 )
254254 self .experiment = Experiment .objects .get (slug = 'homepage-text' )
255+ self .homepage = Page .objects .get (url_path = '/home/' )
255256 self .homepage_alternative_1 = Page .objects .get (url_path = '/home/home-alternative-1/' )
257+ self .homepage_alternative_2 = Page .objects .get (url_path = '/home/home-alternative-2/' )
258+
259+ def get_edit_postdata (self , ** kwargs ):
260+ alternatives = self .experiment .alternatives .all ()
261+
262+ postdata = {
263+ 'name' : self .experiment .name ,
264+ 'slug' : self .experiment .slug ,
265+ 'control_page' : self .experiment .control_page .pk ,
266+ 'alternatives-TOTAL_FORMS' : 2 ,
267+ 'alternatives-INITIAL_FORMS' : 2 ,
268+ 'alternatives-MIN_NUM_FORMS' : 0 ,
269+ 'alternatives-MAX_NUM_FORMS' : 1000 ,
270+
271+ 'alternatives-0-page' : alternatives [0 ].page .pk ,
272+ 'alternatives-0-id' : alternatives [0 ].pk ,
273+ 'alternatives-0-ORDER' : '1' ,
274+ 'alternatives-0-DELETE' : '' ,
275+
276+ 'alternatives-1-page' : alternatives [1 ].page .pk ,
277+ 'alternatives-1-id' : alternatives [1 ].pk ,
278+ 'alternatives-1-ORDER' : '2' ,
279+ 'alternatives-1-DELETE' : '' ,
280+
281+ 'goal' : self .experiment .goal .pk ,
282+ 'status' : self .experiment .status ,
283+ }
284+ postdata .update (kwargs )
285+ return postdata
256286
257287 def test_experiments_menu_item (self ):
258288 response = self .client .get (reverse ('wagtailadmin_home' ))
@@ -264,10 +294,40 @@ def test_experiments_index(self):
264294 self .assertEqual (response .status_code , 200 )
265295 self .assertContains (response , 'Homepage text' )
266296
297+ def test_experiment_new (self ):
298+ response = self .client .get ('/admin/experiments/experiment/create/' )
299+ self .assertEqual (response .status_code , 200 )
300+
301+ response = self .client .post ('/admin/experiments/experiment/create/' , {
302+ 'name' : "Another experiment" ,
303+ 'slug' : 'another-experiment' ,
304+ 'control_page' : self .homepage_alternative_1 .pk ,
305+ 'alternatives-TOTAL_FORMS' : 1 ,
306+ 'alternatives-INITIAL_FORMS' : 0 ,
307+ 'alternatives-MIN_NUM_FORMS' : 0 ,
308+ 'alternatives-MAX_NUM_FORMS' : 1000 ,
309+ 'alternatives-0-page' : self .homepage_alternative_2 .pk ,
310+ 'alternatives-0-id' : '' ,
311+ 'alternatives-0-ORDER' : '1' ,
312+ 'alternatives-0-DELETE' : '' ,
313+ 'goal' : self .homepage .pk ,
314+ 'status' : 'draft' ,
315+ })
316+ self .assertRedirects (response , '/admin/experiments/experiment/' )
317+ self .assertTrue (Experiment .objects .filter (slug = 'another-experiment' ).exists ())
318+
267319 def test_experiment_edit (self ):
268320 response = self .client .get ('/admin/experiments/experiment/edit/%d/' % self .experiment .pk )
269321 self .assertEqual (response .status_code , 200 )
270322
323+ response = self .client .post (
324+ '/admin/experiments/experiment/edit/%d/' % self .experiment .pk ,
325+ self .get_edit_postdata (name = "Homepage text updated" )
326+ )
327+ self .assertRedirects (response , '/admin/experiments/experiment/' )
328+ experiment = Experiment .objects .get (pk = self .experiment .pk )
329+ self .assertEqual (experiment .name , "Homepage text updated" )
330+
271331 def test_experiment_delete (self ):
272332 response = self .client .get ('/admin/experiments/experiment/delete/%d/' % self .experiment .pk )
273333 self .assertEqual (response .status_code , 200 )
0 commit comments