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

            RedirectToActionResult result = (RedirectToActionResult)await sut.DeleteBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            Assert.That(result.RouteValues.ContainsKey("accountingNumber"), Is.True);
        }
        public async Task DeleteBudgetAccount_WhenCalled_ReturnsRedirectToActionResultWhereRouteValuesIsNotNull()
        {
            Controller sut = CreateSut();

            RedirectToActionResult result = (RedirectToActionResult)await sut.DeleteBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

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

            RedirectToActionResult result = (RedirectToActionResult)await sut.DeleteBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

            Assert.That(result.ActionName, Is.EqualTo("Accountings"));
        }
        public async Task DeleteBudgetAccount_WhenCalled_ReturnsRedirectToActionResult()
        {
            Controller sut = CreateSut();

            IActionResult result = await sut.DeleteBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

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

            IActionResult result = await sut.DeleteBudgetAccount(_fixture.Create <int>(), _fixture.Create <string>());

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

            string accountNumber = _fixture.Create <string>();
            await sut.DeleteBudgetAccount(_fixture.Create <int>(), accountNumber);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IDeleteBudgetAccountCommand>(command => command != null && string.CompareOrdinal(command.AccountNumber, accountNumber.ToUpper()) == 0)), Times.Once);
        }
        public async Task DeleteBudgetAccount_WhenCalled_AssertPublishAsyncWasCalledOnCommandBusWithDeleteBudgetAccountCommandContainingAccountingNumberFromArguments()
        {
            Controller sut = CreateSut();

            int accountingNumber = _fixture.Create <int>();
            await sut.DeleteBudgetAccount(accountingNumber, _fixture.Create <string>());

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IDeleteBudgetAccountCommand>(command => command != null && command.AccountingNumber == accountingNumber)), Times.Once);
        }
        public async Task DeleteBudgetAccount_WhenCalled_ReturnsRedirectToActionResultWhereRouteValuesContainsAccountingNumberWithAccountingNumberFromArguments()
        {
            Controller sut = CreateSut();

            int accountingNumber          = _fixture.Create <int>();
            RedirectToActionResult result = (RedirectToActionResult)await sut.DeleteBudgetAccount(accountingNumber, _fixture.Create <string>());

            Assert.That(result.RouteValues["accountingNumber"], Is.EqualTo(accountingNumber));
        }
        public void DeleteBudgetAccount_WhenAccountNumberIsWhiteSpace_ThrowsArgumentNullException()
        {
            Controller sut = CreateSut();

            ArgumentNullException result = Assert.ThrowsAsync <ArgumentNullException>(async() => await sut.DeleteBudgetAccount(_fixture.Create <int>(), " "));

            // ReSharper disable PossibleNullReferenceException
            Assert.That(result.ParamName, Is.EqualTo("accountNumber"));
            // ReSharper restore PossibleNullReferenceException
        }