soft deletes available for applications and environments

- parent relation will not include applications or environments marked
  as deleted
- domain classes will exclude deleted objects from selections
- changed some test factories to use domain_word for resource names,
  because they were using person names and it bugged me
This commit is contained in:
dandds
2019-04-09 06:35:50 -04:00
parent c2a76c2504
commit 1c0c5dd9c5
11 changed files with 111 additions and 12 deletions

View File

@@ -1,6 +1,9 @@
import pytest
from atst.domain.applications import Applications
from tests.factories import UserFactory, PortfolioFactory
from atst.domain.portfolios import Portfolios
from atst.domain.exceptions import NotFoundError
from tests.factories import ApplicationFactory, UserFactory, PortfolioFactory
def test_create_application_with_multiple_environments():
@@ -53,3 +56,9 @@ def test_can_only_update_name_and_description():
assert application.description == "a new application"
assert len(application.environments) == 1
assert application.environments[0].name == env_name
def test_get_excludes_deleted():
app = ApplicationFactory.create(deleted=True)
with pytest.raises(NotFoundError):
Applications.get(app.id)

View File

@@ -1,8 +1,16 @@
import pytest
from atst.domain.environments import Environments
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.portfolio_roles import PortfolioRoles
from atst.domain.exceptions import NotFoundError
from tests.factories import ApplicationFactory, UserFactory, PortfolioFactory
from tests.factories import (
ApplicationFactory,
UserFactory,
PortfolioFactory,
EnvironmentFactory,
)
def test_create_environments():
@@ -186,3 +194,11 @@ def test_get_scoped_environments(db):
application2_envs = Environments.for_user(developer, portfolio.applications[1])
assert [env.name for env in application2_envs] == ["application2 staging"]
def test_get_excludes_deleted():
env = EnvironmentFactory.create(
deleted=True, application=ApplicationFactory.create()
)
with pytest.raises(NotFoundError):
Environments.get(env.id)

View File

@@ -105,7 +105,7 @@ class PortfolioFactory(Base):
class Meta:
model = Portfolio
name = factory.Faker("name")
name = factory.Faker("domain_word")
defense_component = factory.LazyFunction(random_service_branch)
@classmethod
@@ -157,7 +157,7 @@ class ApplicationFactory(Base):
model = Application
portfolio = factory.SubFactory(PortfolioFactory)
name = factory.Faker("name")
name = factory.Faker("domain_word")
description = "A test application"
@classmethod
@@ -192,6 +192,8 @@ class EnvironmentFactory(Base):
class Meta:
model = Environment
name = factory.Faker("domain_word")
@classmethod
def _create(cls, model_class, *args, **kwargs):
with_members = kwargs.pop("members", [])

View File

@@ -1,4 +1,8 @@
from tests.factories import ApplicationFactory, ApplicationRoleFactory
from tests.factories import (
ApplicationFactory,
ApplicationRoleFactory,
EnvironmentFactory,
)
def test_application_num_users():
@@ -9,3 +13,11 @@ def test_application_num_users():
ApplicationRoleFactory.create(application=application)
assert application.num_users == 1
def test_application_environments_excludes_deleted():
app = ApplicationFactory.create()
env = EnvironmentFactory.create(application=app)
EnvironmentFactory.create(application=app, deleted=True)
assert len(app.environments) == 1
assert app.environments[0].id == env.id

View File

@@ -0,0 +1,9 @@
from tests.factories import ApplicationFactory, PortfolioFactory
def test_portfolio_applications_excludes_deleted():
portfolio = PortfolioFactory.create()
app = ApplicationFactory.create(portfolio=portfolio)
ApplicationFactory.create(portfolio=portfolio, deleted=True)
assert len(portfolio.applications) == 1
assert portfolio.applications[0].id == app.id