public void MockBasicUsersRepository_When_Get( string[] basicUsersData, int basicUserId, string basicUserPin, string basicUserName, string basicUserSurname, decimal basicUserBankAccountValue, Currency basicUserBankAccountCurrency, string expected) { string result = "OK"; //arrange using (StreamWriter sw = new StreamWriter( (cashDispenserLibraryTestSettings._SystemSettings == PlatformType.Windows) ? "cashDispenserDatabase\\BasicUsers.txt" : "cashDispenserDatabase/BasicUsers.txt", false)) { foreach (var basicUserData in basicUsersData) { sw.WriteLine(basicUserData); } } //act //Connect with database MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); //Get information about respectively basic user BasicUser gotBasicUser = null; try { gotBasicUser = mockBasicUsersRepository.Get(basicUserId: basicUserId); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } //Check got basic user if (result.Equals("OK")) { if ((gotBasicUser._Id != basicUserId) || (!(gotBasicUser._Pin._Value.Equals(basicUserPin))) || (!(gotBasicUser._Name._Value.Equals(basicUserName))) || (!(gotBasicUser._Surname._Value.Equals(basicUserSurname))) || (gotBasicUser._BankAccount.state._Value != basicUserBankAccountValue) || (gotBasicUser._BankAccount.state._Currency != basicUserBankAccountCurrency)) { result = "!!! Issue with get basic user !!!"; } } //assert Assert.AreEqual(expected: expected, actual: result); }
public void MockBasicUsersRepository_When_Remove( string[] basicUsersData, int basicUserId, string expected) { string result = "OK"; //arrange using (StreamWriter sw = new StreamWriter( (cashDispenserLibraryTestSettings._SystemSettings == PlatformType.Windows) ? "cashDispenserDatabase\\BasicUsers.txt" : "cashDispenserDatabase/BasicUsers.txt", false)) { foreach (var basicUserData in basicUsersData) { sw.WriteLine(basicUserData); } } //act //Connect with database MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); //Remove basic user try { mockBasicUsersRepository.Remove(basicUserId: basicUserId); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } //Check remove's result if (result.Equals("OK")) { try { mockBasicUsersRepository.Get(basicUserId: basicUserId); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } } //assert Assert.AreEqual(expected: expected, actual: result); }
public void BasicUser_When_Add_Money( decimal addCurrencyRate, decimal addValue, Currency addCurrency, string expected) { string result = "OK"; //arrange BasicUser basicUser = null; //Init database initData(); //Init basic users database using (StreamWriter sw = new StreamWriter( "cashDispenserDatabase/BasicUsers.txt", false)) { basicUser = new BasicUser( id: 0, pin: new PinVAL(value: "1111"), name: new NameVAL(value: "Imię"), surname: new SurnameVAL(value: "Nazwisko"), bankAccount: new BankAccount( state: new MoneyVAL( value: PhysicalMoney_txt, currency: Currency.PLN))); sw.WriteLine($"0;1111;Imię;Nazwisko;{PhysicalMoney_txt.ToString(new CultureInfo("en-US"))};0"); } //Get respectively basic user's from database try { MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); basicUser = mockBasicUsersRepository.Get( basicUserId: 0); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } //act if (result.Equals("OK")) { //Add money try { basicUser._BankAccount.AddMoney(currencyRate: addCurrencyRate, money: new MoneyVAL(value: addValue, currency: addCurrency), basicUser); } catch (MoneyVAL_Exception m_e) { result = m_e.What(); } catch (BankAccount_Exception ba_e) { result = ba_e.What(); } catch (Exception ex) { result = "!!! Issue with open file !!!"; } if (result.Equals("OK")) { //---Check physical money repository state--- //Connect with database MockPhysicalMoneyRepository mockPhysicalMoneyRepository = new MockPhysicalMoneyRepository( cashDispenserLibraryTestSettings._SystemSettings); //Get physical money state PhysicalMoneyVAL physicalMoneyState = null; try { physicalMoneyState = mockPhysicalMoneyRepository.GetInCurrency( currencyRate: 1.0M, currency: Currency.PLN); } catch (MockPhysicalMoneyRepository_Exception mpmr_e) { result = mpmr_e.What(); } catch (Exception ex) { result = "!!! Issue with open file !!!"; } if (result.Equals("OK")) { //Check database value if ((physicalMoneyState._Value - (addValue * addCurrencyRate)) != PhysicalMoney_txt) { result = "Bad database value"; } if (physicalMoneyState._Currency != Currency.PLN) { result = "Bad database currency"; } } } } //assert Assert.AreEqual(expected: expected, actual: result); }
public void BankAccount_When_Add_Money( string[] basicUsersData, decimal addCurrencyRate, decimal addValue, Currency addCurrency, int basicUserId, string expected) { string result = "OK"; //arrange BankAccount bankAccount = null; BasicUser basicUser = null; decimal beginBasicUserBankAccountState = -1; //Init database initData(); //Init basic users database using (StreamWriter sw = new StreamWriter( "cashDispenserDatabase/BasicUsers.txt", false)) { foreach (var basicUserData in basicUsersData) { sw.WriteLine(basicUserData); } } //Get respectively basic user's from database try { MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); basicUser = mockBasicUsersRepository.Get( basicUserId: basicUserId); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } //Get basic user's begin account state if (result.Equals("OK")) { beginBasicUserBankAccountState = basicUser._BankAccount.state._Value; } if (result.Equals("OK")) { //Create bank account base on respectively basic user try { bankAccount = new BankAccount(state: new MoneyVAL( value: basicUser._BankAccount.state._Value, currency: Currency.PLN)); } catch (MoneyVAL_Exception mv_e) { result = mv_e.What(); } catch (BankAccount_Exception ba_e) { ba_e.What(); } //act if (result.Equals("OK")) { //Add money try { bankAccount.AddMoney(currencyRate: addCurrencyRate, money: new MoneyVAL(value: addValue, currency: addCurrency), basicUser); } catch (MoneyVAL_Exception m_e) { result = m_e.What(); } catch (BankAccount_Exception ba_e) { result = ba_e.What(); } catch (Exception ex) { result = "!!! Issue with open file !!!"; } if (result.Equals("OK")) { //---Check physical money repository state--- //Connect with database MockPhysicalMoneyRepository mockPhysicalMoneyRepository = new MockPhysicalMoneyRepository( cashDispenserLibraryTestSettings._SystemSettings); //Get physical money state PhysicalMoneyVAL physicalMoneyState = null; try { physicalMoneyState = mockPhysicalMoneyRepository.GetInCurrency( currencyRate: 1.0M, currency: Currency.PLN); } catch (MockPhysicalMoneyRepository_Exception mpmr_e) { result = mpmr_e.What(); } catch (Exception ex) { result = "!!! Issue with open file !!!"; } if (result.Equals("OK")) { //Check database value if ((physicalMoneyState._Value - (addValue * addCurrencyRate)) != PhysicalMoney_txt) { result = "Bad database value"; } //Check database currency if (physicalMoneyState._Currency != Currency.PLN) { result = "Bad database currency"; } //--- Check basic user's bank account state in //repository state --- //Connect with database try { MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); basicUser = mockBasicUsersRepository.Get( basicUserId: basicUserId); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } //Check basic user money's state if (result.Equals("OK")) { if (Math.Abs((basicUser._BankAccount.state._Value - addValue * addCurrencyRate) - beginBasicUserBankAccountState) > 0.002M) { result = "Bad basic user money database result value"; } if (basicUser._BankAccount.state._Currency != Currency.PLN) { result = "Bad basic user money database result currency"; } } } } } //assert Assert.AreEqual(expected: expected, actual: result); } }
public MoneyVAL TakeOutMoney( decimal currencyRate, MoneyVAL money, BasicUser user) { //Validate currency rate if (currencyRate <= 0.0M) { throw new BankAccount_Exception( BankAccount_ExceptionType.BadCurrencyRate); } //Core currency case if (money._Currency == Currency.PLN) { //Take out money from account if (money._Value <= state._Value) { //Arrange bank account database connection MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( platformType: SystemSettings._PlatformType); //Update Basic user account state var basicUser = mockBasicUsersRepository.Get( basicUserId: user._Id); basicUser._BankAccount.state.ChangeMoney( moneyVAL: new MoneyVAL( value: (basicUser._BankAccount.state._Value - money._Value), currency: Currency.PLN)); //Save changes mockBasicUsersRepository.Update(basicUser); //Arrange physical money database connection MockPhysicalMoneyRepository mockPhysicalMoneyRepository = new MockPhysicalMoneyRepository( SystemSettings._PlatformType); //Update bank account state state.ChangeMoney(new MoneyVAL( value: (state._Value - money._Value), currency: Currency.PLN)); //Update physical money state PhysicalMoneyVAL mockPhysicalMoney = mockPhysicalMoneyRepository.GetInCurrency( currencyRate: currencyRate, currency: Currency.PLN); mockPhysicalMoneyRepository.UpdateInCurrency( currencyRate: currencyRate, new PhysicalMoneyVAL( value: (mockPhysicalMoney._Value - money._Value), currency: Currency.PLN)); //Take out money return(money); } //To little money to take out money case else { throw new BankAccount_Exception( BankAccount_ExceptionType.TooLittleMoney); } } //Others currency case else { //Take out money from account if (money._Value <= (state._Value / currencyRate)) { //Arrange bank account database connection MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( platformType: SystemSettings._PlatformType); //Update Basic user account state var basicUser = mockBasicUsersRepository.Get( basicUserId: user._Id); basicUser._BankAccount.state.ChangeMoney( moneyVAL: new MoneyVAL( value: (basicUser._BankAccount.state._Value - (money._Value * currencyRate)), currency: Currency.PLN)); //Save changes mockBasicUsersRepository.Update(basicUser); //Arrange physical money database connection MockPhysicalMoneyRepository mockPhysicalMoneyRepository = new MockPhysicalMoneyRepository(SystemSettings._PlatformType); //Update bank account state state.ChangeMoney(new MoneyVAL( value: (state._Value - (money._Value * currencyRate)), currency: Currency.PLN)); //Update physical money state PhysicalMoneyVAL mockPhysicalMoney = mockPhysicalMoneyRepository.GetInCurrency( currencyRate: currencyRate, currency: money._Currency); mockPhysicalMoneyRepository.UpdateInCurrency( currencyRate: currencyRate, new PhysicalMoneyVAL( value: (mockPhysicalMoney._Value - money._Value), currency: money._Currency)); //Take out money return(money); } //To little money to take out money case else { throw new BankAccount_Exception( BankAccount_ExceptionType.TooLittleMoney); } } }
public void MockBasicUsersRepository_When_Add( string[] basicUsersData, int basicUserId, string basicUserPin, string basicUserName, string basicUserSurname, decimal basicUserBankAccountValue, Currency basicUserBankAccountCurrency, string expected) { string result = "OK"; //Set id counter if (basicUsersData.Length > 0) { User._Id_counter = ((basicUsersData.Last()[0] - 48) + 1); } else { User._Id_counter = 0; } //arrange using (StreamWriter sw = new StreamWriter( (cashDispenserLibraryTestSettings._SystemSettings == PlatformType.Windows) ? "cashDispenserDatabase\\BasicUsers.txt" : "cashDispenserDatabase/BasicUsers.txt", false)) { foreach (var basicUserData in basicUsersData) { sw.WriteLine(basicUserData); } } //act //Connect with database MockBasicUsersRepository mockBasicUsersRepository = new MockBasicUsersRepository( cashDispenserLibraryTestSettings._SystemSettings); try { mockBasicUsersRepository.Add(basicUser: new BasicUser( id: basicUserId, pin: new PinVAL(value: basicUserPin), name: new NameVAL(value: basicUserName), surname: new SurnameVAL(value: basicUserSurname), bankAccount: new BankAccount( state: new MoneyVAL( value: basicUserBankAccountValue, currency: basicUserBankAccountCurrency)))); } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } if (result.Equals("OK")) { //Check add result BasicUser added_basicUser = null; try { if (basicUserId >= 0) { added_basicUser = mockBasicUsersRepository.Get( basicUserId: basicUserId); } else { added_basicUser = mockBasicUsersRepository.Get( basicUserId: (User._Id_counter - 1)); } } catch (MockBasicUsersRepository_Exception mbur_e) { result = mbur_e.What(); } if (result.Equals("OK")) { if ((((basicUserId >= 0) && (added_basicUser._Id != basicUserId)) || ((basicUserId < 0) && (added_basicUser._Id != (User._Id_counter - 1)))) || (!(added_basicUser._Pin._Value.Equals(basicUserPin))) || (!(added_basicUser._Name._Value.Equals(basicUserName))) || (!(added_basicUser._Surname._Value.Equals(basicUserSurname))) || (added_basicUser._BankAccount.state._Value != basicUserBankAccountValue) || (added_basicUser._BankAccount.state._Currency != basicUserBankAccountCurrency)) { result = "!!! Issue with get basic user !!!"; } } } //assert Assert.AreEqual(expected: expected, actual: result); }