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

            ViewResult result = (ViewResult)await sut.Contacts();

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

            IActionResult result = await sut.Contacts();

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

            ViewResult result = (ViewResult)await sut.Contacts();

            Assert.That(result.ViewName, Is.EqualTo("Contacts"));
        }
        public async Task Contacts_WhenCalled_AssertGetCountryCodeWasCalledOnClaimResolver()
        {
            Controller sut = CreateSut();

            await sut.Contacts();

            _claimResolverMock.Verify(m => m.GetCountryCode(), Times.Once);
        }
        public async Task Contacts_WhenCalled_AssertQueryAsyncWasCalledOnQueryBusToGetCountryCollection()
        {
            Controller sut = CreateSut();

            await sut.Contacts();

            _queryBusMock.Verify(m => m.QueryAsync <EmptyQuery, IEnumerable <ICountry> >(It.Is <EmptyQuery>(emptyQuery => emptyQuery != null)), Times.Once);
        }
        public async Task Contacts_WhenExternalIdentifierIsWhiteSpace_ReturnsViewResultWhereModelIsContactOptionsViewModelWhereExternalIdentifierIsNull()
        {
            Controller sut = CreateSut();

            ViewResult result = (ViewResult)await sut.Contacts(externalIdentifier : " ");

            ContactOptionsViewModel contactOptionsViewModel = (ContactOptionsViewModel)result.Model;

            Assert.That(contactOptionsViewModel.ExternalIdentifier, Is.Null);
        }
        public async Task Contacts_WhenFilterIsEmpty_ReturnsViewResultWhereModelIsContactOptionsViewModelWhereFilterIsNull()
        {
            Controller sut = CreateSut();

            ViewResult result = (ViewResult)await sut.Contacts(string.Empty);

            ContactOptionsViewModel contactOptionsViewModel = (ContactOptionsViewModel)result.Model;

            Assert.That(contactOptionsViewModel.Filter, Is.Null);
        }
        public async Task Contacts_WhenCalled_ReturnsViewResultWhereModelIsContactOptionsViewModelWhereCountriesContainsViewModelForCountries()
        {
            IEnumerable <ICountry> countryCollection = _fixture.CreateMany <ICountry>(_random.Next(5, 10)).ToList();
            Controller             sut = CreateSut(countryCollection: countryCollection);

            ViewResult result = (ViewResult)await sut.Contacts();

            ContactOptionsViewModel contactOptionsViewModel = (ContactOptionsViewModel)result.Model;

            Assert.That(contactOptionsViewModel.Countries.All(countryViewModel => countryCollection.SingleOrDefault(country => string.CompareOrdinal(countryViewModel.Code, country.Code) == 0) != null), Is.True);
        }
        public async Task Contacts_WhenCalled_ReturnsViewResultWhereModelIsContactOptionsViewModelWhereDefaultCountryCodeIsEqualToCountryCodeFromClaimResolver()
        {
            string     countryCode = _fixture.Create <string>();
            Controller sut         = CreateSut(countryCode: countryCode);

            ViewResult result = (ViewResult)await sut.Contacts();

            ContactOptionsViewModel contactOptionsViewModel = (ContactOptionsViewModel)result.Model;

            Assert.That(contactOptionsViewModel.DefaultCountryCode, Is.EqualTo(countryCode));
        }
        public async Task Contacts_WhenExternalIdentifierIsNotNullEmptyOrWhiteSpace_ReturnsViewResultWhereModelIsContactOptionsViewModelWhereExternalIdentifierIsEqualToFilterFromArgument()
        {
            Controller sut = CreateSut();

            string     externalIdentifier = _fixture.Create <string>();
            ViewResult result             = (ViewResult)await sut.Contacts(externalIdentifier : externalIdentifier);

            ContactOptionsViewModel contactOptionsViewModel = (ContactOptionsViewModel)result.Model;

            Assert.That(contactOptionsViewModel.ExternalIdentifier, Is.EqualTo(externalIdentifier));
        }