Make portfolio invitation specific to portfolio

- add a base domain class
- extract shared model code to mixin
- rename invitation classes
- invitation model relationship to portfolio_role name is now more
  generic "role"
This commit is contained in:
dandds
2019-04-22 14:54:37 -04:00
parent ac36e34c13
commit c4ad7b4378
20 changed files with 228 additions and 203 deletions

View File

@@ -0,0 +1,45 @@
import datetime
from atst.models import InvitationStatus, PortfolioRoleStatus
from tests.factories import (
PortfolioInvitationFactory,
PortfolioFactory,
UserFactory,
PortfolioRoleFactory,
)
def test_expired_invite_is_not_revokable():
portfolio = PortfolioFactory.create()
user = UserFactory.create()
portfolio_role = PortfolioRoleFactory.create(
portfolio=portfolio, user=user, status=PortfolioRoleStatus.PENDING
)
invite = PortfolioInvitationFactory.create(
expiration_time=datetime.datetime.now() - datetime.timedelta(minutes=60),
role=portfolio_role,
)
assert not invite.is_revokable
def test_unexpired_invite_is_revokable():
portfolio = PortfolioFactory.create()
user = UserFactory.create()
portfolio_role = PortfolioRoleFactory.create(
portfolio=portfolio, user=user, status=PortfolioRoleStatus.PENDING
)
invite = PortfolioInvitationFactory.create(role=portfolio_role)
assert invite.is_revokable
def test_invite_is_not_revokable_if_invite_is_not_pending():
portfolio = PortfolioFactory.create()
user = UserFactory.create()
portfolio_role = PortfolioRoleFactory.create(
portfolio=portfolio, user=user, status=PortfolioRoleStatus.PENDING
)
invite = PortfolioInvitationFactory.create(
role=portfolio_role, status=InvitationStatus.ACCEPTED
)
assert not invite.is_revokable