def test_member_not_found(self, ctx, mock_member_repository: MemberRepository, sample_member: Member, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(None), side_effect=MemberNotFoundError("")) # When... with pytest.raises(MemberNotFoundError): member_manager.create_subscription(ctx, sample_member.id, SubscriptionBody())
def create(self, ctx, body: MemberBody) -> Member: LOG.debug("create_member_records", extra=log_extra(ctx, username=body.username)) # Check that the user exists in the system. fetched_member = self.member_repository.get_by_login( ctx, body.username) if fetched_member: raise MemberAlreadyExist(fetched_member.username) fetched_account_type, _ = self.account_type_repository.search_by( ctx, terms="Adhérent") if not fetched_account_type: raise AccountTypeNotFoundError("Adhérent") created_member = self.member_repository.create( ctx=ctx, object_to_create=AbstractMember( id=0, username=body.username, first_name=body.first_name, last_name=body.last_name, email=body.mail, departure_date=datetime.now(), ip='', subnet='', comment='', membership=MembershipStatus.INITIAL.value)) self.mailinglist_repository.update_from_member(ctx, created_member.id, 249) _ = self.account_repository.create( ctx, AbstractAccount( id=0, actif=True, account_type=fetched_account_type[0].id, member=created_member.id, name= f'{created_member.first_name} {created_member.last_name} ({created_member.username})', pinned=False, compte_courant=False, balance=0, pending_balance=0)) _ = self.create_subscription( ctx=ctx, member_id=created_member.id, body=SubscriptionBody(member=created_member.id), ) return created_member
def test_unknown_membership( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, sample_member: Member, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock( return_value=([], 0), side_effect=MembershipNotFoundError("")) with raises(MembershipNotFoundError): member_manager.update_subscription(ctx, sample_member.id, SubscriptionBody()) mock_membership_repository.update.assert_not_called()
def test_pending_payment_initial( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, sample_member: Member, mock_charter_repository: CharterRepository, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock(return_value=([], 0)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) # When... member_manager.create_subscription(ctx, sample_member.id, SubscriptionBody()) # Expect to create a new membership record... mock_membership_repository.create.assert_called_once()
def test_unknown_price_asign_to_duration( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, sample_member: Member, mock_charter_repository: CharterRepository, sample_subscription_empty: SubscriptionBody, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock(return_value=([], 0)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) sample_subscription_empty.duration = 5 with raises(NoPriceAssignedToThatDuration): member_manager.create_subscription(ctx, sample_member.id, sample_subscription_empty)
def sign(self, ctx, charter_id: int, member_id: int): m = self.member_repository.get_by_id(ctx, member_id) if not m: raise MemberNotFoundError(member_id) subscriptions, _ = self.membership_repository.search( ctx, limit=1, filter_=AbstractMembership( member=member_id, status=MembershipStatus.PENDING_RULES.value)) if not subscriptions: raise MembershipNotFoundError(member_id) self.charter_repository.update(ctx, charter_id, member_id) if subscriptions[0].status == MembershipStatus.PENDING_RULES.value: self.membership_repository.update( ctx, subscriptions[0].uuid, SubscriptionBody(), MembershipStatus.PENDING_PAYMENT_INITIAL)
def test_unknown_price_asign_to_duration( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, mock_charter_repository: CharterRepository, sample_member: Member, sample_subscription_duration_account_payment_method: SubscriptionBody, sample_membership_pending_rules: Membership, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock( return_value=([sample_membership_pending_rules], 1)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) sample_subscription_duration_account_payment_method.duration = 5 with raises(NoPriceAssignedToThatDuration): member_manager.update_subscription( ctx, sample_member.id, sample_subscription_duration_account_payment_method) mock_membership_repository.search.assert_called_once() mock_member_repository.get_by_id.assert_called_once() mock_charter_repository.get.assert_called_once() mock_membership_repository.update.assert_not_called()
def sample_subscription_duration_no_account(sample_member): return SubscriptionBody(member=sample_member, duration=1)
def sample_subscription_empty(sample_member): return SubscriptionBody(member=sample_member, )
def sample_subscription_duration_account_payment_method( sample_member, sample_account1, sample_payment_method): return SubscriptionBody(member=sample_member, duration=1, account=sample_account1.id, payment_method=sample_payment_method.id)