public async Task ResolveAccount_WhenAccountNumberIsEmpty_ReturnsNotNull()
        {
            Controller sut = CreateSut();

            IActionResult result = await sut.ResolveAccount(_fixture.Create <int>(), string.Empty, DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            Assert.That(result, Is.Not.Null);
        }
        public async Task ResolveAccount_WhenAccountNumberIsWhiteSpace_ReturnsBadRequestResult()
        {
            Controller sut = CreateSut();

            IActionResult result = await sut.ResolveAccount(_fixture.Create <int>(), " ", DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            Assert.That(result, Is.TypeOf <BadRequestResult>());
        }
        public async Task ResolveAccount_WhenAccountWasReturnedFromQueryBus_ReturnsOkObjectResultWhereValueIsAccountViewModel()
        {
            Controller sut = CreateSut();

            OkObjectResult result = (OkObjectResult)await sut.ResolveAccount(_fixture.Create <int>(), _fixture.Create <string>(), DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            Assert.That(result.Value, Is.TypeOf <AccountViewModel>());
        }
        public async Task ResolveAccount_WhenAccountWasReturnedFromQueryBus_ReturnsOkObjectResult()
        {
            Controller sut = CreateSut();

            IActionResult result = await sut.ResolveAccount(_fixture.Create <int>(), _fixture.Create <string>(), DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            Assert.That(result, Is.TypeOf <OkObjectResult>());
        }
        public async Task ResolveAccount_WhenNoAccountWasReturnedFromQueryBus_ReturnsNotNull()
        {
            Controller sut = CreateSut(false);

            IActionResult result = await sut.ResolveAccount(_fixture.Create <int>(), _fixture.Create <string>(), DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            Assert.That(result, Is.Not.Null);
        }
        public async Task ResolveAccount_WhenAccountNumberIsNotNullEmptyOrWhiteSpace_AssertQueryAsyncWasCalledOnQueryBusWithGetAccountQuery()
        {
            Controller sut = CreateSut();

            int      accountingNumber = _fixture.Create <int>();
            string   accountNumber    = _fixture.Create <string>();
            DateTime statusDate       = DateTime.Now.AddDays(_random.Next(0, 7) * -1).AddMinutes(_random.Next(-120, 120));
            await sut.ResolveAccount(accountingNumber, accountNumber, statusDate);

            _queryBusMock.Verify(m => m.QueryAsync <IGetAccountQuery, IAccount>(It.Is <IGetAccountQuery>(query => query != null && query.AccountingNumber == accountingNumber && string.CompareOrdinal(query.AccountNumber, accountNumber.ToUpper()) == 0 && query.StatusDate == statusDate.Date)), Times.Once());
        }
        public async Task ResolveAccount_WhenAccountWasReturnedFromQueryBus_ReturnsOkObjectResultWhereValueIsAccountViewModelWithAccountNumberEqualToAccountNumberOnAccountFromQueryBus()
        {
            string     accountNumber = _fixture.Create <string>();
            IAccount   account       = _fixture.BuildAccountMock(accountNumber: accountNumber).Object;
            Controller sut           = CreateSut(account: account);

            OkObjectResult result = (OkObjectResult)await sut.ResolveAccount(_fixture.Create <int>(), _fixture.Create <string>(), DateTime.Today.AddDays(_random.Next(0, 7) * -1));

            AccountViewModel accountViewModel = (AccountViewModel)result.Value;

            Assert.That(accountViewModel.AccountNumber, Is.EqualTo(accountNumber));
        }