def test_serializer_outputs_expected_schema_non_multi_pref_format(self): experiment = ExperimentFactory.create( normandy_slug="normandy-slug", pref_branch=Experiment.PREF_BRANCH_DEFAULT, pref_type=Experiment.PREF_TYPE_JSON_STR, pref_name="browser.pref", firefox_min_version="55.0", ) variant = ExperimentVariantFactory.create(slug="control", ratio=25, experiment=experiment, value='{"some": "json"}') serializer = ExperimentRecipeMultiPrefVariantSerializer(variant) expected_data = { "preferences": { "browser.pref": { "preferenceBranchType": "default", "preferenceType": "string", "preferenceValue": '{"some": "json"}', } }, "ratio": 25, "slug": "control", } self.assertDictEqual(expected_data, serializer.data)
def test_seriailzer_outputs_expected_schema_for_single_pref_experiment(self): experiment = ExperimentFactory.create( pref_type=Experiment.PREF_TYPE_JSON_STR, firefox_max_version="70.0" ) variant = ExperimentVariantFactory.create(experiment=experiment) serializer = ExperimentRecipeMultiPrefVariantSerializer(variant) self.assertEqual(serializer.data["ratio"], variant.ratio) self.assertEqual(serializer.data["slug"], variant.slug) serialized_preferences = serializer.data["preferences"] self.assertDictEqual( serialized_preferences[experiment.pref_name], { "preferenceBranchType": experiment.pref_branch, "preferenceType": PrefTypeField().to_representation(experiment.pref_type), "preferenceValue": variant.value, }, )
def test_seriailzer_outputs_expected_schema_for_multi_pref_variant(self): experiment = ExperimentFactory.create( pref_type=Experiment.PREF_TYPE_JSON_STR, is_multi_pref=True ) variant = ExperimentVariantFactory.create(experiment=experiment) preference = VariantPreferencesFactory.create(variant=variant) serializer = ExperimentRecipeMultiPrefVariantSerializer(variant) self.assertEqual(serializer.data["ratio"], variant.ratio) self.assertEqual(serializer.data["slug"], variant.slug) serialized_preferences = serializer.data["preferences"] self.assertDictEqual( serialized_preferences[preference.pref_name], { "preferenceBranchType": preference.pref_branch, "preferenceType": PrefTypeField().to_representation(preference.pref_type), "preferenceValue": preference.pref_value, }, ) self.assertEqual(serializer.data["ratio"], variant.ratio) self.assertEqual(serializer.data["slug"], variant.slug)
def test_serializer_outputs_expected_schema_for_multi_pref_format(self): experiment = ExperimentFactory.create(normandy_slug="normandy-slug", firefox_min_version="55.0", is_multi_pref=True) variant = ExperimentVariantFactory.create(slug="control", ratio=25, experiment=experiment) preference = VariantPreferencesFactory.create(variant=variant) serializer = ExperimentRecipeMultiPrefVariantSerializer(variant) self.assertEqual(serializer.data["ratio"], 25) self.assertEqual(serializer.data["slug"], "control") serialized_preferences = serializer.data["preferences"] self.assertDictEqual( serialized_preferences[preference.pref_name], { "preferenceBranchType": preference.pref_branch, "preferenceType": preference.pref_type, "preferenceValue": preference.pref_value, }, )