1
# Copyright 2010 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Test team membership changes."""
6
from __future__ import with_statement
10
from canonical.testing import DatabaseFunctionalLayer
11
from lp.registry.interfaces.teammembership import CyclicalTeamMembershipError
12
from lp.testing import (
18
class CircularMemberAdditionTestCase(TestCaseWithFactory):
19
layer = DatabaseFunctionalLayer
22
super(CircularMemberAdditionTestCase, self).setUp()
23
self.a_team = self.factory.makeTeam(name="a")
24
self.b_team = self.factory.makeTeam(name="b")
26
def test_circular_invite(self):
27
"""Two teams can invite each other without horrifying results."""
28
# Make the criss-cross invitations.
29
with person_logged_in(self.a_team.teamowner):
30
self.a_team.addMember(self.b_team, self.a_team.teamowner)
31
with person_logged_in(self.b_team.teamowner):
32
self.b_team.addMember(self.a_team, self.b_team.teamowner)
34
# A-team accepts B's kind invitation.
35
with person_logged_in(self.a_team.teamowner):
36
self.a_team.acceptInvitationToBeMemberOf(
38
# B-team accepts A's kind invitation.
39
with person_logged_in(self.b_team.teamowner):
41
CyclicalTeamMembershipError,
42
self.b_team.acceptInvitationToBeMemberOf,