public async Task Handle_ExistingAccount_UpdatesName()
        {
            var account = new Account
            {
                UserId = "#user-id"
            };

            _entityTables.AddAccounts(account);

            await _updateAccountCommandHandler.Handle(
                new UpdateAccountCommand
            {
                Id       = account.Id,
                Name     = "#Test-Name-Updated",
                Hint     = account.Hints.Single().Hint,
                Notes    = account.Notes,
                IsPinned = account.IsPinned
            },
                default
                );

            _entityTables.AssertAccounts(new Account(account)
            {
                Name = "#Test-Name-Updated"
            });
        }
Exemple #2
0
        public async Task Handle_WhenAccountExistAndIsDeleted_DeletesItFromDatabase()
        {
            var account = new Account
            {
                UserId    = "#user-id",
                Id        = "#account-id",
                Hints     = Array.Empty <AccountHint>(),
                IsDeleted = true
            };

            _entityTables.AddAccounts(account);

            await _moveAccountToBinCommandHandler.Handle(new DeleteAccountCommand { Id = "#account-id" }, default);

            _entityTables.AssertAccounts(Enumerable.Empty <Account>());
        }
Exemple #3
0
        public async Task Handle_WhenAccountExist_MarksItAsDeleted()
        {
            var account = new Account
            {
                UserId = "#user-id",
                Id     = "#account-id"
            };

            _entityTables.AddAccounts(account);

            await _moveAccountToBinCommandHandler.Handle(new MoveAccountToBinCommand { Id = "#account-id" }, default);

            _entityTables.AssertAccounts(new Account(account)
            {
                IsDeleted = true
            });
        }
        public async Task Handle_WhenAccountHintHasDateSet_UpdatesTheHintDate()
        {
            var now     = DateTime.UtcNow;
            var account = new Account
            {
                UserId = "#user-id",
                Id     = "#account-id",
                Hints  = new[]
                {
                    new AccountHint
                    {
                        Id        = "#hint-id",
                        DateAdded = DateTime.UtcNow.AddDays(-1)
                    }
                }
            };

            _entityTables.AddAccounts(account);

            await _updateAccountHintCommandHandler.Handle(
                new UpdateAccountHintCommand
            {
                AccountId = "#account-id",
                HintId    = "#hint-id",
                DateAdded = now
            },
                default
                );

            _entityTables.AssertAccounts(new Account(account)
            {
                Hints = new[]
                {
                    new AccountHint(account.Hints.Single())
                    {
                        DateAdded = now
                    }
                }
            });
        }
Exemple #5
0
        public async Task Handle_NewAccount_InsertsAccountEntity()
        {
            var accountId = await _createAccountCommandHandler.Handle(
                new AddAccountCommand
            {
                Name     = "#Test-Name",
                Hint     = "#Test-Hint",
                Notes    = "#Test-Notes",
                IsPinned = true
            },
                default
                );

            Assert.Equal(3, _entityTables.Accounts.ExecuteQuery(new TableQuery <AccountEntity>()).Count());
            var accountHintEntity = Assert.Single(_entityTables.Accounts.ExecuteQuery(
                                                      new TableQuery <AccountHintEntity>()
                                                      .Where(TableQuery.GenerateFilterCondition(nameof(AccountHintEntity.AccountId), QueryComparisons.Equal, accountId))
                                                      ));

            _entityTables.AssertAccounts(new Account
            {
                UserId = "#user-id",
                Id     = accountId,
                Name   = "#Test-Name",
                Hints  = new[]
                {
                    new AccountHint
                    {
                        Id        = accountHintEntity.HintId,
                        Hint      = "#Test-Hint",
                        DateAdded = accountHintEntity.DateAdded.Value
                    }
                },
                Notes    = "#Test-Notes",
                IsPinned = true
            });
        }
        public async Task Handle_WhenProvingNewHintToAccountWithoutHints_UpdatesHintOnAccount()
        {
            var now     = DateTime.UtcNow;
            var account = new Account
            {
                UserId = "#user-id",
                Id     = "#account-id",
                Hints  = Array.Empty <AccountHint>()
            };

            _entityTables.AddAccounts(account);

            await _addAccountHintCommandHandler.Handle(
                new AddAccountHintCommand
            {
                AccountId = "#account-id",
                Hint      = "#hint",
                DateAdded = now
            },
                default
                );

            var accountHint = Assert.Single(_entityTables.Accounts.ExecuteQuery(new TableQuery <AccountHintEntity>().Where(TableQuery.GenerateFilterCondition(nameof(HintKeepTableEntity.EntityType), QueryComparisons.Equal, "AccountHintEntity"))));

            _entityTables.AssertAccounts(new Account(account)
            {
                Hints = new[]
                {
                    new AccountHint
                    {
                        Id        = accountHint.HintId,
                        Hint      = "#hint",
                        DateAdded = now
                    }
                }
            });
        }
        public async Task Handle_WhenReferredHintIsNotLatest_DeletesItWithoutUpdatingAccount()
        {
            var now     = DateTime.UtcNow;
            var account = new Account
            {
                UserId = "#user-id",
                Id     = "#account-id",
                Hints  = new[]
                {
                    new AccountHint
                    {
                        Id        = "#hint-id-1",
                        Hint      = "#Test-Hint-1",
                        DateAdded = now
                    },
                    new AccountHint
                    {
                        Id        = "#hint-id-2",
                        Hint      = "#Test-Hint-2",
                        DateAdded = now.AddDays(-1)
                    }
                }
            };

            _entityTables.AddAccounts(account);

            await _deleteAccountHintCommandHandler.Handle(new DeleteAccountHintCommand { AccountId = "#account-id", HintId = "#hint-id-2" }, default);

            _entityTables.AssertAccounts(new Account(account)
            {
                Hints = new[]
                {
                    account.Hints.First()
                }
            });
        }
        public async Task Handle_ExistingDeletedAccount_UpdatesIsDeletedFlag()
        {
            var account = new Account
            {
                UserId    = "#user-id",
                IsDeleted = true
            };

            _entityTables.AddAccounts(account);

            await _updateAccountCommandHandler.Handle(
                new UpdateDeletedAccountCommand
            {
                Id        = account.Id,
                IsDeleted = false
            },
                default
                );

            _entityTables.AssertAccounts(new Account(account)
            {
                IsDeleted = false
            });
        }
Exemple #9
0
 public static IEntityTables AssertAccounts(this IEntityTables entityTables, params Account[] accounts)
 => entityTables.AssertAccounts((IEnumerable <Account>)accounts);