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

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

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

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

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

            string countryCode = _fixture.Create <string>();
            string postalCode  = _fixture.Create <string>();
            await sut.DeletePostalCode(countryCode, postalCode);

            _commandBusMock.Verify(m => m.PublishAsync(It.Is <IDeletePostalCodeCommand>(value => string.CompareOrdinal(value.CountryCode, countryCode.ToUpper()) == 0 && string.CompareOrdinal(value.PostalCode, postalCode) == 0)), Times.Once);
        }
        public void DeletePostalCode_WhenCalledWithPostalCodeEqualToEmpty_ThrowsArgumentNullException()
        {
            Controller sut = CreateSut();

            ArgumentNullException result = Assert.ThrowsAsync <ArgumentNullException>(async() => await sut.DeletePostalCode(_fixture.Create <string>(), string.Empty));

            Assert.That(result.ParamName, Is.EqualTo("postalCode"));
        }
        public void DeletePostalCode_WhenCalledWithCountryCodeEqualToWhiteSpace_ThrowsArgumentNullException()
        {
            Controller sut = CreateSut();

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

            Assert.That(result.ParamName, Is.EqualTo("countryCode"));
        }