public AccountBuilder WithSentTransferConnectionInvitation(
            TransferConnectionInvitation transferConnectionInvitation)
        {
            _account.SentTransferConnectionInvitations.Add(transferConnectionInvitation);

            return(this);
        }
        public void Arrange()
        {
            _employerAccountRepository = new Mock <IEmployerAccountRepository>();
            _transferConnectionInvitationRepository = new Mock <ITransferConnectionInvitationRepository>();
            _userRepository = new Mock <IUserAccountRepository>();

            _receiverUser = new User
            {
                Id        = 123456,
                Ref       = Guid.NewGuid(),
                FirstName = "John",
                LastName  = "Doe"
            };

            _senderAccount = new Account
            {
                Id       = 333333,
                HashedId = "ABC123",
                Name     = "Sender"
            };

            _receiverAccount = new Account
            {
                Id       = 222222,
                HashedId = "XYZ987",
                Name     = "Receiver"
            };

            _unitOfWorkContext = new UnitOfWorkContext();

            _transferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                            .WithId(111111)
                                            .WithSenderAccount(_senderAccount)
                                            .WithReceiverAccount(_receiverAccount)
                                            .WithStatus(TransferConnectionInvitationStatus.Pending)
                                            .Build();

            _userRepository.Setup(r => r.GetUserByRef(_receiverUser.Ref)).ReturnsAsync(_receiverUser);
            _employerAccountRepository.Setup(r => r.GetAccountById(_senderAccount.Id)).ReturnsAsync(_senderAccount);
            _employerAccountRepository.Setup(r => r.GetAccountById(_receiverAccount.Id)).ReturnsAsync(_receiverAccount);
            _transferConnectionInvitationRepository.Setup(r => r.GetTransferConnectionInvitationById(_transferConnectionInvitation.Id)).ReturnsAsync(_transferConnectionInvitation);

            _handler = new ApproveTransferConnectionInvitationCommandHandler(
                _employerAccountRepository.Object,
                _transferConnectionInvitationRepository.Object,
                _userRepository.Object
                );

            _command = new ApproveTransferConnectionInvitationCommand
            {
                AccountId = _receiverAccount.Id,
                UserRef   = _receiverUser.Ref,
                TransferConnectionInvitationId = _transferConnectionInvitation.Id
            };
        }
        public void Arrange()
        {
            _db = new Mock <EmployerAccountsDbContext>();

            _senderAccount = new Account
            {
                Id       = 333333,
                HashedId = "ABC123",
                Name     = "Sender"
            };

            _receiverAccount = new Account
            {
                Id       = 222222,
                HashedId = "XYZ987",
                Name     = "Receiver"
            };

            _receivedTransferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                                    .WithId(111111)
                                                    .WithSenderAccount(_senderAccount)
                                                    .WithReceiverAccount(_receiverAccount)
                                                    .WithStatus(TransferConnectionInvitationStatus.Pending)
                                                    .Build();

            _rejectedTransferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                                    .WithId(111111)
                                                    .WithSenderAccount(_senderAccount)
                                                    .WithReceiverAccount(_receiverAccount)
                                                    .WithStatus(TransferConnectionInvitationStatus.Rejected)
                                                    .Build();

            _transferConnectionInvitations = new List <TransferConnectionInvitation> {
                _receivedTransferConnectionInvitation, _rejectedTransferConnectionInvitation
            };
            _transferConnectionInvitationsDbSet = new FakeDbSet <TransferConnectionInvitation>(_transferConnectionInvitations);

            _configurationProvider = new MapperConfiguration(c =>
            {
                c.AddProfile <AccountMappings>();
                c.AddProfile <TransferConnectionInvitationMappings>();
                c.AddProfile <UserMappings>();
            });

            _db.Setup(d => d.TransferConnectionInvitations).Returns(_transferConnectionInvitationsDbSet);

            _handler = new GetReceivedTransferConnectionInvitationQueryHandler(new Lazy <EmployerAccountsDbContext>(() => _db.Object), _configurationProvider);

            _query = new GetReceivedTransferConnectionInvitationQuery
            {
                AccountId = _receiverAccount.Id,
                TransferConnectionInvitationId = _receivedTransferConnectionInvitation.Id
            };
        }
Exemplo n.º 4
0
        public void Arrange()
        {
            _db = new Mock <EmployerAccountsDbContext>();

            _account = new Account
            {
                Id       = 333333,
                HashedId = "ABC123",
                Name     = "Account"
            };

            _sentTransferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                                .WithId(222222)
                                                .WithSenderAccount(_account)
                                                .WithReceiverAccount(new Account())
                                                .WithCreatedDate(DateTime.UtcNow)
                                                .Build();

            _receivedTransferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                                    .WithId(111111)
                                                    .WithSenderAccount(new Account())
                                                    .WithReceiverAccount(_account)
                                                    .WithCreatedDate(DateTime.UtcNow.AddDays(-1))
                                                    .Build();

            _transferConnectionInvitations = new List <TransferConnectionInvitation>
            {
                _sentTransferConnectionInvitation,
                _receivedTransferConnectionInvitation,
                new TransferConnectionInvitationBuilder()
                .WithSenderAccount(new Account())
                .WithReceiverAccount(new Account())
                .WithCreatedDate(DateTime.UtcNow.AddDays(-2))
                .Build()
            };

            _transferConnectionInvitationsDbSet = new FakeDbSet <TransferConnectionInvitation>(_transferConnectionInvitations);

            _configurationProvider = new MapperConfiguration(c =>
            {
                c.AddProfile <AccountMappings>();
                c.AddProfile <TransferConnectionInvitationMappings>();
                c.AddProfile <UserMappings>();
            });

            _db.Setup(d => d.TransferConnectionInvitations).Returns(_transferConnectionInvitationsDbSet);

            _handler = new GetTransferConnectionInvitationsQueryHandler(new Lazy <EmployerAccountsDbContext>(() => _db.Object), _configurationProvider);

            _query = new GetTransferConnectionInvitationsQuery
            {
                AccountId = _account.Id
            };
        }
        public void ThenShouldThrowExceptionIfTransferConnectionInvitationIsNotPending()
        {
            _transferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                            .WithId(111111)
                                            .WithSenderAccount(_senderAccount)
                                            .WithReceiverAccount(_receiverAccount)
                                            .WithStatus(TransferConnectionInvitationStatus.Approved)
                                            .Build();

            _transferConnectionInvitationRepository.Setup(r => r.GetTransferConnectionInvitationById(_transferConnectionInvitation.Id)).ReturnsAsync(_transferConnectionInvitation);

            Assert.ThrowsAsync <Exception>(() => _handler.Handle(_command), "Requires transfer connection invitation is pending.");
        }
Exemplo n.º 6
0
        public TransferConnectionInvitation SendTransferConnectionInvitation(Account receiverAccount, User senderUser, decimal senderAccountTransferAllowance)
        {
            RequiresTransferConnectionInvitationSenderIsNotTheReceiver(receiverAccount);
            RequiresMinTransferAllowanceIsAvailable(senderAccountTransferAllowance);
            RequiresTransferConnectionInvitationSenderIsNotAReceiver();
            RequiresTransferConnectionInvitationReceiverIsNotASender(receiverAccount);
            RequiresTransferConnectionInvitationDoesNotExist(receiverAccount);

            var transferConnectionInvitation = new TransferConnectionInvitation(this, receiverAccount, senderUser);

            SentTransferConnectionInvitations.Add(transferConnectionInvitation);

            return(transferConnectionInvitation);
        }
Exemplo n.º 7
0
        public Task Add(TransferConnectionInvitation transferConnectionInvitation)
        {
            _db.Value.TransferConnectionInvitations.Add(transferConnectionInvitation);

            return(_db.Value.SaveChangesAsync());
        }
Exemplo n.º 8
0
        public void Arrange()
        {
            _db = new Mock <EmployerAccountsDbContext>();

            _senderAccount1 = new Account
            {
                Id             = 111111,
                HashedId       = "ABC123",
                PublicHashedId = "321CBA",
                Name           = "Sender 1"
            };

            _senderAccount2 = new Account
            {
                Id             = 222222,
                HashedId       = "DEF456",
                PublicHashedId = "654FED",
                Name           = "Sender 2"
            };

            _receiverAccount = new Account
            {
                Id             = 333333,
                HashedId       = "GHI789",
                PublicHashedId = "987IHG",
                Name           = "Receiver"
            };

            _sentTransferConnectionInvitation = new TransferConnectionInvitationBuilder()
                                                .WithId(111111)
                                                .WithSenderAccount(_receiverAccount)
                                                .WithReceiverAccount(new Account())
                                                .WithStatus(TransferConnectionInvitationStatus.Approved)
                                                .Build();

            _receivedTransferConnectionInvitation1 = new TransferConnectionInvitationBuilder()
                                                     .WithId(222222)
                                                     .WithSenderAccount(_senderAccount1)
                                                     .WithReceiverAccount(_receiverAccount)
                                                     .WithStatus(TransferConnectionInvitationStatus.Rejected)
                                                     .Build();

            _receivedTransferConnectionInvitation2 = new TransferConnectionInvitationBuilder()
                                                     .WithId(333333)
                                                     .WithSenderAccount(_senderAccount1)
                                                     .WithReceiverAccount(_receiverAccount)
                                                     .WithStatus(TransferConnectionInvitationStatus.Approved)
                                                     .Build();

            _receivedTransferConnectionInvitation3 = new TransferConnectionInvitationBuilder()
                                                     .WithId(444444)
                                                     .WithSenderAccount(_senderAccount2)
                                                     .WithReceiverAccount(_receiverAccount)
                                                     .WithStatus(TransferConnectionInvitationStatus.Approved)
                                                     .Build();

            _transferConnectionInvitations = new List <TransferConnectionInvitation>
            {
                _sentTransferConnectionInvitation,
                _receivedTransferConnectionInvitation3,
                _receivedTransferConnectionInvitation2,
                _receivedTransferConnectionInvitation1,
                new TransferConnectionInvitationBuilder()
                .WithSenderAccount(new Account())
                .WithReceiverAccount(new Account())
                .WithStatus(TransferConnectionInvitationStatus.Approved)
                .Build()
            };

            _transferConnectionInvitationsDbSet = new DbSetStub <TransferConnectionInvitation>(_transferConnectionInvitations);

            _configurationProvider = new MapperConfiguration(c =>
            {
                c.AddProfile <TransferConnectionInvitationMappings>();
            });

            _db.Setup(d => d.TransferConnectionInvitations).Returns(_transferConnectionInvitationsDbSet);

            _handler = new GetTransferConnectionsQueryHandler(new Lazy <EmployerAccountsDbContext>(() => _db.Object), _configurationProvider);

            _query = new GetTransferConnectionsQuery
            {
                HashedAccountId = _receiverAccount.HashedId
            };
        }