예제 #1
0
 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)
예제 #2
0
    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"])
예제 #3
0
    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"]
        )
예제 #4
0
    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"]
        )
예제 #5
0
    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()
        )