public async Task ReturnCollectionOfAllTransaction_WhenValidParametersArePassed()
        {
            var contextOptions = new DbContextOptionsBuilder <BedeSlotsDbContext>()
                                 .UseInMemoryDatabase(databaseName: "ReturnCollectionOfAllTransaction_WhenValidParametersArePassed")
                                 .UseInternalServiceProvider(serviceProvider).Options;

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                bedeSlotsContext.Transactions.Add(new Transaction()
                {
                    User = new User()
                    {
                        Email = "test"
                    }
                });
                bedeSlotsContext.SaveChanges();
            }
            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                var currencyConverterMock = new Mock <ICurrencyConverterService>();
                var sut    = new Data.TransactionService(bedeSlotsContext, currencyConverterMock.Object);
                var result = sut.GetAllTransactions();

                Assert.IsTrue(await result.CountAsync() == 1);
            }
        }
Example #2
0
        public async Task AddTransactionCorrectly_WhenValidParamentersArePassed()
        {
            var contextOptions = new DbContextOptionsBuilder <BedeSlotsDbContext>()
                                 .UseInMemoryDatabase(databaseName: "AddTransactionCorrectly_WhenValidParamentersArePassed")
                                 .UseInternalServiceProvider(serviceProvider).Options;

            var validTransactionType = TransactionType.Deposit;

            var user = new User();

            string description = "test";

            int validAmount = 100;

            var baseCurrency = Currency.USD;

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                var currencyConverterMock = new Mock <ICurrencyConverterService>();
                var sut = new Data.TransactionService(bedeSlotsContext, currencyConverterMock.Object);
                currencyConverterMock.Setup((x) => x.ConvertToBaseCurrencyAsync(10, Currency.USD)).ReturnsAsync(10);

                await sut.AddTransactionAsync(validTransactionType, user.Id, description, validAmount, baseCurrency);
            }

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                Assert.IsTrue(await bedeSlotsContext.Transactions.CountAsync() == 1);
                Assert.IsTrue(await bedeSlotsContext.Transactions.AnyAsync(x => x.Description == description));
            }
        }
        public async Task ReturnCollectionOfUserTransactions_WhenValidUserIdIsPassed()
        {
            var serviceProvider = new ServiceCollection().AddEntityFrameworkInMemoryDatabase().BuildServiceProvider();

            var contextOptions = new DbContextOptionsBuilder <BedeSlotsDbContext>()
                                 .UseInMemoryDatabase(databaseName: "ReturnCollectionOfUserTransactions_WhenValidUserIdIsPassed")
                                 .UseInternalServiceProvider(serviceProvider).Options;

            var user = new User()
            {
                Email = "test"
            };
            var otherUser = new User();

            var transaction = new Transaction()
            {
                User   = user,
                UserId = user.Id,
                Type   = TransactionType.Deposit
            };

            var secondTransaction = new Transaction()
            {
                User   = user,
                UserId = user.Id,
                Type   = TransactionType.Deposit
            };

            var thirdTransaction = new Transaction()
            {
                User   = otherUser,
                UserId = otherUser.Id,
                Type   = TransactionType.Deposit
            };

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                await bedeSlotsContext.Users.AddAsync(user);

                await bedeSlotsContext.Users.AddAsync(otherUser);

                await bedeSlotsContext.Transactions.AddAsync(transaction);

                await bedeSlotsContext.Transactions.AddAsync(secondTransaction);

                await bedeSlotsContext.Transactions.AddAsync(thirdTransaction);

                await bedeSlotsContext.SaveChangesAsync();
            }

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                var currencyConverterMock = new Mock <ICurrencyConverterService>();
                var sut    = new Data.TransactionService(bedeSlotsContext, currencyConverterMock.Object);
                var result = sut.GetUserTransactionsAsync(user.Id);

                Assert.IsTrue(await result.CountAsync() == 2);
            }
        }
Example #4
0
        public void InitializeCorrectly_WhenValidParametersArePassed()
        {
            var contextOptions = new DbContextOptionsBuilder <BedeSlotsDbContext>()
                                 .UseInMemoryDatabase(databaseName: "InitializeCorrectly_WhenValidParametersArePassed")
                                 .UseInternalServiceProvider(serviceProvider).Options;

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                var currencyConverterMock = new Mock <ICurrencyConverterService>();
                var sut = new Data.TransactionService(bedeSlotsContext, currencyConverterMock.Object);

                Assert.IsInstanceOfType(sut, typeof(Data.TransactionService));
            }
        }
Example #5
0
        public async Task ThrowServiceException_WhenUserIdParameterIsNull()
        {
            var contextOptions = new DbContextOptionsBuilder <BedeSlotsDbContext>()
                                 .UseInMemoryDatabase(databaseName: "ThrowServiceException_WhenUserIdParameterIsNull")
                                 .UseInternalServiceProvider(serviceProvider).Options;

            var validTransactionType = TransactionType.Deposit;

            string description = "test";

            int validAmount = 100;

            var baseCurrency = Currency.USD;

            using (var bedeSlotsContext = new BedeSlotsDbContext(contextOptions))
            {
                var currencyConverterMock = new Mock <ICurrencyConverterService>();
                var sut = new Data.TransactionService(bedeSlotsContext, currencyConverterMock.Object);

                await Assert.ThrowsExceptionAsync <ServiceException>(async() => await sut.AddTransactionAsync(validTransactionType, null, description, validAmount, baseCurrency));
            }
        }