def test_serializer_updates_existing_variant_pref(self): variant = ExperimentVariantFactory.create(experiment=self.experiment) variant_pref = VariantPreferencesFactory.create(variant=variant) self.pref1["id"] = variant_pref.id self.control_variant["id"] = variant.id self.control_variant["ratio"] = 100 self.assertEqual(variant.preferences.all().count(), 1) self.assertTrue(variant.preferences.get(id=variant_pref.id)) data = {"is_multi_pref": True, "variants": [self.control_variant]} serializer = ExperimentDesignMultiPrefSerializer( instance=self.experiment, data=data, context={"request": self.request}) self.assertTrue(serializer.is_valid()) experiment = serializer.save() variant = ExperimentVariant.objects.get(id=variant.id) self.assertEqual(variant.preferences.all().count(), 2) self.assertEqual( variant.preferences.filter(id=variant_pref.id).count(), 1) self.assertEqual(experiment.changes.count(), 1)
def test_serializer_saves_multipref_experiment_design(self): data = { "is_multi_pref": True, "variants": [self.control_variant, self.branch1] } serializer = ExperimentDesignMultiPrefSerializer( instance=self.experiment, data=data, context={"request": self.request}) self.assertTrue(serializer.is_valid()) self.assertEqual(self.experiment.changes.count(), 0) experiment = serializer.save() self.assertTrue(experiment.variants.all().count(), 1) self.assertEqual(experiment.changes.count(), 1) control = ExperimentVariant.objects.get(experiment=experiment, is_control=True) branch1 = ExperimentVariant.objects.get(experiment=experiment, is_control=False) self.assertEqual(control.preferences.all().count(), 2) self.assertEqual(branch1.preferences.all().count(), 4)