-
Notifications
You must be signed in to change notification settings - Fork 194
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Connect firefox version to V3 API fixes #3042
- Loading branch information
1 parent
29d1431
commit 14a9f6e
Showing
13 changed files
with
1,840 additions
and
409 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,9 @@ | |
from experimenter.bugzilla.tests.mixins import MockBugzillaTasksMixin | ||
|
||
|
||
firefox_min_version = Experiment.VERSION_CHOICES[0][0] | ||
|
||
|
||
class TestExperimentRapidSerializer(MockRequestMixin, MockBugzillaTasksMixin, TestCase): | ||
def test_serializer_outputs_expected_schema(self): | ||
owner = UserFactory(email="[email protected]") | ||
|
@@ -21,6 +24,7 @@ def test_serializer_outputs_expected_schema(self): | |
objectives="gotta go fast", | ||
audience="AUDIENCE 1", | ||
features=["FEATURE 1"], | ||
firefox_min_version=firefox_min_version, | ||
) | ||
|
||
serializer = ExperimentRapidSerializer(experiment) | ||
|
@@ -37,23 +41,25 @@ def test_serializer_outputs_expected_schema(self): | |
"bugzilla_url": "{bug_host}show_bug.cgi?id={bug_id}".format( | ||
bug_host=settings.BUGZILLA_HOST, bug_id=experiment.bugzilla_id | ||
), | ||
"firefox_min_version": firefox_min_version, | ||
}, | ||
) | ||
|
||
def test_serializer_required_fields(self): | ||
serializer = ExperimentRapidSerializer(data={}, context={"request": self.request}) | ||
self.assertFalse(serializer.is_valid()) | ||
self.assertIn("name", serializer.errors) | ||
self.assertIn("objectives", serializer.errors) | ||
self.assertIn("audience", serializer.errors) | ||
self.assertIn("features", serializer.errors) | ||
self.assertEqual( | ||
set(serializer.errors.keys()), | ||
set(["name", "objectives", "audience", "features", "firefox_min_version"]), | ||
) | ||
|
||
def test_serializer_bad_audience_value(self): | ||
data = { | ||
"name": "rapid experiment", | ||
"objectives": "gotta go fast", | ||
"audience": " WRONG AUDIENCE CHOICE", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
serializer = ExperimentRapidSerializer( | ||
data=data, context={"request": self.request} | ||
|
@@ -67,20 +73,35 @@ def test_serializer_bad_feature_value(self): | |
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["WRONG FEATURE 1", "WRONG FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
serializer = ExperimentRapidSerializer( | ||
data=data, context={"request": self.request} | ||
) | ||
self.assertFalse(serializer.is_valid()) | ||
self.assertIn("features", serializer.errors) | ||
|
||
def test_serializer_creates_experiment_and_sets_slug_and_changelog(self): | ||
def test_serializer_bad_firefox_min_version_value(self): | ||
data = { | ||
"name": "rapid experiment", | ||
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": "invalid version", | ||
} | ||
serializer = ExperimentRapidSerializer( | ||
data=data, context={"request": self.request} | ||
) | ||
self.assertFalse(serializer.is_valid()) | ||
self.assertIn("firefox_min_version", serializer.errors) | ||
|
||
def test_serializer_creates_experiment_and_sets_slug_and_changelog(self): | ||
data = { | ||
"name": "rapid experiment", | ||
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
|
||
serializer = ExperimentRapidSerializer( | ||
|
@@ -95,6 +116,9 @@ def test_serializer_creates_experiment_and_sets_slug_and_changelog(self): | |
self.assertEqual(experiment.name, "rapid experiment") | ||
self.assertEqual(experiment.slug, "rapid-experiment") | ||
self.assertEqual(experiment.objectives, "gotta go fast") | ||
self.assertEqual(experiment.audience, "AUDIENCE 1") | ||
self.assertEqual(experiment.features, ["FEATURE 1", "FEATURE 2"]) | ||
self.assertEqual(experiment.firefox_min_version, firefox_min_version) | ||
self.assertEqual( | ||
experiment.public_description, Experiment.BUGZILLA_RAPID_EXPERIMENT_TEMPLATE | ||
) | ||
|
@@ -135,6 +159,11 @@ def test_serializer_creates_experiment_and_sets_slug_and_changelog(self): | |
"new_value": ["FEATURE 1", "FEATURE 2"], | ||
"old_value": None, | ||
}, | ||
"firefox_min_version": { | ||
"display_name": "Firefox Min Version", | ||
"new_value": firefox_min_version, | ||
"old_value": None, | ||
}, | ||
} | ||
self.assertTrue( | ||
experiment.changes.filter( | ||
|
@@ -156,15 +185,17 @@ def test_serializer_creates_changelog_for_updates(self): | |
objectives="gotta go fast", | ||
audience="AUDIENCE 1", | ||
features=["FEATURE 1"], | ||
firefox_min_version=firefox_min_version, | ||
public_description=Experiment.BUGZILLA_RAPID_EXPERIMENT_TEMPLATE, | ||
) | ||
|
||
self.assertEqual(experiment.changes.count(), 1) | ||
data = { | ||
"name": "changing the name", | ||
"objectives": "changing objectives", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1"], | ||
"audience": "AUDIENCE 2", | ||
"features": ["FEATURE 2"], | ||
"firefox_min_version": Experiment.VERSION_CHOICES[1][0], | ||
} | ||
serializer = ExperimentRapidSerializer( | ||
instance=experiment, data=data, context={"request": self.request} | ||
|
@@ -175,14 +206,29 @@ def test_serializer_creates_changelog_for_updates(self): | |
|
||
changed_values = { | ||
"name": { | ||
"display_name": "Name", | ||
"new_value": "changing the name", | ||
"old_value": "rapid experiment", | ||
"display_name": "Name", | ||
}, | ||
"objectives": { | ||
"display_name": "Objectives", | ||
"new_value": "changing objectives", | ||
"old_value": "gotta go fast", | ||
"display_name": "Objectives", | ||
}, | ||
"audience": { | ||
"display_name": "Audience", | ||
"new_value": "AUDIENCE 2", | ||
"old_value": "AUDIENCE 1", | ||
}, | ||
"features": { | ||
"display_name": "Features", | ||
"new_value": ["FEATURE 2"], | ||
"old_value": ["FEATURE 1"], | ||
}, | ||
"firefox_min_version": { | ||
"display_name": "Firefox Min Version", | ||
"new_value": Experiment.VERSION_CHOICES[1][0], | ||
"old_value": firefox_min_version, | ||
}, | ||
} | ||
self.assertTrue( | ||
|
@@ -194,12 +240,12 @@ def test_serializer_creates_changelog_for_updates(self): | |
) | ||
|
||
def test_serializer_returns_errors_for_non_alpha_numeric_name(self): | ||
|
||
data = { | ||
"name": "!!!!!!!!!!!!!!!", | ||
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
|
||
serializer = ExperimentRapidSerializer( | ||
|
@@ -211,14 +257,14 @@ def test_serializer_returns_errors_for_non_alpha_numeric_name(self): | |
) | ||
|
||
def test_serializer_returns_error_for_non_unique_slug(self): | ||
|
||
ExperimentFactory.create(name="non unique slug", slug="non-unique-slug") | ||
|
||
data = { | ||
"name": "non. unique slug", | ||
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
|
||
serializer = ExperimentRapidSerializer( | ||
|
@@ -231,7 +277,6 @@ def test_serializer_returns_error_for_non_unique_slug(self): | |
) | ||
|
||
def test_serializer_update_experiment_does_not_throw_slug_err(self): | ||
|
||
experiment = ExperimentFactory.create( | ||
name="non unique slug", slug="non-unique-slug" | ||
) | ||
|
@@ -241,6 +286,7 @@ def test_serializer_update_experiment_does_not_throw_slug_err(self): | |
"objectives": "gotta go fast", | ||
"audience": "AUDIENCE 1", | ||
"features": ["FEATURE 1", "FEATURE 2"], | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
|
||
serializer = ExperimentRapidSerializer( | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -58,6 +58,7 @@ def test_post_detail_edits_rapid_experiment(self): | |
user_email = "[email protected]" | ||
audience = Experiment.RAPID_AUDIENCE_CHOICES[0][1] | ||
features = [feature[0] for feature in Experiment.RAPID_FEATURE_CHOICES] | ||
firefox_min_version = Experiment.VERSION_CHOICES[0][0] | ||
|
||
owner = UserFactory(email=user_email) | ||
experiment = ExperimentFactory.create( | ||
|
@@ -76,6 +77,7 @@ def test_post_detail_edits_rapid_experiment(self): | |
"objectives": "new hypothesis", | ||
"audience": audience, | ||
"features": features, | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
) | ||
|
||
|
@@ -92,18 +94,23 @@ def test_post_detail_edits_rapid_experiment(self): | |
self.assertEqual(experiment.name, "new name") | ||
self.assertEqual(experiment.slug, "rapid-experiment") | ||
self.assertEqual(experiment.objectives, "new hypothesis") | ||
self.assertEqual(experiment.audience, audience) | ||
self.assertEqual(experiment.features, features) | ||
self.assertEqual(experiment.firefox_min_version, firefox_min_version) | ||
|
||
def test_post_list_creates_rapid_experiment(self): | ||
user_email = "[email protected]" | ||
audience = Experiment.RAPID_AUDIENCE_CHOICES[0][1] | ||
features = [feature[0] for feature in Experiment.RAPID_FEATURE_CHOICES] | ||
firefox_min_version = Experiment.VERSION_CHOICES[0][0] | ||
|
||
data = json.dumps( | ||
{ | ||
"name": "rapid experiment", | ||
"objectives": "gotta go fast", | ||
"audience": audience, | ||
"features": features, | ||
"firefox_min_version": firefox_min_version, | ||
} | ||
) | ||
|
||
|
@@ -120,3 +127,6 @@ def test_post_list_creates_rapid_experiment(self): | |
self.assertEqual(experiment.name, "rapid experiment") | ||
self.assertEqual(experiment.slug, "rapid-experiment") | ||
self.assertEqual(experiment.objectives, "gotta go fast") | ||
self.assertEqual(experiment.audience, audience) | ||
self.assertEqual(experiment.features, features) | ||
self.assertEqual(experiment.firefox_min_version, firefox_min_version) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -62,6 +62,7 @@ describe("<App />", () => { | |
owner: "[email protected]", | ||
features: ["FEATURE 1", "FEATURE 2"], | ||
audience: "AUDIENCE 1", | ||
firefox_min_version: "78.0", | ||
}); | ||
}); | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,6 +24,7 @@ describe("<ExperimentDetails />", () => { | |
owner: "[email protected]", | ||
features: ["FEATURE 1", "FEATURE 2"], | ||
audience: "AUDIENCE 1", | ||
firefox_min_version: "78.0", | ||
}, | ||
}), | ||
); | ||
|
@@ -46,6 +47,7 @@ describe("<ExperimentDetails />", () => { | |
owner: "[email protected]", | ||
features: ["FEATURE 1", "FEATURE 2"], | ||
audience: "AUDIENCE 1", | ||
firefox_min_version: "78.0", | ||
bugzilla_url: "https://example.com", | ||
}, | ||
}), | ||
|
@@ -66,6 +68,7 @@ describe("<ExperimentDetails />", () => { | |
owner: "[email protected]", | ||
features: ["FEATURE 1", "FEATURE 2"], | ||
audience: "AUDIENCE 1", | ||
firefox_min_version: "78.0", | ||
}, | ||
}), | ||
); | ||
|
@@ -87,6 +90,7 @@ describe("<ExperimentDetails />", () => { | |
owner: "[email protected]", | ||
features: ["FEATURE 1", "FEATURE 2"], | ||
audience: "AUDIENCE 1", | ||
firefox_min_version: "78.0", | ||
}, | ||
}), | ||
); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.