コード例 #1
0
        public void BankAccountWithdrawMoneyAnotateActivity()
        {
            //Arrange
            Country country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var    bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason    = "reason";

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.DepositMoney(1000, activityReason);
            bankAccount.WithdrawMoney(1000, activityReason);

            //Assert
            Assert.True(bankAccount.Balance == 0);
            Assert.NotNull(bankAccount.BankAccountActivity);
            Assert.True(bankAccount.BankAccountActivity.Any());
            Assert.True(bankAccount.BankAccountActivity.Last().Amount == -1000);
            Assert.True(bankAccount.BankAccountActivity.Last().ActivityDescription == activityReason);
        }
コード例 #2
0
      public void BankAccountFactoryCreateValidBankAccount()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

         BankAccount bankAccount = null;

         //Act
         bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         var validationContext = new ValidationContext(bankAccount, null, null);
         var validationResults = customer.Validate(validationContext);

         //Assert
         Assert.IsNotNull(bankAccount);
         Assert.IsTrue(bankAccount.BankAccountNumber == bankAccountNumber);
         Assert.IsFalse(bankAccount.Locked);
         Assert.IsTrue(bankAccount.CustomerId == customer.Id);

         Assert.IsFalse(validationResults.Any());
      }
コード例 #3
0
        public void BankAccountFactoryCreateValidBankAccount()
        {
            //Arrange
            var country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));


            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            BankAccount bankAccount = null;

            //Act
            bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            var validationContext = new ValidationContext(bankAccount, null, null);
            var validationResults = customer.Validate(validationContext);

            //Assert
            Assert.NotNull(bankAccount);
            Assert.True(bankAccount.BankAccountNumber == bankAccountNumber);
            Assert.False(bankAccount.Locked);
            Assert.True(bankAccount.CustomerId == customer.Id);

            Assert.False(validationResults.Any());
        }
コード例 #4
0
        public void BankAccountDepositMaxDecimalThrowOverflowBalance()
        {
            //Arrange
            var country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var activityReason    = "reason";

            var customer = CustomerFactory.CreateCustomer(
                "Unai",
                "Zorrilla Castro",
                "+3422",
                "company",
                country,
                new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            customer.GenerateNewIdentity();

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccount.DepositMoney(1, activityReason);
            bankAccount.DepositMoney(Decimal.MaxValue, activityReason);
        }
コード例 #5
0
        public void GenerateAccountNumber_Should_ReturnIban()
        {
            var expectedBankAccountNumber = new BankAccountNumber
            {
                CountryCode        = "PL",
                CheckDigits        = "61",
                NationalBankCode   = "1080",
                BranchCode         = "000",
                NationalCheckDigit = 1,
                AccountNumber      = 0,
                AccountNumberText  = "0000000000000000",
                Iban          = "PL61108000010000000000000000",
                IbanSeparated = "PL 61 1080 0001 0000 0000 0000 0000"
            };

            var result = _sut.GenerateBankAccountNumber(1);

            Assert.AreEqual(expectedBankAccountNumber.CountryCode, result.CountryCode);
            Assert.AreEqual(expectedBankAccountNumber.CheckDigits, result.CheckDigits);
            Assert.AreEqual(expectedBankAccountNumber.NationalBankCode, result.NationalBankCode);
            Assert.AreEqual(expectedBankAccountNumber.BranchCode, result.BranchCode);
            Assert.AreEqual(expectedBankAccountNumber.NationalCheckDigit, result.NationalCheckDigit);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumber, result.AccountNumber);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumberText, result.AccountNumberText);
            Assert.AreEqual(expectedBankAccountNumber.Iban, result.Iban);
            Assert.AreEqual(expectedBankAccountNumber.IbanSeparated, result.IbanSeparated);
        }
コード例 #6
0
        public void BankAccountRepositoryAddNewItemSaveItem()
        {
            //Arrange
            var unitOfWork = new MainBCUnitOfWork();
            var customerRepository = new CustomerRepository(unitOfWork);
            var bankAccountRepository = new BankAccountRepository(unitOfWork);
           
            var customer = customerRepository.Get(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45"));
            
            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            var newBankAccount = BankAccountFactory.CreateBankAccount(customer,bankAccountNumber);
            

            //Act
            bankAccountRepository.Add(newBankAccount);

            try
            {
                unitOfWork.Commit();
            }
            catch (DbUpdateException ex)
            {
                var entry = ex.Entries.First();
            }
        }
コード例 #7
0
        public void BankAccountRepositoryAddNewItemSaveItem()
        {
            //Arrange
            var unitOfWork            = new MainBCUnitOfWork();
            var customerRepository    = new CustomerRepository(unitOfWork);
            var bankAccountRepository = new BankAccountRepository(unitOfWork);

            var customer = customerRepository.Get(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45"));

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            var newBankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);


            //Act
            bankAccountRepository.Add(newBankAccount);

            try
            {
                unitOfWork.Commit();
            }
            catch (DbUpdateException ex)
            {
                var entry = ex.Entries.First();
            }
        }
コード例 #8
0
        public void GenerateAccountNumber_Should_ReturnIbanWithIteratedAccountNumber_When_SomeAccountNumberExistsInDb()
        {
            _context.BankAccounts.Add(new BankAccount {
                AccountNumber = 0
            });
            _context.SaveChanges();

            var expectedBankAccountNumber = new BankAccountNumber
            {
                CountryCode        = "PL",
                CheckDigits        = "34",
                NationalBankCode   = "1080",
                BranchCode         = "000",
                NationalCheckDigit = 1,
                AccountNumber      = 1,
                AccountNumberText  = "0000000000000001",
                Iban          = "PL34108000010000000000000001",
                IbanSeparated = "PL 34 1080 0001 0000 0000 0000 0001"
            };

            var result = _sut.GenerateBankAccountNumber(1);

            Assert.AreEqual(expectedBankAccountNumber.CountryCode, result.CountryCode);
            Assert.AreEqual(expectedBankAccountNumber.CheckDigits, result.CheckDigits);
            Assert.AreEqual(expectedBankAccountNumber.NationalBankCode, result.NationalBankCode);
            Assert.AreEqual(expectedBankAccountNumber.BranchCode, result.BranchCode);
            Assert.AreEqual(expectedBankAccountNumber.NationalCheckDigit, result.NationalCheckDigit);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumber, result.AccountNumber);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumberText, result.AccountNumberText);
            Assert.AreEqual(expectedBankAccountNumber.Iban, result.Iban);
            Assert.AreEqual(expectedBankAccountNumber.IbanSeparated, result.IbanSeparated);
        }
コード例 #9
0
        public void GenerateAccountNumber_Should_ReturnIbanWithHeadquartersBranchCode_When_NoBranchIdIsPassedToMethod()
        {
            var expectedBankAccountNumber = new BankAccountNumber
            {
                CountryCode        = "PL",
                CheckDigits        = "27",
                NationalBankCode   = "1080",
                BranchCode         = "001",
                NationalCheckDigit = 4,
                AccountNumber      = 0,
                AccountNumberText  = "0000000000000000",
                Iban          = "PL27108000140000000000000000",
                IbanSeparated = "PL 27 1080 0014 0000 0000 0000 0000"
            };

            var result = _sut.GenerateBankAccountNumber();

            Assert.AreEqual(expectedBankAccountNumber.CountryCode, result.CountryCode);
            Assert.AreEqual(expectedBankAccountNumber.CheckDigits, result.CheckDigits);
            Assert.AreEqual(expectedBankAccountNumber.NationalBankCode, result.NationalBankCode);
            Assert.AreEqual(expectedBankAccountNumber.BranchCode, result.BranchCode);
            Assert.AreEqual(expectedBankAccountNumber.NationalCheckDigit, result.NationalCheckDigit);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumber, result.AccountNumber);
            Assert.AreEqual(expectedBankAccountNumber.AccountNumberText, result.AccountNumberText);
            Assert.AreEqual(expectedBankAccountNumber.Iban, result.Iban);
            Assert.AreEqual(expectedBankAccountNumber.IbanSeparated, result.IbanSeparated);
        }
コード例 #10
0
        public void BankAccountDepositAndWithdrawSetBalance()
        {
            //Arrange
            var country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var activityReason    = "reason";

            var customer = CustomerFactory.CreateCustomer(
                "Unai",
                "Zorrilla Castro",
                "+3422",
                "company",
                country,
                new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            Assert.AreEqual(bankAccount.Balance, 0);

            bankAccount.DepositMoney(1000, activityReason);
            Assert.AreEqual(bankAccount.Balance, 1000);

            bankAccount.WithdrawMoney(250, activityReason);
            Assert.AreEqual(bankAccount.Balance, 750);
        }
コード例 #11
0
        public void BankAccountLockSetLocked()
        {
            //Arrange
            var country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer(
                "Unai",
                "Zorrilla Castro",
                "+3422",
                "company",
                country,
                new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.Lock();

            //Assert
            Assert.IsTrue(bankAccount.Locked);
        }
コード例 #12
0
 public override string ToString()
 {
     if (BankAccountNumber == null || BankAccountNumber.Length < 4)
     {
         return("eCheck w/o Bank account");
     }
     return(string.Format("{0} ending in xx{1}",
                          "Electronic Check", BankAccountNumber.Substring(BankAccountNumber.Length - 4, 4)));
 }
コード例 #13
0
ファイル: Host.cs プロジェクト: polinafr/marom
        public override string ToString()
        {
            string s;

            s = $@"Host Key: {HostKey.ToString()}, 
            Private Name: {PrivateName}, Family Name: {FamilyName}, 
            Fhone Number: {FhoneNumber.ToString()}, MailAddress: {MailAddress}, 
            bank Branch: {bankBranch.ToString()}, BankAccountNumber: {BankAccountNumber.ToString()}, CollectionClearance:{CollectionClearance.ToString()} \n";
            return(s);
        }
コード例 #14
0
        /// <summary>
        /// set bank account number
        /// </summary>
        /// <param name="accNum"></param>
        /// <exception cref="ArgumentNullException">Arguments null</exception>
        public void SetBankAccountNumber(BankAccountNumber accNum)
        {
            if (accNum == null)
            {
                throw new ArgumentNullException("Bank Account Number");
            }

            this.SetDirtyData();
            _accNumber = accNum;
        }
コード例 #15
0
 public override string ToString()
 {
     return("Bank Account Number: " + BankAccountNumber.ToString() + "\n" +
            "my commition: " + MyCommition.ToString() + "\n" +
            "Collection Clearance? " + CollectionClearance.ToString() + "\n" +
            "Bank name: " + BankName + "/n" +
            "Bank Number: " + BankNumber.ToString() + "/n" +
            "Branch number: " + BranchNumber.ToString() + "/n" +
            "Branch address: " + BranchAddress + "/n" +
            "Branch city: " + BranchCity + "/n");
 }
コード例 #16
0
 public bool Equals(StoreContactDetails other)
 {
     return(other != null &&
            Name.ToLower().Trim() == other.Name.ToLower().Trim() &&
            Email.ToLower().Trim() == other.Email.ToLower().Trim() &&
            Address.ToLower().Trim() == other.Address.ToLower().Trim() &&
            Phone.ToLower().Trim() == other.Phone.ToLower().Trim() &&
            Bank.ToLower().Trim() == other.Bank.ToLower().Trim() &&
            BankAccountNumber.ToLower().Trim() == other.BankAccountNumber.ToLower().Trim() &&
            Description.ToLower().Trim() == other.Description.ToLower().Trim());
 }
コード例 #17
0
 public override string ToString()
 {
     return("Host key: " + HostKey.ToString() + "\n" +
            "First Name: " + FirstName + "\n" +
            "Last Name: " + LastName + "\n" +
            "Fhone Number: " + FhoneNumber.ToString() + "\n" +
            "Mail Address: " + MailAddress + "\n" +
            "Bank Branch Details: " + BankBranchDetails.ToString() + "\n" +
            "Bank Account Number: " + BankAccountNumber.ToString() + "\n" +
            "my commition: " + MyCommition.ToString() + "\n" +
            "Collection Clearance? " + CollectionClearance.ToString() + "\n");
 }
コード例 #18
0
        public void BankAccountCannotWithDrawMoneyIfBalanceIsLessThanAmountAccount()
        {
            //Arrange

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.WithdrawMoney(200, "the reason..");
        }
コード例 #19
0
ファイル: BankAppService.cs プロジェクト: myg133/NlayerAppV3
        BankAccountNumber CalculateNewBankAccountNumber()
        {
            var bankAccountNumber = new BankAccountNumber();

            //simulate bank account number creation....

            bankAccountNumber.OfficeNumber     = "2354";
            bankAccountNumber.NationalBankCode = "2134";
            bankAccountNumber.CheckDigits      = "02";
            bankAccountNumber.AccountNumber    = new Random().Next(1, Int32.MaxValue).ToString();

            return(bankAccountNumber);
        }
コード例 #20
0
ファイル: Host.cs プロジェクト: Avital-coder/Booking-System
 public override string ToString()
 {
     return("ID: " + ID.ToString() + "\n"
            + "Password: "******"\n"
            + "Private Name: " + PrivateName.ToString() + "\n"
            + "Family Name: " + FamilyName.ToString() + "\n"
            + "Phone Number: " + PhoneNumber.ToString() + "\n"
            + "Mail Address: " + MailAddress.ToString() + "\n"
            + "Bank Branch Details: " + BankBranchDetails.ToString() + "\n"
            + "Bank Account Number: " + BankAccountNumber.ToString() + "\n"
            + "Collection Clearance: " + CollectionClearance.ToString() + "\n"
            + "Host Key: " + HostKey.ToString() + "\n");
 }
コード例 #21
0
        public void BankAccountCannotDepositMoneyInLockedAccount()
        {
            //Arrange

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);
            bankAccount.Lock();

            //Act
            bankAccount.DepositMoney(200, "the reason..");
        }
コード例 #22
0
        public void BankAccountCannotDepositMoneyLessThanZero()
        {
            //Arrange

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason = "reason";

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            BankAccount bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccount.DepositMoney(-100, activityReason);
        }
コード例 #23
0
        /// <summary>
        /// Create a new instance of bankaccount
        /// </summary>
        /// <param name="customer">The customer associated with this bank account</param>
        /// <param name="bankAccountNumber">The bank account number</param>
        /// <returns>A valid bank account</returns>
        public static BankAccount CreateBankAccount(Customer customer, BankAccountNumber bankAccountNumber)
        {
            var bankAccount = new BankAccount();

            //set the bank account number
            bankAccount.BankAccountNumber = bankAccountNumber;

            //set default bank account as unlocked
            bankAccount.UnLock();

            //set the customer for this bank account
            bankAccount.SetCustomer(customer);

            return bankAccount;
        }
コード例 #24
0
        public void BankAccountCannotWithDrawMoneyIfBalanceIsLessThanAmountAccount()
        {
            //Arrange
            Country country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var bankAccount       = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.WithdrawMoney(200, "the reason..");
        }
コード例 #25
0
        /// <summary>
        /// Create a new instance of bankaccount
        /// </summary>
        /// <param name="customerId">The customer identifier</param>
        /// <param name="bankAccountNumber">The bank account number</param>
        /// <returns>A valid bank account</returns>
        public static BankAccount CreateBankAccount(Guid customerId, BankAccountNumber bankAccountNumber)
        {
            var bankAccount = new BankAccount();

            //set the bank account number
            bankAccount.BankAccountNumber = bankAccountNumber;

            //set default bank account as unlocked
            bankAccount.UnLock();

            //set the customer identifier
            bankAccount.CustomerId = customerId;

            return bankAccount;
        }
コード例 #26
0
        public bool Equals(StoreContactDetails scd)
        {
            if (!Name.Equals(scd.Name) ||
                !Email.Equals(scd.Email) ||
                !Address.Equals(scd.Address) ||
                !Phone.Equals(scd.Phone) ||
                !BankAccountNumber.Equals(scd.BankAccountNumber) ||
                !Bank.Equals(scd.Bank) ||
                !Description.Equals(scd.Description))
            {
                return(false);
            }

            return(true);
        }
コード例 #27
0
        public void BankAccountCannotDepositMoneyLessThanZero()
        {
            //Arrange
            Country country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var    bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason    = "reason";

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccount.DepositMoney(-100, activityReason);
        }
コード例 #28
0
        /// <summary>
        /// Construct
        /// </summary>
        /// <param name="coreDriver">Core Driver</param>
        /// <param name="management">Matadata management</param>
        /// <param name="id"></param>
        /// <param name="descp"></param>
        /// <param name="accNumber"></param>
        /// <param name="bankKey"></param>
        /// <param name="type"></param>
        /// <exception cref="ArgumentNullException">Arguments null</exception>
        /// <exception cref="MasterDataIdentityNotDefined">Master data identity is not defined.</exception>
        public BankAccountMasterData(CoreDriver coreDriver, MasterDataManagement management,
                MasterDataIdentity id, String descp, BankAccountNumber accNumber,
                MasterDataIdentity bankKey, BankAccountType type)
            : base(coreDriver, management, id, descp)
        {
            _accNumber = accNumber;
            _bankAccType = type;

            MasterDataBase bankKeyId = management.GetMasterData(bankKey,
                    MasterDataType.BANK_KEY);
            if (bankKeyId == null)
            {
                throw new MasterDataIdentityNotDefined(bankKey,
                        MasterDataType.BANK_KEY);
            }
            _bankKey = bankKeyId.GetIdentity();
        }
コード例 #29
0
 protected BankAccount(
     BankAccountId bankAccountId,
     BankAccountNumber bankAccountNumber,
     Money balance,
     BankAccountStateId bankAccountStateId,
     DateTime createdAt,
     DateTime updatedAt,
     CustomerId customerId)
 {
     BankAccountId      = bankAccountId;
     BankAccountNumber  = bankAccountNumber;
     Balance            = balance;
     BankAccountStateId = bankAccountStateId;
     CreatedAt          = createdAt;
     UpdatedAt          = updatedAt;
     CustomerId         = customerId;
 }
コード例 #30
0
 public static BankAccount From(
     BankAccountId bankAccountId,
     BankAccountNumber bankAccountNumber,
     Money balance,
     BankAccountStateId bankAccountStateId,
     DateTime createdAt,
     DateTime updatedAt,
     CustomerId customerId)
 {
     return(new BankAccount(
                bankAccountId,
                bankAccountNumber,
                balance,
                bankAccountStateId,
                createdAt,
                updatedAt,
                customerId));
 }
コード例 #31
0
        /// <summary>
        /// Create a new instance of bankaccount
        /// </summary>
        /// <param name="customer">The customer associated with this bank account</param>
        /// <param name="bankAccountNumber">The bank account number</param>
        /// <returns>A valid bank account</returns>
        public static BankAccount CreateBankAccount(Customer customer, BankAccountNumber bankAccountNumber)
        {
            var bankAccount = new BankAccount();

            //set the identity
            bankAccount.GenerateNewIdentity();

            //set the bank account number
            bankAccount.BankAccountNumber = bankAccountNumber;

            //set default bank account as unlocked
            bankAccount.UnLock();

            //set the customer for this bank account
            bankAccount.SetCustomerOwnerOfThisBankAccount(customer);

            return bankAccount;
        }
コード例 #32
0
        public void BankAccountCannotDepositMoneyInLockedAccount()
        {
            //Arrange
            Country country = new Country("Spain", "es-ES");

            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var bankAccount       = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccount.Lock();

            //Act
            Exception ex = Assert.Throws <InvalidOperationException>(() => bankAccount.DepositMoney(200, "the reason.."));

            Assert.IsType <InvalidOperationException>(ex);
        }
コード例 #33
0
ファイル: BankTest.cs プロジェクト: sparrow41/training
        public void TestMethod1()
        {
            AccountNumber number = new AccountNumber("86102024981111222233334444");

            if (number.AcountNumber.Length == 26)
            {
                BankAccountNumber bankAccount = new BankAccountNumber();
                string            test        = bankAccount.CheckBank(number);
            }
            else if (number.AcountNumber.Length == 28)
            {
                TheInternationalBankAccountNumber bankAccount = new TheInternationalBankAccountNumber();
                string test = bankAccount.CheckBank(number);
            }
            else
            {
                string test = "Błędny numer konta bankowego";
            }
        }
コード例 #34
0
ファイル: BankTest.cs プロジェクト: blacha14/nitrogen
        public void TestMethod1()
        {
            AccountNumber number = new AccountNumber("86102024981111222233334444");

            if (number.AcountNumber.Length == 26)
            {
                BankAccountNumber bankAccount = new BankAccountNumber();
               string test= bankAccount.CheckBank(number);
            }
            else if (number.AcountNumber.Length == 28)
            {
                TheInternationalBankAccountNumber bankAccount = new TheInternationalBankAccountNumber();
                string test = bankAccount.CheckBank(number);
            }
            else
            {
                string test = "Błędny numer konta bankowego";
            }

        }
コード例 #35
0
        public void BankAccountRepositoryRemoveItemDeleteIt()
        {
            //Arrange
            var unitOfWork            = new MainBcUnitOfWork();
            var customerRepository    = new CustomerRepository(unitOfWork);
            var bankAccountRepository = new BankAccountRepository(unitOfWork);

            var customer = customerRepository.Get(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45"));

            var bankAccountNumber = new BankAccountNumber("4444", "5555", "3333333333", "02");

            var newBankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccountRepository.Add(newBankAccount);
            unitOfWork.Commit();

            //Act
            bankAccountRepository.Remove(newBankAccount);
            unitOfWork.Commit();
        }
コード例 #36
0
        public void BankAccountRepositoryAddNewItemSaveItem()
        {
            //Arrange
            var unitOfWork = new MainBCUnitOfWork();
            IBankAccountRepository bankAccountRepository = new BankAccountRepository(unitOfWork);

            Guid customerId = new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45");
            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            BankAccount newBankAccount = BankAccountFactory.CreateBankAccount(customerId,bankAccountNumber);
            newBankAccount.Id = IdentityGenerator.NewSequentialGuid();

            //Act

            bankAccountRepository.Add(newBankAccount);
            bankAccountRepository.UnitOfWork.Commit();

            //Assert

            var inserted = bankAccountRepository.Get(newBankAccount.Id);

            Assert.IsNotNull(inserted);
        }
コード例 #37
0
        protected override void Seed(MainBCUnitOfWork unitOfWork)
        {
            /*
             * Countries agg
             */

            var spainCountry = new Country("Spain", "es-ES");

            spainCountry.ChangeCurrentIdentity(new Guid("32BB805F-40A4-4C37-AA96-B7945C8C385C"));

            var usaCountry = new Country("EEUU", "en-US");

            usaCountry.ChangeCurrentIdentity(new Guid("C3C82D06-6A07-41FB-B7EA-903EC456BFC5"));

            unitOfWork.Countries.Add(spainCountry);
            unitOfWork.Countries.Add(usaCountry);

            /*
             * Customers agg
             */

            var customerJhon = CustomerFactory.CreateCustomer("Jhon", "Jhon", "+34617", "company", spainCountry, new Address("Madrid", "280181", "Paseo de La finca", ""));

            customerJhon.ChangeCurrentIdentity(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45"));


            var customerMay = CustomerFactory.CreateCustomer("May", "Garcia", "+34617", "company", usaCountry, new Address("Seatle", "3332", "Alaskan Way", ""));

            customerMay.ChangeCurrentIdentity(new Guid("0CD6618A-9C8E-4D79-9C6B-4AA69CF18AE6"));


            unitOfWork.Customers.Add(customerJhon);
            unitOfWork.Customers.Add(customerMay);


            /*
             * Product agg
             */
            var book = new Book("The book title", "Any book description", "Krassis Press", "ABC");

            book.ChangeUnitPrice(40M);
            book.IncrementStock(2);

            book.ChangeCurrentIdentity(new Guid("44668EBF-7B54-4431-8D61-C1298DB50857"));

            var software = new Software("the new SO", "the software description", "XXXX0000--111");

            software.ChangeUnitPrice(100M);
            software.IncrementStock(3);
            software.ChangeCurrentIdentity(new Guid("D7E5C537-6A0C-4E19-B41E-3653F4998085"));

            unitOfWork.Products.Add(book);
            unitOfWork.Products.Add(software);

            /*
             * Orders agg
             */

            var orderA = OrderFactory.CreateOrder(customerJhon, "shipping name", "shipping city", "shipping address", "shipping zip code");

            orderA.ChangeCurrentIdentity(new Guid("3135513C-63FD-43E6-9697-6C6E5D8CE55B"));
            orderA.OrderDate = DateTime.Now;

            orderA.AddNewOrderLine(book.Id, 1, 40, 0);

            var orderB = OrderFactory.CreateOrder(customerMay, "shipping name", "shipping city", "shipping address", "shipping zip code");

            orderB.GenerateNewIdentity();
            orderB.OrderDate = DateTime.Now;

            orderB.AddNewOrderLine(software.Id, 3, 12, 0);

            unitOfWork.Orders.Add(orderA);
            unitOfWork.Orders.Add(orderB);

            /*
             * Bank Account agg
             */

            var         bankAccountNumberJhon = new BankAccountNumber("1111", "2222", "3333333333", "01");
            BankAccount bankAccountJhon       = BankAccountFactory.CreateBankAccount(customerJhon, bankAccountNumberJhon);

            bankAccountJhon.ChangeCurrentIdentity(new Guid("0343C0B0-7C40-444A-B044-B463F36A1A1F"));
            bankAccountJhon.DepositMoney(1000, "Open BankAccount");

            var         bankAccountNumberMay = new BankAccountNumber("4444", "5555", "3333333333", "02");
            BankAccount bankAccountMay       = BankAccountFactory.CreateBankAccount(customerMay, bankAccountNumberMay);

            bankAccountMay.GenerateNewIdentity();
            bankAccountJhon.DepositMoney(2000, "Open BankAccount");

            unitOfWork.BankAccounts.Add(bankAccountJhon);
            unitOfWork.BankAccounts.Add(bankAccountMay);
        }
コード例 #38
0
        public void PerformBankTransfer()
        {
            //Arrange

            //--> source bank account data

            var sourceId = new Guid("3481009C-A037-49DB-AE05-44FF6DB67DEC");
            var bankAccountNumberSource = new BankAccountNumber("4444", "5555", "3333333333", "02");
            var sourceCustomer          = new Customer();

            sourceCustomer.GenerateNewIdentity();

            var source = BankAccountFactory.CreateBankAccount(sourceCustomer, bankAccountNumberSource);

            source.ChangeCurrentIdentity(sourceId);
            source.DepositMoney(1000, "initial");

            var sourceBankAccountDTO = new BankAccountDTO()
            {
                Id = sourceId,
                BankAccountNumber = source.Iban
            };

            //--> target bank account data
            var targetCustomer = new Customer();

            targetCustomer.GenerateNewIdentity();
            var targetId = new Guid("8A091975-F783-4730-9E03-831E9A9435C1");
            var bankAccountNumberTarget = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var target = BankAccountFactory.CreateBankAccount(targetCustomer, bankAccountNumberTarget);

            target.ChangeCurrentIdentity(targetId);


            var targetBankAccountDTO = new BankAccountDTO()
            {
                Id = targetId,
                BankAccountNumber = target.Iban
            };

            var accounts = new List <BankAccount>()
            {
                source, target
            };

            var bankAccountRepository = new Mock <IBankAccountRepository>();

            bankAccountRepository
            .Setup(x => x.Get(It.IsAny <Guid>()))
            .Returns((Guid guid) => {
                return(accounts.Where(ba => ba.Id == guid).SingleOrDefault());
            });

            Mock <MainBCUnitOfWork> _mockContext = new Mock <MainBCUnitOfWork>();

            _mockContext.Setup(c => c.Commit());

            bankAccountRepository
            .Setup(x => x.UnitOfWork).Returns(_mockContext.Object);

            var customerRepository = new Mock <ICustomerRepository>();
            IBankTransferService             transferService = new BankTransferService();
            Mock <ILogger <BankAppService> > _mockLogger     = new Mock <ILogger <BankAppService> >();
            IBankAppService bankingService = new BankAppService(bankAccountRepository.Object, customerRepository.Object, transferService, _mockLogger.Object);

            //Act
            bankingService.PerformBankTransfer(sourceBankAccountDTO, targetBankAccountDTO, 100M);

            //Assert
            Assert.Equal(source.Balance, 900);
            Assert.Equal(target.Balance, 100);
        }
コード例 #39
0
        public void BankAccountFactoryCreateValidBankAccount()
        {
            //Arrange
            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            BankAccount bankAccount = null;

            //Act
            bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);
            var validationContext = new ValidationContext(bankAccount, null, null);
            var validationResults = customer.Validate(validationContext);

            //Assert
            Assert.IsNotNull(bankAccount);
            Assert.IsTrue(bankAccount.BankAccountNumber == bankAccountNumber);
            Assert.IsFalse(bankAccount.Locked);
            Assert.IsTrue(bankAccount.CustomerId == customer.Id);

            Assert.IsFalse(validationResults.Any());
        }
コード例 #40
0
        public static void CreateMasterData(CoreDriver coreDriver)
        {

            ///
            /// check the factory is initialized, and the factory with no master data
            /// 
            MasterDataManagement masterDataManagement = coreDriver.MdMgmt;

            // vendor
            VendorMasterDataFactory vendorFactory = (VendorMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.VENDOR);
            Assert.AreEqual(0, vendorFactory.MasterDataCount);
            // customer
            CustomerMasterDataFactory customerFactory = (CustomerMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.CUSTOMER);
            Assert.AreEqual(0, customerFactory.MasterDataCount);
            // business area
            BusinessAreaMasterDataFactory businessFactory = (BusinessAreaMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.BUSINESS_AREA);
            Assert.AreEqual(0, businessFactory.MasterDataCount);
            // bank key
            BankKeyMasterDataFactory bankKeyFactory = (BankKeyMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.BANK_KEY);
            Assert.AreEqual(0, bankKeyFactory.MasterDataCount);
            // bank account
            BankAccountMasterDataFactory bankAccountFactory = (BankAccountMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.BANK_ACCOUNT);
            Assert.AreEqual(0, bankAccountFactory.MasterDataCount);
            // GL account
            GLAccountMasterDataFactory accountFactory = (GLAccountMasterDataFactory)masterDataManagement
                    .GetMasterDataFactory(MasterDataType.GL_ACCOUNT);
            Assert.AreEqual(0, accountFactory.MasterDataCount);

            /** add master data entities */
            // vendor
            VendorMasterData vendor = (VendorMasterData)vendorFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.VENDOR_BUS), TestData.VENDOR_BUS_DESCP);
            Assert.IsTrue(vendor != null);
            vendor = (VendorMasterData)vendorFactory.CreateNewMasterDataBase(
                    new MasterDataIdentity(TestData.VENDOR_SUBWAY),
                    TestData.VENDOR_SUBWAY_DESCP);
            Assert.IsTrue(vendor != null);

            // duplicate id
            try
            {
                vendorFactory.CreateNewMasterDataBase(new MasterDataIdentity(
                        TestData.VENDOR_SUBWAY), TestData.VENDOR_SUBWAY_DESCP);
                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {

            }

            // customer
            CustomerMasterData customer = (CustomerMasterData)customerFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.CUSTOMER1), TestData.CUSTOMER1_DESCP);
            Assert.IsTrue(customer != null);
            customer = (CustomerMasterData)customerFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.CUSTOMER2), TestData.CUSTOMER2_DESCP);
            Assert.IsTrue(customer != null);

            // duplicate id
            try
            {
                customerFactory.CreateNewMasterDataBase(new MasterDataIdentity(
                        TestData.CUSTOMER2), TestData.CUSTOMER2_DESCP);

                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {
            }

            // bank key
            BankKeyMasterData bankKey = (BankKeyMasterData)bankKeyFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BANK_KEY), TestData.BANK_KEY_DESCP);
            Assert.IsTrue(bankKey != null);

            // duplicate id
            try
            {
                bankKeyFactory.CreateNewMasterDataBase(new MasterDataIdentity(
                        TestData.BANK_KEY), TestData.BANK_KEY_DESCP);
                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {
            }

            // bank account
            MasterDataIdentity bankKeyId = new MasterDataIdentity(TestData.BANK_KEY);
            BankAccountNumber accountNum = new BankAccountNumber(
                    TestData.BANK_ACCOUNT_CMB_6235_ACC);
            BankAccountMasterData bankAcc = (BankAccountMasterData)bankAccountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BANK_ACCOUNT_CMB_6235),
                            TestData.BANK_ACCOUNT_CMB_6235_DESCP, accountNum,
                            bankKeyId, BankAccountType.SAVING_ACCOUNT);
            Assert.IsTrue(bankAcc != null);
            accountNum = new BankAccountNumber(TestData.BANK_ACCOUNT_CMB_6620_ACC);
            bankAcc = (BankAccountMasterData)bankAccountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BANK_ACCOUNT_CMB_6620),
                            TestData.BANK_ACCOUNT_CMB_6620_DESCP, accountNum,
                            bankKeyId, BankAccountType.CREDIT_CARD);
            Assert.IsTrue(bankAcc != null);

            // duplicate id
            try
            {
                bankAccountFactory.CreateNewMasterDataBase(new MasterDataIdentity(
                        TestData.BANK_ACCOUNT_CMB_6620),
                        TestData.BANK_ACCOUNT_CMB_6620_DESCP, accountNum, bankKey,
                        BankAccountType.SAVING_ACCOUNT);
                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {
            }

            // business area
            BusinessAreaMasterData businessArea = (BusinessAreaMasterData)businessFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BUSINESS_AREA_ENTERTAIN),
                            TestData.BUSINESS_AREA_ENTERTAIN_DESCP,
                            CriticalLevel.MEDIUM);
            Assert.IsTrue(businessArea != null);
            businessArea = (BusinessAreaMasterData)businessFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BUSINESS_AREA_WORK),
                            TestData.BUSINESS_AREA_WORK_DESCP, CriticalLevel.HIGH);
            Assert.IsTrue(businessArea != null);
            businessArea = (BusinessAreaMasterData)businessFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity(
                            TestData.BUSINESS_AREA_SNACKS),
                            TestData.BUSINESS_AREA_SNACKS_DESCP, CriticalLevel.LOW);
            Assert.IsTrue(businessArea != null);

            // duplicate id
            try
            {
                businessArea = (BusinessAreaMasterData)businessFactory
                        .CreateNewMasterDataBase(new MasterDataIdentity(
                                TestData.BUSINESS_AREA_SNACKS),
                                TestData.BUSINESS_AREA_SNACKS_DESCP,
                                CriticalLevel.LOW);
                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {
            }

            // G/L account
            MasterDataIdentity bankAccId = new MasterDataIdentity(
                    TestData.BANK_ACCOUNT_CMB_6235);
            GLAccountMasterData glAccount = (GLAccountMasterData)accountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity_GLAccount(
                            TestData.GL_ACCOUNT_BANK),
                            TestData.GL_ACCOUNT_BANK_DESCP, bankAccId);
            Assert.IsTrue(glAccount != null);

            glAccount = (GLAccountMasterData)accountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity_GLAccount(
                            TestData.GL_ACCOUNT_CASH),
                            TestData.GL_ACCOUNT_CASH_DESCP);
            Assert.IsTrue(glAccount != null);
            glAccount.SetInitAmount(TestData.AMOUNT_VENDOR);

            glAccount = (GLAccountMasterData)accountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity_GLAccount(
                            TestData.GL_ACCOUNT_COST),
                            TestData.GL_ACCOUNT_COST_DESCP);
            Assert.IsTrue(glAccount != null);
            glAccount = (GLAccountMasterData)accountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity_GLAccount(
                            TestData.GL_ACCOUNT_EQUITY),
                            TestData.GL_ACCOUNT_EQUITY_DESCP);
            Assert.IsTrue(glAccount != null);
            glAccount = (GLAccountMasterData)accountFactory
                    .CreateNewMasterDataBase(new MasterDataIdentity_GLAccount(
                            TestData.GL_ACCOUNT_REV), TestData.GL_ACCOUNT_REV_DESCP);
            Assert.IsTrue(glAccount != null);

            // duplicate id
            try
            {
                accountFactory.CreateNewMasterDataBase(
                        new MasterDataIdentity_GLAccount(TestData.GL_ACCOUNT_REV),
                        TestData.GL_ACCOUNT_REV_DESCP);
                Assert.Fail("Duplicate Id");
            }
            catch (MasterDataIdentityExists)
            {
            }
        }
コード例 #41
0
        BankAccountNumber CalculateNewBankAccountNumber()
        {
            var bankAccountNumber = new BankAccountNumber();

            //simulate bank account number creation....

            bankAccountNumber.OfficeNumber = "2354";
            bankAccountNumber.NationalBankCode = "2134";
            bankAccountNumber.CheckDigits = "02";
            bankAccountNumber.AccountNumber = new Random().Next(1, Int32.MaxValue).ToString();

            return bankAccountNumber;

        }
コード例 #42
0
 public virtual bool HasIdentity()
 {
     return(Exist() && BankAccountNumber.HasValue());
 }
コード例 #43
0
        public void BankAccountRepositoryRemoveItemDeleteIt()
        {
            //Arrange
            var unitOfWork = new MainBCUnitOfWork();
            IBankAccountRepository bankAccountRepository = new BankAccountRepository(unitOfWork);

            Guid customerId = new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45");
            var bankAccountNumber = new BankAccountNumber("4444", "5555", "3333333333", "02");

            BankAccount newBankAccount = BankAccountFactory.CreateBankAccount(customerId, bankAccountNumber);
            newBankAccount.Id = IdentityGenerator.NewSequentialGuid();

            bankAccountRepository.Add(newBankAccount);
            bankAccountRepository.UnitOfWork.Commit();

            //Act

            bankAccountRepository.Remove(newBankAccount);
            bankAccountRepository.UnitOfWork.Commit();

            var result = bankAccountRepository.Get(newBankAccount.Id);

            //Assert
            Assert.IsNull(result);
        }
コード例 #44
0
      public void BankAccountDepositMaxDecimalThrowOverflowBalance()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var activityReason = "reason";

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
         customer.GenerateNewIdentity();

         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         bankAccount.DepositMoney(1, activityReason);
         bankAccount.DepositMoney(Decimal.MaxValue, activityReason);
      }
コード例 #45
0
      public void BankAccountWithdrawMoneyAnotateActivity()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var activityReason = "reason";

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         //Act
         bankAccount.DepositMoney(1000, activityReason);
         bankAccount.WithdrawMoney(1000, activityReason);

         //Assert
         Assert.IsTrue(bankAccount.Balance == 0);
         Assert.IsNotNull(bankAccount.BankAccountActivity);
         Assert.IsNotNull(bankAccount.BankAccountActivity.Any());
         Assert.IsTrue(bankAccount.BankAccountActivity.Last().Amount == -1000);
         Assert.IsTrue(bankAccount.BankAccountActivity.Last().ActivityDescription == activityReason);
      }
コード例 #46
0
      public void BankAccountCannotDepositMoneyInLockedAccount()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);
         bankAccount.Lock();

         //Act
         bankAccount.DepositMoney(200, "the reason..");
      }
コード例 #47
0
        public void BankAccountUnLockSetUnLocked()
        {
            //Arrange

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.Lock();
            bankAccount.UnLock();

            //Assert
            Assert.IsFalse(bankAccount.Locked);
        }
コード例 #48
0
      public void BankAccountRepositoryRemoveItemDeleteIt()
      {
         //Arrange
         var unitOfWork = new MainBcUnitOfWork();
         var customerRepository = new CustomerRepository(unitOfWork);
         var bankAccountRepository = new BankAccountRepository(unitOfWork);

         var customer = customerRepository.Get(new Guid("43A38AC8-EAA9-4DF0-981F-2685882C7C45"));

         var bankAccountNumber = new BankAccountNumber("4444", "5555", "3333333333", "02");

         var newBankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         bankAccountRepository.Add(newBankAccount);
         unitOfWork.Commit();

         //Act
         bankAccountRepository.Remove(newBankAccount);
         unitOfWork.Commit();

      }
コード例 #49
0
 //for debugging
 public override string ToString()
 {
     return(HostKey.ToString() + PrivateName.ToString() + FamilyName.ToString() +
            FhoneNumber.ToString() + MailAddress.ToString() + BankAccountNumber.ToString() +
            CollectionClearance.ToString());
 }
コード例 #50
0
        public void BankAccountCannotWithDrawMoneyIfBalanceIsLessThanAmountAccount()
        {
            //Arrange
            Country country = new Country("Spain", "es-ES");
            country.GenerateNewIdentity();

            var customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", "+3422", "company", country, new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.WithdrawMoney(200, "the reason..");
        }
コード例 #51
0
      public void BankAccountCannotDepositMoneyLessThanZero()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var activityReason = "reason";

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         bankAccount.DepositMoney(-100, activityReason);
      }
コード例 #52
0
      public void BankAccountDepositAndWithdrawSetBalance()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var activityReason = "reason";

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         Assert.AreEqual(bankAccount.Balance, 0);

         bankAccount.DepositMoney(1000, activityReason);
         Assert.AreEqual(bankAccount.Balance, 1000);

         bankAccount.WithdrawMoney(250, activityReason);
         Assert.AreEqual(bankAccount.Balance, 750);
      }
コード例 #53
0
        public void BankAccountDepositAndWithdrawSetBalance()
        {
            //Arrange

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason = "reason";

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            BankAccount bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            Assert.AreEqual(bankAccount.Balance,0);

            bankAccount.DepositMoney(1000, activityReason);
            Assert.AreEqual(bankAccount.Balance, 1000);

            bankAccount.WithdrawMoney(250, activityReason);
            Assert.AreEqual(bankAccount.Balance, 750);
        }
コード例 #54
0
        public void BankAccountWithdrawMoneyAnotateActivity()
        {
            //Arrange

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason = "reason";

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            BankAccount bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            //Act
            bankAccount.DepositMoney(1000, activityReason);
            bankAccount.WithdrawMoney(1000, activityReason);

            //Assert
            Assert.IsTrue(bankAccount.Balance == 0);
            Assert.IsNotNull(bankAccount.BankAccountActivity);
            Assert.IsNotNull(bankAccount.BankAccountActivity.Any());
            Assert.IsTrue(bankAccount.BankAccountActivity.Last().Amount == -1000);
            Assert.IsTrue(bankAccount.BankAccountActivity.Last().ActivityDescription == activityReason);
        }
コード例 #55
0
        protected override void Seed(MainBcUnitOfWork context)
        {
            //NOTE: Each time you change the content of this method, ALL the records will be added to the database!!
            //If you change this method, it is better to delete de whole database first.

            ////Demo data

            //Countries
            var spain = new Country("Spain", "ES");

            spain.GenerateNewIdentity();
            context.Countries.Add(spain);

            var us = new Country("U.S.", "US");

            us.GenerateNewIdentity();
            context.Countries.Add(us);

            var uk = new Country("U.K.", "GB");

            uk.GenerateNewIdentity();
            context.Countries.Add(uk);

            var canada = new Country("Canada", "CA");

            canada.GenerateNewIdentity();
            context.Countries.Add(canada);

            var italy = new Country("Italy", "IT");

            italy.GenerateNewIdentity();
            context.Countries.Add(italy);

            var france = new Country("France", "FR");

            france.GenerateNewIdentity();
            context.Countries.Add(france);

            var argentina = new Country("Argentina", "AR");

            argentina.GenerateNewIdentity();
            context.Countries.Add(argentina);

            var russia = new Country("Russian Federation", "RUS");

            russia.GenerateNewIdentity();
            context.Countries.Add(russia);

            var israel = new Country("Israel", "IS");

            israel.GenerateNewIdentity();
            context.Countries.Add(israel);

            var brazil = new Country("Brazil", "BZ");

            brazil.GenerateNewIdentity();
            context.Countries.Add(brazil);

            ////
            //Customers

            //Cesar de la Torre
            var customer1 = CustomerFactory.CreateCustomer(
                "Cesar",
                "De la Torre",
                "+34 1234567",
                "Microsoft",
                spain,
                new Address("Madrid", "28700", "Calle Club Deportivo 1", "Parque Empresarial La Finca, Edif. 1"));

            customer1.SetTheCountryReference(spain.Id);
            context.Customers.Add(customer1);

            //Unai Zorrilla
            var customer2 = CustomerFactory.CreateCustomer(
                "Unai",
                "Zorrilla",
                "+34 1234567",
                "Plain Concepts",
                spain,
                new Address("Madrid", "12345", "Calle Plain", "Barrio San Chinarro"));

            customer2.SetTheCountryReference(spain.Id);
            context.Customers.Add(customer2);

            //Miguel Angel
            var customer3 = CustomerFactory.CreateCustomer(
                "Miguel Angel",
                "Ramos",
                "+1 1234567",
                "Microsoft",
                us,
                new Address("Redmond", "12345", "One Microsoft Way", "Building X"));

            customer3.SetTheCountryReference(us.Id);
            context.Customers.Add(customer3);

            //Eric Evans
            var customer4 = CustomerFactory.CreateCustomer(
                "Eric",
                "Evans",
                "+1 1234567",
                "Domain Language",
                us,
                new Address("City", "12345", "DDD Street", "Building X"));

            customer4.SetTheCountryReference(us.Id);
            context.Customers.Add(customer4);

            ////
            //Bank Accounts

            //Account 001
            var bankAccountNumber001 = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var newBankAccount001    = BankAccountFactory.CreateBankAccount(customer1, bankAccountNumber001);

            newBankAccount001.DepositMoney(Convert.ToDecimal(5000), "Initial Balance");
            context.BankAccounts.Add(newBankAccount001);

            //Account 002
            var bankAccountNumber002 = new BankAccountNumber("1111", "2222", "3333333333", "02");
            var newBankAccount002    = BankAccountFactory.CreateBankAccount(customer2, bankAccountNumber002);

            newBankAccount002.DepositMoney(Convert.ToDecimal(3000), "Initial Balance");
            context.BankAccounts.Add(newBankAccount002);
        }
コード例 #56
0
      public void BankAccountLockSetLocked()
      {
         //Arrange
         var country = new Country("Spain", "es-ES");
         country.GenerateNewIdentity();

         var customer = CustomerFactory.CreateCustomer(
            "Unai",
            "Zorrilla Castro",
            "+3422",
            "company",
            country,
            new Address("city", "zipcode", "AddressLine1", "AddressLine2"));

         var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");

         var bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

         //Act
         bankAccount.Lock();

         //Assert
         Assert.IsTrue(bankAccount.Locked);

      }
コード例 #57
0
      public void PerformBankTransfer()
      {
         //Arrange

         //--> source bank account data
         var sourceId = new Guid("3481009C-A037-49DB-AE05-44FF6DB67DEC");
         var bankAccountNumberSource = new BankAccountNumber("4444", "5555", "3333333333", "02");
         var sourceCustomer = new Customer();
         sourceCustomer.GenerateNewIdentity();

         var source = BankAccountFactory.CreateBankAccount(sourceCustomer, bankAccountNumberSource);
         source.ChangeCurrentIdentity(sourceId);
         source.DepositMoney(1000, "initial");

         var sourceBankAccountDto = new BankAccountDto()
         {
            Id = sourceId,
            BankAccountNumber = source.Iban
         };

         //--> target bank account data
         var targetCustomer = new Customer();
         targetCustomer.GenerateNewIdentity();
         var targetId = new Guid("8A091975-F783-4730-9E03-831E9A9435C1");
         var bankAccountNumberTarget = new BankAccountNumber("1111", "2222", "3333333333", "01");
         var target = BankAccountFactory.CreateBankAccount(targetCustomer, bankAccountNumberTarget);
         target.ChangeCurrentIdentity(targetId);

         var targetBankAccountDto = new BankAccountDto()
         {
            Id = targetId,
            BankAccountNumber = target.Iban
         };

         var accounts = new List<BankAccount>()
         {
            source,
            target
         };

         var bankAccountRepository = new StubIBankAccountRepository();
         bankAccountRepository.GetGuid = (guid) => { return accounts.Where(ba => ba.Id == guid).SingleOrDefault(); };
         bankAccountRepository.UnitOfWorkGet = () =>
         {
            var unitOfWork = new StubIUnitOfWork();
            unitOfWork.Commit = () => { };

            return unitOfWork;
         };

         var customerRepository = new StubICustomerRepository();
         IBankTransferService transferService = new BankTransferService();

         IBankAppService bankingService = new BankAppService(bankAccountRepository, customerRepository, transferService);

         //Act
         bankingService.PerformBankTransfer(sourceBankAccountDto, targetBankAccountDto, 100M);

         //Assert
         Assert.AreEqual(source.Balance, 900);
         Assert.AreEqual(target.Balance, 100);
      }
コード例 #58
0
        public void PerformBankTransfer()
        {
            //Arrange

            //--> source bank account data
            var sourceId = new Guid("3481009C-A037-49DB-AE05-44FF6DB67DEC");
            var bankAccountNumberSource = new BankAccountNumber("4444", "5555", "3333333333", "02");
            var sourceCustomer          = new Customer();

            sourceCustomer.GenerateNewIdentity();

            var source = BankAccountFactory.CreateBankAccount(sourceCustomer, bankAccountNumberSource);

            source.ChangeCurrentIdentity(sourceId);
            source.DepositMoney(1000, "initial");

            var sourceBankAccountDto = new BankAccountDto()
            {
                Id = sourceId,
                BankAccountNumber = source.Iban
            };

            //--> target bank account data
            var targetCustomer = new Customer();

            targetCustomer.GenerateNewIdentity();
            var targetId = new Guid("8A091975-F783-4730-9E03-831E9A9435C1");
            var bankAccountNumberTarget = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var target = BankAccountFactory.CreateBankAccount(targetCustomer, bankAccountNumberTarget);

            target.ChangeCurrentIdentity(targetId);

            var targetBankAccountDto = new BankAccountDto()
            {
                Id = targetId,
                BankAccountNumber = target.Iban
            };

            var accounts = new List <BankAccount>()
            {
                source,
                target
            };

            var bankAccountRepository = new StubIBankAccountRepository();

            bankAccountRepository.GetGuid       = (guid) => { return(accounts.Where(ba => ba.Id == guid).SingleOrDefault()); };
            bankAccountRepository.UnitOfWorkGet = () =>
            {
                var unitOfWork = new StubIUnitOfWork();
                unitOfWork.Commit = () => { };

                return(unitOfWork);
            };

            var customerRepository = new StubICustomerRepository();
            IBankTransferService transferService = new BankTransferService();

            IBankAppService bankingService = new BankAppService(bankAccountRepository, customerRepository, transferService);

            //Act
            bankingService.PerformBankTransfer(sourceBankAccountDto, targetBankAccountDto, 100M);

            //Assert
            Assert.AreEqual(source.Balance, 900);
            Assert.AreEqual(target.Balance, 100);
        }
コード例 #59
0
        public void PerformBankTransfer()
        {
            //Arrange
            var sourceId = new Guid("3481009C-A037-49DB-AE05-44FF6DB67DEC");
            var bankAccountNumberSource = new BankAccountNumber("4444", "5555", "3333333333", "02");

            var source = BankAccountFactory.CreateBankAccount(Guid.NewGuid(), bankAccountNumberSource);
            source.Id = sourceId;
            source.DepositMoney(1000,"initial");

            var sourceBankAccountDTO = new BankAccountDTO()
            {
                Id = sourceId,
                BankAccountNumber = source.Iban
            };

            var targetId = new Guid("8A091975-F783-4730-9E03-831E9A9435C1");
            var bankAccountNumberTarget = new BankAccountNumber("1111", "2222", "3333333333", "01");
            var target = BankAccountFactory.CreateBankAccount(Guid.NewGuid(), bankAccountNumberTarget);
            target.Id = targetId;

            var targetBankAccountDTO = new BankAccountDTO()
            {
                Id = targetId,
                BankAccountNumber = target.Iban
            };

            var accounts = new List<BankAccount>() { source, target };
            var accountsDTO = new List<BankAccountDTO>() { sourceBankAccountDTO, targetBankAccountDTO };

            SIBankAccountRepository bankAccountRepository = new SIBankAccountRepository();
            bankAccountRepository.GetGuid = (guid) =>
            {
                return accounts.Where(a => a.Id == guid).SingleOrDefault();
            };
            bankAccountRepository.UnitOfWorkGet = () =>
            {
                var unitOfWork = new SIUnitOfWork();
                unitOfWork.Commit = () => { };

                return unitOfWork;
            };

            SICustomerRepository customerRepository = new SICustomerRepository();
            IBankTransferService transferService = new BankTransferService();
            ITypeAdapter adapter = PrepareTypeAdapter();

            IBankAppService bankingService = new BankAppService(bankAccountRepository, customerRepository, transferService, adapter);

            //Act

            bankingService.PerformBankTransfer(sourceBankAccountDTO, targetBankAccountDTO, 100M);
        }
コード例 #60
0
        public void BankAccountDepositMaxDecimalThrowOverflowBalance()
        {
            //Arrange

            var bankAccountNumber = new BankAccountNumber("1111", "2222", "3333333333", "01");
            string activityReason = "reason";

            Customer customer = CustomerFactory.CreateCustomer("Unai", "Zorrilla Castro", IdentityGenerator.NewSequentialGuid(), new Address("city", "zipcode", "AddressLine1", "AddressLine2"));
            customer.Id = IdentityGenerator.NewSequentialGuid();

            BankAccount bankAccount = BankAccountFactory.CreateBankAccount(customer, bankAccountNumber);

            bankAccount.DepositMoney(1, activityReason);
            bankAccount.DepositMoney(Decimal.MaxValue, activityReason);
        }