def test_form_edits_existing_variants(self): form = ExperimentVariantsAddonForm(request=self.request, data=self.data, instance=self.experiment) self.assertTrue(form.is_valid()) self.assertEqual(self.experiment.variants.count(), 0) experiment = form.save() self.assertEqual(experiment.variants.count(), 3) self.data["variants-INITIAL_FORMS"] = 3 branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.data["variants-0-id"] = branch0.id self.data["variants-0-DELETE"] = False self.data["variants-0-name"] = "new branch 0 name" self.data["variants-0-description"] = "new branch 0 description" branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.data["variants-1-id"] = branch1.id self.data["variants-1-DELETE"] = False self.data["variants-1-name"] = "new branch 1 name" self.data["variants-1-description"] = "new branch 1 description" branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.data["variants-2-id"] = branch2.id self.data["variants-2-DELETE"] = False self.data["variants-2-name"] = "new branch 2 name" self.data["variants-2-description"] = "new branch 2 description" form = ExperimentVariantsAddonForm(request=self.request, data=self.data, instance=experiment) self.assertTrue(form.is_valid()) experiment = form.save() self.assertEqual(experiment.variants.count(), 3) branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.assertTrue(branch0.is_control) self.assertEqual(branch0.ratio, 34) self.assertEqual(branch0.description, self.data["variants-0-description"]) branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.assertFalse(branch1.is_control) self.assertEqual(branch1.ratio, 33) self.assertEqual(branch1.description, self.data["variants-1-description"]) branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.assertFalse(branch2.is_control) self.assertEqual(branch2.ratio, 33) self.assertEqual(branch2.description, self.data["variants-2-description"])
def test_form_adds_new_variant(self): form = ExperimentVariantsAddonForm( request=self.request, data=self.data, instance=self.experiment ) self.assertTrue(form.is_valid()) self.assertEqual(self.experiment.variants.count(), 0) experiment = form.save() self.assertEqual(experiment.variants.count(), 3) self.data["variants-INITIAL_FORMS"] = 3 self.data["variants-TOTAL_FORMS"] = 4 branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.data["variants-0-id"] = branch0.id self.data["variants-0-ratio"] = 25 branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.data["variants-1-id"] = branch1.id self.data["variants-1-ratio"] = 25 branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.data["variants-2-id"] = branch2.id self.data["variants-2-ratio"] = 25 self.data["variants-3-DELETE"] = False self.data["variants-3-name"] = "new branch 0 name" self.data["variants-3-description"] = "new branch 0 description" self.data["variants-3-ratio"] = 25 form = ExperimentVariantsAddonForm( request=self.request, data=self.data, instance=experiment ) self.assertTrue(form.is_valid()) experiment = form.save() self.assertEqual(experiment.variants.count(), 4) branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.assertEqual(branch0.ratio, 25) branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.assertEqual(branch1.ratio, 25) branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.assertEqual(branch2.ratio, 25) branch3 = experiment.variants.get(name=self.data["variants-3-name"]) self.assertEqual(branch3.ratio, 25) self.assertEqual( branch3.description, self.data["variants-3-description"] )
def test_form_removes_variant(self): form = ExperimentVariantsAddonForm( request=self.request, data=self.data, instance=self.experiment ) self.assertTrue(form.is_valid()) self.assertEqual(self.experiment.variants.count(), 0) experiment = form.save() self.assertEqual(experiment.variants.count(), 3) self.data["variants-INITIAL_FORMS"] = 3 self.data["variants-TOTAL_FORMS"] = 3 branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.data["variants-0-id"] = branch0.id self.data["variants-0-ratio"] = 50 branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.data["variants-1-id"] = branch1.id self.data["variants-1-DELETE"] = True branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.data["variants-2-id"] = branch2.id self.data["variants-2-ratio"] = 50 form = ExperimentVariantsAddonForm( request=self.request, data=self.data, instance=experiment ) self.assertTrue(form.is_valid()) experiment = form.save() self.assertEqual(experiment.variants.count(), 2) self.assertTrue( experiment.variants.filter( name=self.data["variants-0-name"] ).exists() ) self.assertFalse( experiment.variants.filter( name=self.data["variants-1-name"] ).exists() ) self.assertTrue( experiment.variants.filter( name=self.data["variants-2-name"] ).exists() )
def test_form_is_invalid_if_population_percent_above_100(self): self.data["population_percent"] = "101" form = ExperimentVariantsAddonForm( request=self.request, data=self.data ) self.assertFalse(form.is_valid()) self.assertIn("population_percent", form.errors)
def test_form_saves_new_variants(self): form = ExperimentVariantsAddonForm( request=self.request, data=self.data, instance=self.experiment ) self.assertTrue(form.is_valid()) self.assertEqual(self.experiment.variants.count(), 0) experiment = form.save() self.assertEqual( experiment.population_percent, decimal.Decimal("10.000") ) self.assertEqual( experiment.firefox_version, self.data["firefox_version"] ) self.assertEqual( experiment.firefox_channel, self.data["firefox_channel"] ) self.assertEqual( experiment.client_matching, self.data["client_matching"] ) self.assertEqual(experiment.variants.count(), 3) branch0 = experiment.variants.get(name=self.data["variants-0-name"]) self.assertTrue(branch0.is_control) self.assertEqual(branch0.ratio, 34) self.assertEqual( branch0.description, self.data["variants-0-description"] ) branch1 = experiment.variants.get(name=self.data["variants-1-name"]) self.assertFalse(branch1.is_control) self.assertEqual(branch1.ratio, 33) self.assertEqual( branch1.description, self.data["variants-1-description"] ) branch2 = experiment.variants.get(name=self.data["variants-2-name"]) self.assertFalse(branch2.is_control) self.assertEqual(branch2.ratio, 33) self.assertEqual( branch2.description, self.data["variants-2-description"] )