def test_serializer_outputs_expected_schema_for_addon_experiment(self): experiment = ExperimentFactory.create_with_status( Experiment.STATUS_SHIP, type=Experiment.TYPE_ADDON, locales=[LocaleFactory.create()], countries=[CountryFactory.create()], ) serializer = ExperimentRecipeSerializer(experiment) self.assertEqual(serializer.data["action_name"], "opt-out-study") self.assertEqual(serializer.data["name"], experiment.name) self.assertEqual( serializer.data["comment"], experiment.client_matching ) self.assertEqual( serializer.data["filter_object"], [ FilterObjectBucketSampleSerializer(experiment).data, FilterObjectChannelSerializer(experiment).data, FilterObjectLocaleSerializer(experiment).data, FilterObjectCountrySerializer(experiment).data, ], ) self.assertEqual( serializer.data["arguments"], ExperimentRecipeAddonArgumentsSerializer(experiment).data, )
def test_serializer_outputs_expected_schema_for_pref_experiment(self): experiment = ExperimentFactory.create_with_status( Experiment.STATUS_SHIP, type=Experiment.TYPE_PREF, locales=[LocaleFactory.create()], countries=[CountryFactory.create()], ) serializer = ExperimentRecipeSerializer(experiment) self.assertEqual(serializer.data["action_name"], "preference-experiment") self.assertEqual(serializer.data["name"], experiment.name) self.assertEqual(serializer.data["comment"], experiment.client_matching) self.assertEqual( serializer.data["filter_object"], [ FilterObjectBucketSampleSerializer(experiment).data, FilterObjectChannelSerializer(experiment).data, FilterObjectVersionsSerializer(experiment).data, FilterObjectLocaleSerializer(experiment).data, FilterObjectCountrySerializer(experiment).data, ], ) self.assertEqual( serializer.data["arguments"], ExperimentRecipePrefArgumentsSerializer(experiment).data, ) self.assertEqual(serializer.data["experimenter_slug"], experiment.slug)
def test_normandy_recipe_json_serializes_pref_study(self): experiment = ExperimentFactory.create_with_status( Experiment.STATUS_SHIP ) recipe_json = json.loads(experiment.normandy_recipe_json) self.assertEqual( recipe_json, ExperimentRecipeSerializer(experiment).data )
def test_serializer_excludes_countries_if_none_set(self): experiment = ExperimentFactory.create_with_status( Experiment.STATUS_SHIP, type=Experiment.TYPE_ADDON) experiment.countries.all().delete() serializer = ExperimentRecipeSerializer(experiment) filter_object_types = [ f["type"] for f in serializer.data["filter_object"] ] self.assertNotIn("country", filter_object_types)
def test_get_experiment_recipe_returns_recipe_info(self): user_email = "*****@*****.**" experiment = ExperimentFactory.create_with_variants() response = self.client.get( reverse("experiments-api-recipe", kwargs={"slug": experiment.slug}), **{settings.OPENIDC_EMAIL_HEADER: user_email}, ) self.assertEqual(response.status_code, 200) json_data = json.loads(response.content) serialized_experiment = ExperimentRecipeSerializer(experiment).data self.assertEqual(serialized_experiment, json_data)
def normandy_recipe_json(self): from experimenter.experiments.serializers import ( ExperimentRecipeSerializer ) return json.dumps(ExperimentRecipeSerializer(self).data, indent=2)