def test_unknown_payment_method( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, mock_charter_repository: CharterRepository, mock_account_repository: AccountRepository, mock_payment_method_repository: PaymentMethodRepository, sample_member: Member, sample_subscription_duration_account_payment_method: SubscriptionBody, sample_membership_pending_rules: Membership, sample_account1: Account, 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_account_repository.get_by_id = MagicMock( return_value=(sample_account1)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) mock_payment_method_repository.get_by_id = MagicMock( return_value=(None), side_effect=PaymentMethodNotFoundError("")) with raises(PaymentMethodNotFoundError): 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_account_repository.get_by_id.assert_called_once() mock_charter_repository.get.assert_called_once() mock_payment_method_repository.get_by_id.assert_called_once() mock_membership_repository.update.assert_not_called()
def test_free_not_super_admin( self, ctx_only_admin, member_manager: MemberManager, sample_membership_pending_payment_validation: Membership): with pytest.raises(UnauthorizedError): member_manager.add_membership_payment_record( ctx_only_admin, sample_membership_pending_payment_validation, True)
def test_no_room(self, ctx, mock_payment_method_repository: PaymentMethodRepository, mock_account_repository: AccountRepository, mock_transaction_repository: TransactionRepository, member_manager: MemberManager, sample_membership_pending_payment_validation: Membership, sample_account1: Account, sample_payment_method: PaymentMethod): mock_payment_method_repository.get_by_id = MagicMock( return_value=(sample_payment_method) ) # in this test don't care of the return value, the most important thing is that the function does not raise NotFound exception mock_account_repository.search_by = MagicMock( side_effect=[([sample_account1], 0), ([sample_account1], 0)]) mock_account_repository.get_by_id = MagicMock( return_value=(sample_account1)) mock_transaction_repository.create = MagicMock(return_value=(None)) sample_membership_pending_payment_validation.has_room = False member_manager.add_membership_payment_record( ctx, sample_membership_pending_payment_validation, False) mock_payment_method_repository.get_by_id.assert_called_once() mock_account_repository.search_by.assert_called() mock_account_repository.get_by_id.assert_called_once() mock_transaction_repository.create.assert_called_once()
def test_from_pending_payment_to_pending_payment_validation( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, mock_account_repository: AccountRepository, mock_payment_method_repository: PaymentMethodRepository, sample_member: Member, sample_membership_pending_payment: Membership, sample_subscription_duration_account_payment_method: SubscriptionBody, sample_account1: Account, sample_payment_method: PaymentMethod, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock( return_value=([sample_membership_pending_payment], 1)) mock_account_repository.get_by_id = MagicMock( return_value=(sample_account1)) mock_payment_method_repository.get_by_id = MagicMock( return_value=(sample_payment_method)) # When... member_manager.update_subscription( ctx, sample_member.id, sample_subscription_duration_account_payment_method) # Expect to create a new membership record... mock_membership_repository.update.assert_called_once() mock_membership_repository.search.assert_called_once() mock_member_repository.get_by_id.assert_called_once() mock_account_repository.get_by_id.assert_called_once()
def test_payment_validation( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, mock_account_repository: AccountRepository, mock_payment_method_repository: PaymentMethodRepository, sample_member: Member, mock_charter_repository: CharterRepository, sample_subscription_duration_account_payment_method: SubscriptionBody, sample_account1: Account, sample_payment_method: PaymentMethod, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock(return_value=([], 0)) mock_account_repository.get_by_id = MagicMock( return_value=(sample_account1)) mock_payment_method_repository.get_by_id = MagicMock( return_value=(sample_payment_method)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) # When... member_manager.create_subscription( ctx, sample_member.id, sample_subscription_duration_account_payment_method) # Expect to create a new membership record... mock_membership_repository.create.assert_called_once()
def test_not_found(self, ctx, mock_member_repository: MemberRepository, sample_member, member_manager: MemberManager): # Given... mock_member_repository.get_by_id = MagicMock(return_value=(None)) # When... with raises(MemberNotFoundError): member_manager.get_logs(ctx, sample_member.username)
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 test_not_found(self, ctx, mock_member_repository: MagicMock, sample_member, member_manager: MemberManager): mock_member_repository.search_by = MagicMock(return_value=([], 0)) mock_member_repository.update = MagicMock( side_effect=MemberNotFoundError) # When... with raises(MemberNotFoundError): member_manager.partially_update( ctx, AbstractMember(id=sample_member.id), id=sample_member.id)
def test_unknown_member(self, ctx, mock_member_repository: MemberRepository, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( side_effect=MemberNotFoundError("")) with raises(MemberNotFoundError): member_manager.validate_subscription(ctx, 0, False) mock_member_repository.get_by_id.assert_called_once()
def test_happy_path(self, ctx, mock_member_repository: MagicMock, sample_member, member_manager: MemberManager): # When... mock_member_repository.search_by = MagicMock( return_value=([sample_member], 1)) member_manager.delete(ctx, id=sample_member.id) # Expect... mock_member_repository.delete.assert_called_once_with( ctx, sample_member.id)
def test_not_found(self, ctx, mock_member_repository: MagicMock, sample_member, member_manager: MemberManager): # Given... mock_member_repository.search_by = MagicMock(return_value=([], 0)) mock_member_repository.delete = MagicMock( side_effect=MemberNotFoundError) # When... with raises(MemberNotFoundError): member_manager.delete(ctx, id=sample_member.id)
def test_unknown_member(self, ctx, mock_member_repository: MemberRepository, sample_subscription_empty: SubscriptionBody, sample_member: Member, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member), side_effect=MemberNotFoundError("")) with raises(MemberNotFoundError): member_manager.create_subscription(ctx, sample_member.id, sample_subscription_empty)
def test_create_happy_path(self, ctx, mock_member_repository: MagicMock, sample_mutation_request: AbstractMember, member_manager: MemberManager): # Given that there is not user in the DB (user will be created). mock_member_repository.search_by = MagicMock(return_value=([], 0)) # When... member_manager.update_or_create(ctx, sample_mutation_request) # Expect... mock_member_repository.create.assert_called_once_with( ctx, sample_mutation_request)
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)) with raises(MembershipNotFoundError): member_manager.validate_subscription(ctx, sample_member.id, False) mock_member_repository.get_by_id.assert_called_once() mock_membership_repository.search.assert_called_once()
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_not_found(self, ctx, sample_member, mock_member_repository: MemberRepository, member_manager: MemberManager): # Given... mock_member_repository.get_by_id = MagicMock( return_value=(None), side_effect=MemberNotFoundError("")) # When... with raises(MemberNotFoundError): member_manager.get_by_id(ctx, id=sample_member.id) # Expect... mock_member_repository.get_by_id.assert_called_once_with( ctx, sample_member.id)
def test_member_not_found(self, ctx, mock_member_repository: MemberRepository, member_manager: MemberManager): # Given... mock_member_repository.get_by_id = MagicMock( return_value=(None), side_effect=MemberNotFoundError("")) # When... with pytest.raises(MemberNotFoundError): member_manager.get_profile(ctx) # Expect... mock_member_repository.get_by_id.assert_called_once_with( ctx, ctx.get(CTX_ADMIN))
def test_happy_path(self, ctx, mock_member_repository: MagicMock, sample_member, member_manager: MemberManager): updated_comment = 'Updated comment.' req = AbstractMember(comment=updated_comment) # When... mock_member_repository.search_by = MagicMock( return_value=([sample_member], 1)) member_manager.partially_update(ctx, req, id=sample_member.id) # Expect... mock_member_repository.update.assert_called_once_with(ctx, req, override=False)
def test_not_payment_validation( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, sample_member: Member, sample_membership_pending_payment: 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_payment], 1)) with raises(MembershipStatusNotAllowed): member_manager.validate_subscription(ctx, sample_member.id, False) mock_membership_repository.search.assert_called_once() mock_member_repository.get_by_id.assert_called_once()
def member_manager( mock_member_repository, mock_account_repository, mock_account_type_repository, mock_payment_method_repository, mock_transaction_repository, mock_membership_repository, mock_logs_repository, mock_device_repository, mock_charter_repository, mock_mailinglist_repository, device_manager, ): return MemberManager( member_repository=mock_member_repository, account_repository=mock_account_repository, account_type_repository=mock_account_type_repository, payment_method_repository=mock_payment_method_repository, transaction_repository=mock_transaction_repository, membership_repository=mock_membership_repository, logs_repository=mock_logs_repository, device_repository=mock_device_repository, device_manager=device_manager, charter_repository=mock_charter_repository, mailinglist_repository=mock_mailinglist_repository)
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 test_no_asso_account( self, ctx, mock_payment_method_repository: PaymentMethodRepository, mock_account_repository: AccountRepository, member_manager: MemberManager, sample_membership_empty: Membership): mock_payment_method_repository.get_by_id = MagicMock( return_value=() ) # in this test don't care of the return value, the most important thing is that the function does not raise NotFound exception mock_account_repository.search_by = MagicMock(side_effect=[([], 0)]) with raises(AccountNotFoundError): member_manager.add_membership_payment_record( ctx, sample_membership_empty, False) mock_payment_method_repository.get_by_id.assert_called_once() mock_account_repository.search_by.assert_called_once()
def test_no_account_type_adherent( self, ctx, mock_member_repository: MemberRepository, mock_account_type_repository: AccountTypeRepository, member_manager: MemberManager): # Given... mock_member_repository.get_by_login = MagicMock(return_value=(None)) mock_account_type_repository.search_by = MagicMock(return_value=([], 0)) # When... with pytest.raises(AccountTypeNotFoundError): member_manager.create(ctx, body=MemberBody(username="******", )) # Expect... mock_account_type_repository.search_by.assert_called_once_with( ctx, terms="Adhérent")
def test_member_already_exist(self, ctx, mock_member_repository: MemberRepository, sample_member: AbstractMember, member_manager: MemberManager): # Given... mock_member_repository.get_by_login = MagicMock( return_value=(sample_member)) # When... with pytest.raises(MemberAlreadyExist): member_manager.create( ctx, body=MemberBody(username=sample_member.username)) # Expect... mock_member_repository.get_by_login.assert_called_once_with( ctx, sample_member.username)
def test_happy_path(self, ctx, mock_member_repository: MemberRepository, sample_member: Member, member_manager: MemberManager): # Given... mock_member_repository.search_by = MagicMock( return_value=([sample_member], 1)) # When... test_terms = 'blah blah blah' test_offset = 42 test_limit = 99 result, _ = member_manager.search(ctx, limit=test_limit, offset=test_offset, terms=test_terms) # Expect... assert [sample_member.id] == result # Make sure that all the parameters are passed to the DB. mock_member_repository.search_by.assert_called_once_with( ctx, limit=test_limit, offset=test_offset, terms=test_terms, filter_=None)
def test_pending_rules(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="") # When... member_manager.create_subscription(ctx, sample_member.id, sample_subscription_empty) # Expect to create a new membership record... mock_membership_repository.create.assert_called_once()
def test_unknown_account( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, mock_account_repository: AccountRepository, sample_member: Member, mock_charter_repository: CharterRepository, sample_subscription_duration_account_payment_method: SubscriptionBody, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock(return_value=([], 0)) mock_account_repository.get_by_id = MagicMock( return_value=(None), side_effect=AccountNotFoundError("")) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) with raises(AccountNotFoundError): member_manager.create_subscription( ctx, sample_member.id, sample_subscription_duration_account_payment_method)
def test_from_pending_payment_initial_to_pending_payment( self, ctx, mock_membership_repository: MembershipRepository, mock_member_repository: MemberRepository, sample_member: Member, mock_charter_repository: CharterRepository, sample_membership_pending_payment_initial: Membership, sample_subscription_duration_no_account: SubscriptionBody, member_manager: MemberManager): mock_member_repository.get_by_id = MagicMock( return_value=(sample_member)) mock_membership_repository.search = MagicMock( return_value=([sample_membership_pending_payment_initial], 1)) mock_charter_repository.get = MagicMock( return_value=str(datetime.datetime.today())) # When... member_manager.update_subscription( ctx, sample_member.id, sample_subscription_duration_no_account) # Expect to create a new membership record... mock_membership_repository.update.assert_called_once() mock_membership_repository.search.assert_called_once() mock_member_repository.get_by_id.assert_called_once() mock_charter_repository.get.assert_not_called()
def test_update_happy_path(self, ctx, mock_member_repository: MagicMock, sample_mutation_request: AbstractMember, sample_member: Member, member_manager: MemberManager): # Given that there is a user in the DB (user will be updated). mock_member_repository.search_by = MagicMock( return_value=([sample_member], 1)) # Given a request that updates some fields. req = sample_mutation_request req.comment = "Updated comment." req.first_name = "George" req.last_name = "Dupuis" # When... member_manager.update_or_create(ctx, req, id=sample_member.id) # Expect... mock_member_repository.update.assert_called_once_with(ctx, req, override=True) mock_member_repository.create.assert_not_called( ) # Do not create any member!