|
@@ -18,20 +18,41 @@ class ReleaseDeploysListTest(APITestCase):
|
|
|
version="1–0",
|
|
|
)
|
|
|
release.add_project(project)
|
|
|
- Deploy.objects.create(
|
|
|
- environment_id=Environment.objects.create(
|
|
|
- organization_id=project.organization_id, name="production"
|
|
|
- ).id,
|
|
|
+ production_env = Environment.objects.create(
|
|
|
+ organization_id=project.organization_id,
|
|
|
+ name="production",
|
|
|
+ )
|
|
|
+
|
|
|
+ prod_deploy = Deploy.objects.create(
|
|
|
+ environment_id=production_env.id,
|
|
|
organization_id=project.organization_id,
|
|
|
release=release,
|
|
|
date_finished=datetime.datetime.utcnow() - datetime.timedelta(days=1),
|
|
|
)
|
|
|
- Deploy.objects.create(
|
|
|
- environment_id=Environment.objects.create(
|
|
|
- organization_id=project.organization_id, name="staging"
|
|
|
- ).id,
|
|
|
+
|
|
|
+ staging_env = Environment.objects.create(
|
|
|
organization_id=project.organization_id,
|
|
|
+ name="staging",
|
|
|
+ )
|
|
|
+
|
|
|
+ staging_deploy = Deploy.objects.create(
|
|
|
+ environment_id=staging_env.id,
|
|
|
+ organization_id=project.organization_id,
|
|
|
+ release=release,
|
|
|
+ )
|
|
|
+
|
|
|
+ ReleaseProjectEnvironment.objects.create(
|
|
|
+ project=project,
|
|
|
+ release=release,
|
|
|
+ environment=production_env,
|
|
|
+ last_deploy_id=prod_deploy.id,
|
|
|
+ )
|
|
|
+
|
|
|
+ ReleaseProjectEnvironment.objects.create(
|
|
|
+ project=project,
|
|
|
release=release,
|
|
|
+ environment=staging_env,
|
|
|
+ last_deploy_id=staging_deploy.id,
|
|
|
)
|
|
|
|
|
|
url = reverse(
|
|
@@ -47,6 +68,68 @@ class ReleaseDeploysListTest(APITestCase):
|
|
|
assert response.data[0]["environment"] == "staging"
|
|
|
assert response.data[1]["environment"] == "production"
|
|
|
|
|
|
+ def test_with_project(self):
|
|
|
+ project = self.create_project(name="bar")
|
|
|
+ project2 = self.create_project(name="baz")
|
|
|
+
|
|
|
+ release = Release.objects.create(
|
|
|
+ organization_id=project.organization_id,
|
|
|
+ # test unicode
|
|
|
+ version="1–1",
|
|
|
+ )
|
|
|
+
|
|
|
+ release.add_project(project)
|
|
|
+ release.add_project(project2)
|
|
|
+
|
|
|
+ production_env = Environment.objects.create(
|
|
|
+ organization_id=project.organization_id,
|
|
|
+ name="production",
|
|
|
+ )
|
|
|
+
|
|
|
+ prod_deploy = Deploy.objects.create(
|
|
|
+ environment_id=production_env.id,
|
|
|
+ organization_id=project.organization_id,
|
|
|
+ release=release,
|
|
|
+ date_finished=datetime.datetime.utcnow() - datetime.timedelta(days=1),
|
|
|
+ )
|
|
|
+
|
|
|
+ ReleaseProjectEnvironment.objects.create(
|
|
|
+ project=project,
|
|
|
+ release=release,
|
|
|
+ environment=production_env,
|
|
|
+ last_deploy_id=prod_deploy.id,
|
|
|
+ )
|
|
|
+
|
|
|
+ url = reverse(
|
|
|
+ "sentry-api-0-organization-release-deploys",
|
|
|
+ kwargs={"organization_slug": project.organization.slug, "version": release.version},
|
|
|
+ )
|
|
|
+
|
|
|
+ self.login_as(user=self.user)
|
|
|
+
|
|
|
+ # Test that the first project returns the deploy as expected
|
|
|
+ response_bar = self.client.get(url + f"?project={project.id}")
|
|
|
+ assert response_bar.status_code == 200, response_bar.content
|
|
|
+ assert len(response_bar.data) == 1
|
|
|
+ assert response_bar.data[0]["environment"] == "production"
|
|
|
+
|
|
|
+ # Test that the second project does not return any deploys
|
|
|
+ response_baz = self.client.get(url + f"?project={project2.id}")
|
|
|
+ assert response_baz.status_code == 200, response_baz.content
|
|
|
+ assert len(response_baz.data) == 0
|
|
|
+
|
|
|
+ # Test that not setting the project id returns the deploy
|
|
|
+ response = self.client.get(url)
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ assert len(response.data) == 1
|
|
|
+ assert response.data[0]["environment"] == "production"
|
|
|
+
|
|
|
+ # Negative ID set as the project_id is same as not setting it
|
|
|
+ response_negative = self.client.get(url, data={"project": "-1"})
|
|
|
+ assert response_negative.status_code == 200, response_negative.content
|
|
|
+ assert len(response_negative.data) == 1
|
|
|
+ assert response_negative.data[0]["environment"] == "production"
|
|
|
+
|
|
|
|
|
|
class ReleaseDeploysCreateTest(APITestCase):
|
|
|
def setUp(self):
|