示例#1
0
        public async void Store_Should_Return_Status_201()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var nubank = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(nubank);

            await _context.SaveChangesAsync();

            var itau = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(itau);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var viewModel = new StoreTransferViewModel
            {
                Description = "Save money",
                Date        = new DateTime(year: 2019, month: 12, day: 25),
                Value       = 25000,
                ToId        = nubank.Id,
                FromId      = itau.Id
            };

            var result = await _controller.Store(viewModel);

            Assert.IsAssignableFrom <CreatedResult>(result);
        }
示例#2
0
        public async void Show_Shoud_Monthly_Revenue_Equal_To_280000_When_The_Month_Has_One_A_Revenue_With_The_Value_Equal_To_280000()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            var pay = await Factory.Revenue(accountId : account.Id, value : 280000, date : new DateTime(year: 2019, month: 12, day: 15));

            await _context.Revenues.AddAsync(pay);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var start = new DateTime(year: 2019, month: 12, day: 1);

            var end = new DateTime(year: 2019, month: 12, day: 31);

            var result = await _controller.Show(start, end);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            Assert.Equal(280000, ((ResponseViewModel <int>)response.Value).Data);
        }
        public async void Destroy_Should_Not_Exist_Revenue_Into_Database()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            var revenue = await Factory.Revenue(accountId : account.Id);

            await _context.Revenues.AddAsync(revenue);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            await _controller.Destroy(account.Id, revenue.Id);

            Assert.Empty(_context.Revenues);
        }
示例#4
0
        public async void Show_Should_Current_Balance_Equal_To_280000_When_There_Is_A_Account_With_A_Revenue_With_The_Value_Equal_To_280000()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            var pay = await Factory.Revenue(accountId : account.Id, value : 280000);

            await _context.Revenues.AddAsync(pay);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var result = await _controller.Show();

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            Assert.Equal(280000, ((ResponseViewModel <int>)response.Value).Data);
        }
        public async void Show_Should_Return_Revenue()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            var revenue = await Factory.Revenue(accountId : account.Id);

            await _context.Revenues.AddAsync(revenue);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var result = await _controller.Show(account.Id, revenue.Id);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            Assert.Equal(((ResponseViewModel <Revenue>)response.Value).Data.Id, revenue.Id);
        }
示例#6
0
        public async void Show_Should_Return_Status_200()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            var pay = await Factory.Revenue(accountId : account.Id, value : 280000);

            await _context.Revenues.AddAsync(pay);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var start = new DateTime(year: 2019, month: 12, day: 1);

            var end = new DateTime(year: 2019, month: 12, day: 31);

            var result = await _controller.Show(start, end);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }
示例#7
0
        public async void Update_Should_Return_Status_200()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new UpdateAccountViewModel
            {
                Name = "Itaú",
                Type = "Poupança"
            };

            var result = await _controller.Update(account.Id, viewModel);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }
        public async void Store_Should_Return_Status_201()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new StoreRevenueViewModel
            {
                Description = "Supermarket",
                Value       = 500,
                Date        = DateTime.Now.AddDays(-2)
            };

            var result = await _controller.Store(account.Id, viewModel);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }
        public async void Destroy_Should_Return_Status_200()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            var revenue = await Factory.Revenue(accountId : account.Id);

            await _context.Revenues.AddAsync(revenue);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var result = await _controller.Destroy(account.Id, revenue.Id);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }
示例#10
0
        public async void Index_Should_Return_A_List_Of_Account()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var result = await _controller.Index();

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            Assert.Collection(((ResponseViewModel <List <Account> >)response.Value).Data,
                              (it) =>
            {
                Assert.Equal(account.Id, it.Id);
            });
        }
示例#11
0
        public async void Index_Should_Return_Two_Transitions_When_The_Current_Month_Has_An_Output_And_And_Input()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var nubank = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(nubank);

            await _context.SaveChangesAsync();

            var itau = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(itau);

            await _context.SaveChangesAsync();

            var output = await Factory.Output(toId : nubank.Id, fromId : itau.Id, date : new DateTime(year: 2019, month: 12, day: 25));

            await _context.Outputs.AddAsync(output);

            await _context.SaveChangesAsync();

            var input = await Factory.Input(toId : nubank.Id, fromId : itau.Id, date : new DateTime(year: 2019, month: 12, day: 24));

            await _context.Inputs.AddAsync(input);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var start = new DateTime(year: 2019, month: 12, day: 1);

            var end = new DateTime(year: 2019, month: 12, day: 31);

            var result = await _controller.Index(start, end);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            var transitions = ((ResponseViewModel <IList <Transition> >)response.Value).Data;

            Assert.Collection(transitions,
                              (it) =>
            {
                Assert.Equal(output.Description, it.Description);
                Assert.Equal(output.Value, it.Value);
                Assert.Equal(output.Date, it.Date);
            },
                              (it) =>
            {
                Assert.Equal(input.Description, it.Description);
                Assert.Equal(input.Value, it.Value);
                Assert.Equal(input.Date, it.Date);
            });
        }
示例#12
0
        public async void Index_Should_Return_Only_One_Transition_When_The_Month_Has_One_Transition_And_Another_Month_Has_One_Transition()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            var pay = await Factory.Revenue(accountId : account.Id, date : new DateTime(year: 2019, month: 12, day: 1));

            await _context.Revenues.AddAsync(pay);

            await _context.SaveChangesAsync();

            var gym = await Factory.Expense(accountId : account.Id, date : new DateTime(year: 2020, month: 1, day: 1));

            await _context.Expenses.AddAsync(gym);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var begin = new DateTime(year: 2019, month: 12, day: 1);

            var end = new DateTime(year: 2019, month: 12, day: 31);

            var result = await _controller.Index(begin, end);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            var transitions = ((ResponseViewModel <IList <Transition> >)response.Value).Data;

            Assert.Collection(transitions,
                              (it) =>
            {
                Assert.Equal(pay.Id, it.Id);
                Assert.Equal(pay.Description, it.Description);
                Assert.Equal(pay.Value, it.Value);
                Assert.Equal(pay.Date, it.Date);
            });
        }
示例#13
0
        public async void Show_Should_Return_Output_With_Its_Input()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var itau = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(itau);

            await _context.SaveChangesAsync();

            var nubank = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(nubank);

            await _context.SaveChangesAsync();

            var output = await Factory.Output(toId : nubank.Id, fromId : itau.Id);

            await _context.Outputs.AddAsync(output);

            await _context.SaveChangesAsync();

            var input = await Factory.Input(toId : nubank.Id, fromId : itau.Id);

            await _context.Inputs.AddAsync(input);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var result = await _controller.Show(output.Id);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            var data = ((ResponseViewModel <ShowTransferViewModel>)response.Value).Data;

            Assert.Equal(output.Description, data.Output.Description);
            Assert.Equal(output.Date, data.Output.Date);
            Assert.Equal(output.Value, data.Output.Value);
            Assert.Equal(output.ToId, data.Output.ToId);
            Assert.Equal(output.FromId, data.Output.FromId);

            Assert.Equal(input.Description, data.Input.Description);
            Assert.Equal(input.Date, data.Input.Date);
            Assert.Equal(input.Value, data.Input.Value);
            Assert.Equal(input.ToId, data.Input.ToId);
            Assert.Equal(input.FromId, data.Input.FromId);
        }
示例#14
0
        public async void Show_Should_Monthly_Balance_Just_Take_The_Month_Transactions()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            var pay = await Factory.Revenue(accountId : account.Id, value : 100000, date : new DateTime(year: 2019, month: 12, day: 15));

            await _context.Revenues.AddAsync(pay);

            await _context.SaveChangesAsync();

            var xbox = await Factory.Expense(accountId : account.Id, value : -50000, date : new DateTime(year: 2019, month: 12, day: 18));

            await _context.Expenses.AddAsync(xbox);

            await _context.SaveChangesAsync();

            var laptop = await Factory.Expense(accountId : account.Id, value : -50000, date : new DateTime(year: 2019, month: 11, day: 1));

            await _context.Expenses.AddAsync(laptop);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var start = new DateTime(year: 2019, month: 12, day: 1);

            var end = new DateTime(year: 2019, month: 12, day: 31);

            var result = await _controller.Show(start, end);

            var response = Assert.IsAssignableFrom <OkObjectResult>(result);

            var monthlyBalance = ((ResponseViewModel <int>)response.Value).Data;

            Assert.Equal(50000, monthlyBalance);
        }
示例#15
0
        public async void Store_Should_Have_An_Output()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var nubank = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(nubank);

            await _context.SaveChangesAsync();

            var itau = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(itau);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var viewModel = new StoreTransferViewModel
            {
                Description = "Save money",
                Date        = new DateTime(year: 2019, month: 12, day: 25),
                Value       = 25000,
                ToId        = nubank.Id,
                FromId      = itau.Id
            };

            var result = await _controller.Store(viewModel);

            Assert.Collection(_context.Outputs,
                              (it) =>
            {
                Assert.Equal(viewModel.Description, it.Description);
                Assert.Equal(viewModel.Date, it.Date);
                Assert.Equal(-viewModel.Value, it.Value);
                Assert.Equal(viewModel.ToId, it.ToId);
                Assert.Equal(viewModel.FromId, it.FromId);
            });
        }
        public async void Update_Should_Revenue_Has_Been_Updated()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            var revenue = await Factory.Revenue(accountId : account.Id);

            await _context.Revenues.AddAsync(revenue);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new UpdateRevenueViewModel
            {
                Description = "Supermarket",
                Value       = 5000,
                Date        = DateTime.Now.AddDays(-1)
            };

            await _controller.Update(account.Id, revenue.Id, viewModel);

            await _context.Entry(revenue).ReloadAsync();

            Assert.Equal(viewModel.Description, revenue.Description);
            Assert.Equal(viewModel.Value, revenue.Value);
            Assert.Equal(viewModel.Date, revenue.Date);
        }
        public async void Store_Should_Exist_Revenue_Into_Database()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new StoreRevenueViewModel
            {
                Description = "Supermarket",
                Value       = 500,
                Date        = DateTime.Now.AddDays(-2)
            };

            await _controller.Store(account.Id, viewModel);

            Assert.Collection(_context.Revenues,
                              (it) =>
            {
                Assert.Equal(viewModel.Description, it.Description);
                Assert.Equal(viewModel.Value, it.Value);
                Assert.Equal(viewModel.Date, it.Date);
            });
        }
示例#18
0
        public async void Update_Should_Account_Has_Been_Updated()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new UpdateAccountViewModel
            {
                Name = "Itaú",
                Type = "Corrente"
            };

            _context.Entry(account).Reload();

            await _controller.Update(account.Id, viewModel);

            Assert.Equal(viewModel.Name, account.Name);
            Assert.Equal(viewModel.Type, account.Type);
        }
        public async void Update_Should_Return_Status_200()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            var account = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(account);

            var expense = await Factory.Expense(accountId : account.Id);

            await _context.Expenses.AddAsync(expense);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = new ClaimsPrincipal
                                         (
                new ClaimsIdentity
                (
                    new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
            }
                )
                                         );

            var viewModel = new UpdateExpenseViewModel
            {
                Description = "Nintendo Switch",
                Value       = 180000,
                Date        = DateTime.Now.AddDays(-1)
            };

            var result = await _controller.Update(account.Id, expense.Id, viewModel);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }
示例#20
0
        public async void Show_Should_Return_Status_200()
        {
            var user = await Factory.User();

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            var itau = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(itau);

            await _context.SaveChangesAsync();

            var nubank = await Factory.Account(userId : user.Id);

            await _context.Accounts.AddAsync(nubank);

            await _context.SaveChangesAsync();

            var output = await Factory.Output(toId : nubank.Id, fromId : itau.Id);

            await _context.Outputs.AddAsync(output);

            await _context.SaveChangesAsync();

            var input = await Factory.Input(toId : nubank.Id, fromId : itau.Id);

            await _context.Inputs.AddAsync(input);

            await _context.SaveChangesAsync();

            _accessor.HttpContext.User = await Factory.ClaimsPrincipal(userId : user.Id);

            var result = await _controller.Show(output.Id);

            Assert.IsAssignableFrom <OkObjectResult>(result);
        }