public async Task ItAddManyNumbers()
        {
            Mock <IRepository <Operation> > repository = new Mock <IRepository <Operation> >();
            OperationService operationService          = new OperationService(repository.Object);
            Operation        result = await operationService.Add(null, new List <double>() { 1, 2, 3 });

            Assert.Equal(OperationType.Adition, result.OperationType);
            Assert.Equal(6, result.Result);
        }
        public async Task ItSaveOperationWhenIdPresent()
        {
            List <Operation> db = new List <Operation>();
            Mock <IRepository <Operation> > repository = new Mock <IRepository <Operation> >();

            repository.Setup(m => m.UpsertOneAsync(It.IsAny <Operation>())).Callback((Operation o) => db.Add(o));
            OperationService operationService = new OperationService(repository.Object);
            await operationService.Add(1, new List <double>() { 1, 2, 3 });

            Operation existing = db[0];

            Assert.Equal(1, existing.Id);
            Assert.Equal(OperationType.Adition, existing.OperationType);
            Assert.Equal(6, existing.Result);
        }
示例#3
0
        public void Add_Operation_When_Everything_Is_Correct_Should_Add_Operation_And_Modifiy_Balances()
        {
            var dbName          = DataBaseHelper.Instance.NewDataBase();
            var user            = DataBaseHelper.Instance.UseNewUser(dbName);
            var bankAccountType = DataBaseHelper.Instance.UseNewBankAccountType(dbName);
            var bankAccount     = DataBaseHelper.Instance.UseNewBankAccount(dbName, user.Id, bankAccountType.Id);
            var operationType   = DataBaseHelper.Instance.UseNewOperationType(dbName, bankAccount.Id);

            var operationService = new OperationService();

            var expectedDelta         = 452.08m;
            var expectedOperationDate = DateTime.Now;
            var expectedWording       = Guid.NewGuid().ToString();

            using (var context = DataBaseHelper.Instance.CreateContext(dbName))
            {
                operationService.Add(context, user.UserName, new CreateOperationDto()
                {
                    Amount          = expectedDelta,
                    BankAccountId   = bankAccount.Id,
                    OperationDate   = expectedOperationDate,
                    OperationTypeId = operationType.Id,
                    Wording         = expectedWording
                });
            }

            using (var context = DataBaseHelper.Instance.CreateContext(dbName))
            {
                var bankAccountFromDb = context.BankAccounts.SingleOrDefault(ba => ba.Id.Equals(bankAccount.Id));

                Assert.NotNull(bankAccountFromDb);
                Assert.Equal(bankAccount.Balance + expectedDelta, bankAccountFromDb.Balance);
                Assert.Equal(bankAccount.ActualBalance, bankAccountFromDb.ActualBalance);

                var operationFromDb = context.Operations.SingleOrDefault(o =>
                                                                         o.BankAccountId.Equals(bankAccount.Id) &&
                                                                         o.OperationDate.Equals(expectedOperationDate));

                Assert.NotNull(operationFromDb);
                Assert.Equal(operationFromDb.Amount, expectedDelta);
                Assert.Equal(operationFromDb.OperationDate, expectedOperationDate);
                Assert.Equal(operationFromDb.OperationTypeId, operationType.Id);
                Assert.Equal(operationFromDb.Wording, expectedWording);
                Assert.False(operationFromDb.IsClosed);
                Assert.False(operationFromDb.IsTransfert);
            }
        }
示例#4
0
        public void Add_Operation_With_Unknow_Bank_Account_Should_Throw_DaGetNotFoundException()
        {
            var dbName          = DataBaseHelper.Instance.NewDataBase();
            var user            = DataBaseHelper.Instance.UseNewUser(dbName);
            var bankAccountType = DataBaseHelper.Instance.UseNewBankAccountType(dbName);
            var bankAccount     = DataBaseHelper.Instance.UseNewBankAccount(dbName, user.Id, bankAccountType.Id);
            var operationType   = DataBaseHelper.Instance.UseNewOperationType(dbName, bankAccount.Id);

            var operationService = new OperationService();

            using (var context = DataBaseHelper.Instance.CreateContext(dbName))
            {
                Assert.Throws <DaGetNotFoundException>(() => operationService.Add(context, user.UserName, new CreateOperationDto()
                {
                    Amount          = 10m,
                    BankAccountId   = Guid.NewGuid(),
                    OperationDate   = DateTime.Now,
                    OperationTypeId = operationType.Id,
                    Wording         = Guid.NewGuid().ToString()
                }));
            }
        }
示例#5
0
        public void Add_Operation_Without_Right_To_Write_To_Bank_Account_Should_Throw_DaGetUnauthorizedException()
        {
            var dbName          = DataBaseHelper.Instance.NewDataBase();
            var user            = DataBaseHelper.Instance.UseNewUser(dbName);
            var secondUser      = DataBaseHelper.Instance.UseNewUser(dbName);
            var bankAccountType = DataBaseHelper.Instance.UseNewBankAccountType(dbName);
            var bankAccount     = DataBaseHelper.Instance.UseNewBankAccount(dbName, user.Id, bankAccountType.Id);
            var operationType   = DataBaseHelper.Instance.UseNewOperationType(dbName, bankAccount.Id);
            var userBankAccount = DataBaseHelper.Instance.UseNewUserBankAccount(dbName, secondUser.Id, bankAccount.Id, false, true);

            var operationService = new OperationService();

            using (var context = DataBaseHelper.Instance.CreateContext(dbName))
            {
                Assert.Throws <DaGetUnauthorizedException>(() => operationService.Add(context, secondUser.UserName, new CreateOperationDto()
                {
                    Amount          = 10m,
                    BankAccountId   = bankAccount.Id,
                    OperationDate   = DateTime.Now,
                    OperationTypeId = operationType.Id,
                    Wording         = Guid.NewGuid().ToString()
                }));
            }
        }