public async Task ShouldSetOrganisationStatus(string companiesHouseStatus, OrganisationStatus expectedMappedStatus)
        {
            //Arrange
            const string searchTerm = "test";
            var          resultItem = new CompanySearchResultsItem
            {
                CompanyName = "Test Company",
                Address     = new Domain.Models.Company.Address
                {
                    Premises            = "12",
                    CompaniesHouseLine1 = "Test Street",
                    CompaniesHouseLine2 = "Test Park",
                    TownOrCity          = "Test Town",
                    County   = "Testshire",
                    PostCode = "TE51 3TS"
                },
                DateOfIncorporation = DateTime.Now,
                CompanyNumber       = "12345678",
                CompanyStatus       = companiesHouseStatus
            };

            _verificationService.Setup(x => x.FindCompany(It.IsAny <string>(), 10)).ReturnsAsync(new CompanySearchResults
            {
                Companies = new List <CompanySearchResultsItem> {
                    resultItem
                }
            });

            //Act
            var results = await _searchService.Search(searchTerm, 10);

            //Assert
            Assert.AreEqual(expectedMappedStatus, results.FirstOrDefault().OrganisationStatus);
        }
        public async Task ThenAnEmptyAddressIsReturnedWhenNullIsReturnedFromTheApi()
        {
            //Arrange
            var resultItem = new CompanySearchResultsItem
            {
                CompanyName         = "Test Corp",
                Address             = null,
                DateOfIncorporation = DateTime.Now,
                CompanyNumber       = "12345678"
            };

            _verificationService.Setup(x => x.FindCompany(It.IsAny <string>(), 10)).ReturnsAsync(new CompanySearchResults
            {
                Companies = new List <CompanySearchResultsItem> {
                    resultItem
                }
            });

            //Act
            var actual = await _searchService.Search("test", 10);

            //Assert
            Assert.IsNotNull(actual);
            Assert.IsNotNull(actual.FirstOrDefault());
            Assert.IsAssignableFrom <Address>(actual.First().Address);
        }
        public async Task ShouldFormatAddressCorrectlyForFoundCompanies(string premises, string companiesHouseLine1, string companiesHouseLine2,
                                                                        string townOrCity, string county, string postcode)
        {
            //Arrange
            const string searchTerm = "Test";
            var          resultItem = new CompanySearchResultsItem
            {
                CompanyName = "Test Company",
                Address     = new Domain.Models.Company.Address
                {
                    Premises            = premises,
                    CompaniesHouseLine1 = companiesHouseLine1,
                    CompaniesHouseLine2 = companiesHouseLine2,
                    TownOrCity          = townOrCity,
                    County   = county,
                    PostCode = postcode
                },
                DateOfIncorporation = DateTime.Now,
                CompanyNumber       = "12345678"
            };

            _verificationService.Setup(x => x.FindCompany(It.IsAny <string>(), 10)).ReturnsAsync(new CompanySearchResults
            {
                Companies = new List <CompanySearchResultsItem> {
                    resultItem
                }
            });

            //Act
            var results = await _searchService.Search(searchTerm, 10);

            var organisation = results.FirstOrDefault();

            //Assert
            Assert.IsNotNull(organisation);
            Assert.AreEqual(resultItem.CompanyName, organisation.Name);

            Assert.AreEqual(!string.IsNullOrEmpty(resultItem.Address.Premises) ? resultItem.Address.Premises : resultItem.Address.CompaniesHouseLine1, organisation.Address.Line1);
            Assert.AreEqual(!string.IsNullOrEmpty(resultItem.Address.Premises) ? resultItem.Address.CompaniesHouseLine1 : resultItem.Address.CompaniesHouseLine2, organisation.Address.Line2);
            Assert.AreEqual(!string.IsNullOrEmpty(resultItem.Address.Premises) ? resultItem.Address.CompaniesHouseLine2 : null, organisation.Address.Line3);
            Assert.AreEqual(resultItem.Address.TownOrCity, organisation.Address.Line4);
            Assert.AreEqual(resultItem.Address.County, organisation.Address.Line5);
            Assert.AreEqual(resultItem.Address.PostCode, organisation.Address.Postcode);

            Assert.AreEqual(resultItem.CompanyNumber, organisation.Code);
            Assert.AreEqual(resultItem.DateOfIncorporation, organisation.RegistrationDate);
            Assert.AreEqual(OrganisationType.Company, organisation.Type);
            Assert.AreEqual(OrganisationSubType.None, organisation.SubType);
        }
        public async Task ShouldReturnFoundCompany()
        {
            //Arrange
            const string searchTerm = "test";
            var          resultItem = new CompanySearchResultsItem
            {
                CompanyName = "Test Corp",
                Address     = new Domain.Models.Company.Address
                {
                    Premises            = "12",
                    CompaniesHouseLine1 = "Test Street",
                    Line2      = "Test Park",
                    TownOrCity = "Test Town",
                    County     = "Testville",
                    PostCode   = "TE12 3ST"
                },
                DateOfIncorporation = DateTime.Now,
                CompanyNumber       = "12345678"
            };

            _verificationService.Setup(x => x.FindCompany(It.IsAny <string>(), 10)).ReturnsAsync(new CompanySearchResults
            {
                Companies = new List <CompanySearchResultsItem> {
                    resultItem
                }
            });

            //Act
            var results = await _searchService.Search(searchTerm, 10);

            var organisation = results.FirstOrDefault();

            //Assert
            Assert.IsNotNull(organisation);
            Assert.AreEqual(resultItem.CompanyName, organisation.Name);

            Assert.AreEqual(resultItem.Address.Premises + " " + resultItem.Address.CompaniesHouseLine1, organisation.Address.Line1);
            Assert.AreEqual(resultItem.Address.Line2, organisation.Address.Line2);
            Assert.AreEqual(resultItem.Address.TownOrCity, organisation.Address.Line4);
            Assert.AreEqual(resultItem.Address.County, organisation.Address.Line5);
            Assert.AreEqual(resultItem.Address.PostCode, organisation.Address.Postcode);

            Assert.AreEqual(resultItem.CompanyNumber, organisation.Code);
            Assert.AreEqual(resultItem.DateOfIncorporation, organisation.RegistrationDate);
            Assert.AreEqual(OrganisationType.Company, organisation.Type);
            Assert.AreEqual(OrganisationSubType.None, organisation.SubType);
        }