|
18 | 18 | NimbusExperimentBranchThroughExcluded, |
19 | 19 | NimbusExperimentBranchThroughRequired, |
20 | 20 | NimbusFeatureConfig, |
| 21 | + Tag, |
21 | 22 | ) |
22 | 23 | from experimenter.experiments.tests.factories import ( |
23 | 24 | NimbusBranchFactory, |
24 | 25 | NimbusDocumentationLinkFactory, |
25 | 26 | NimbusExperimentFactory, |
26 | 27 | NimbusFeatureConfigFactory, |
| 28 | + TagFactory, |
27 | 29 | ) |
28 | 30 | from experimenter.kinto.tasks import ( |
29 | 31 | nimbus_check_kinto_push_queue_by_collection, |
30 | 32 | nimbus_synchronize_preview_experiments_in_kinto, |
31 | 33 | ) |
32 | 34 | from experimenter.klaatu.tasks import klaatu_start_job |
| 35 | +from experimenter.nimbus_ui.constants import NimbusUIConstants |
33 | 36 | from experimenter.nimbus_ui.filtersets import ( |
34 | 37 | FeaturesPageSortChoices, |
35 | 38 | MyDeliveriesChoices, |
@@ -3917,3 +3920,77 @@ def test_features_view_deliveries_table_can_sort_by_total_clients(self): |
3917 | 3920 | [e.slug for e in response.context["experiments_delivered"]], |
3918 | 3921 | [experiment2.slug, experiment1.slug], |
3919 | 3922 | ) |
| 3923 | + |
| 3924 | + |
| 3925 | +class TestTagsManageView(AuthTestCase): |
| 3926 | + def test_tags_manage_view_renders(self): |
| 3927 | + TagFactory.create(name="Tag 1") |
| 3928 | + TagFactory.create(name="Tag 2") |
| 3929 | + response = self.client.get(reverse("nimbus-ui-tags-manage")) |
| 3930 | + self.assertEqual(response.status_code, 200) |
| 3931 | + self.assertContains(response, "Tag 1") |
| 3932 | + self.assertContains(response, "Tag 2") |
| 3933 | + |
| 3934 | + |
| 3935 | +class TestTagCreateView(AuthTestCase): |
| 3936 | + def test_create_tag(self): |
| 3937 | + response = self.client.post(reverse("nimbus-ui-tags-create")) |
| 3938 | + self.assertEqual(response.status_code, 200) |
| 3939 | + self.assertEqual(Tag.objects.count(), 1) |
| 3940 | + self.assertEqual(Tag.objects.first().name, "Tag 1") |
| 3941 | + |
| 3942 | + |
| 3943 | +class TestTagSaveView(AuthTestCase): |
| 3944 | + def test_save_valid_tags(self): |
| 3945 | + tag = TagFactory.create(name="Tag 1", color="#ff0000") |
| 3946 | + response = self.client.post( |
| 3947 | + reverse("nimbus-ui-tags-save"), |
| 3948 | + { |
| 3949 | + "form-TOTAL_FORMS": "1", |
| 3950 | + "form-INITIAL_FORMS": "1", |
| 3951 | + "form-MIN_NUM_FORMS": "0", |
| 3952 | + "form-MAX_NUM_FORMS": "1000", |
| 3953 | + "form-0-id": tag.id, |
| 3954 | + "form-0-name": "Updated Tag", |
| 3955 | + "form-0-color": "#00ff00", |
| 3956 | + }, |
| 3957 | + ) |
| 3958 | + self.assertEqual(response.status_code, 200) |
| 3959 | + tag.refresh_from_db() |
| 3960 | + self.assertEqual(tag.color, "#00ff00") |
| 3961 | + |
| 3962 | + def test_save_invalid_tags(self): |
| 3963 | + tag = TagFactory.create(name="Tag 1", color="#ff0000") |
| 3964 | + response = self.client.post( |
| 3965 | + reverse("nimbus-ui-tags-save"), |
| 3966 | + { |
| 3967 | + "form-TOTAL_FORMS": "1", |
| 3968 | + "form-INITIAL_FORMS": "1", |
| 3969 | + "form-MIN_NUM_FORMS": "0", |
| 3970 | + "form-MAX_NUM_FORMS": "1000", |
| 3971 | + "form-0-id": tag.id, |
| 3972 | + "form-0-name": "", |
| 3973 | + "form-0-color": "#00ff00", |
| 3974 | + }, |
| 3975 | + ) |
| 3976 | + self.assertEqual(response.status_code, 200) |
| 3977 | + self.assertContains(response, "This field is required.") |
| 3978 | + |
| 3979 | + def test_save_duplicate_tags(self): |
| 3980 | + TagFactory.create(name="Existing Tag") |
| 3981 | + tag = TagFactory.create(name="Tag 1", color="#ff0000") |
| 3982 | + |
| 3983 | + response = self.client.post( |
| 3984 | + reverse("nimbus-ui-tags-save"), |
| 3985 | + { |
| 3986 | + "form-TOTAL_FORMS": "1", |
| 3987 | + "form-INITIAL_FORMS": "1", |
| 3988 | + "form-MIN_NUM_FORMS": "0", |
| 3989 | + "form-MAX_NUM_FORMS": "1000", |
| 3990 | + "form-0-id": tag.id, |
| 3991 | + "form-0-name": "Existing Tag", |
| 3992 | + "form-0-color": "#00ff00", |
| 3993 | + }, |
| 3994 | + ) |
| 3995 | + self.assertEqual(response.status_code, 200) |
| 3996 | + self.assertContains(response, NimbusUIConstants.ERROR_TAG_DUPLICATE_NAME) |
0 commit comments