Esempio n. 1
0
    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.assertEqual(expected_data, serializer.data)
Esempio n. 2
0
    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.assertEqual(
            serialized_preferences[preference.pref_name],
            {
                "preferenceBranchType": preference.pref_branch,
                "preferenceType": preference.pref_type,
                "preferenceValue": preference.pref_value,
            },
        )
Esempio n. 3
0
    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.assertEqual(
            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)
Esempio n. 4
0
    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.assertEqual(
            serialized_preferences[experiment.pref_name],
            {
                "preferenceBranchType":
                experiment.pref_branch,
                "preferenceType":
                PrefTypeField().to_representation(experiment.pref_type),
                "preferenceValue":
                variant.value,
            },
        )