public ActionResult SearchResult(string searchText)
        {
            var username = Request.Cookies["UserId"].Value;

            var addressBook = new RealAddressBook(username);

            ViewBag.SearchText = searchText;

            var model = addressBook.Search(searchText);

            return View(model);
        }
        public void ShouldReturnTwoContactsWhichFirstnameAndSurnameMatchSearchText()
        {
            const string username = "******";
            var addressBook = new RealAddressBook(username);

            var random = new Random();

            var name = random.Next().ToString();

            var contact = new Contact(name, "Smith", "01733 333555" + random.Next());
            var contactTwo = new Contact("Joe", name, "01733 444888" + random.Next());

            addressBook.Save(contact, username);
            addressBook.Save(contactTwo, username);

            var searchText = name;
            var searchResult = addressBook.Search(searchText);

            Assert.That(searchResult.Count, Is.EqualTo(2));
        }
        public void ShouldReturnContactBySearchingOnlyTheFirstSetOfCharactersOfATelephoneNumber()
        {
            const string username = "******";
            var addressBook = new RealAddressBook(username);

            var random = new Random();

            var firstName = "Amanda" + random.Next();
            var surname = "Jones" + random.Next();
            var telephoneNumber = "01724 567892" + random.Next();

            var customer = new Contact(firstName, surname, telephoneNumber);

            var lastContact = addressBook.Save(customer, username);

            var expectedResult = addressBook.Read(lastContact.Id);

            const string searchText = "01724";
            var searchResult = addressBook.Search(searchText);

            Assert.That(searchResult.Any(p => p.TelephoneNumber == expectedResult.TelephoneNumber && p.Surname == expectedResult.Surname && p.FirstName == expectedResult.FirstName),Is.True);
        }
        public void ShouldReturnContactUsingSearchByTelephone()
        {
            const string username = "******";
            var addressBook = new RealAddressBook(username);

            var random = new Random();

            var firstName = "Amanda" + random.Next();
            var surname = "Jones" + random.Next();
            var telephoneNumber = "01724 567555" + random.Next();

            var customer = new Contact(firstName, surname, telephoneNumber);

            var lastContact = addressBook.Save(customer, username);

            var expectedResult = addressBook.Read(lastContact.Id);

            var searchedPerson = addressBook.Search(telephoneNumber);

            Assert.That(searchedPerson.Count, Is.EqualTo(1));
            var contact = searchedPerson.Single();

            Assert.That(contact.Id, Is.EqualTo(expectedResult.Id));
            Assert.That(contact.FirstName, Is.EqualTo(expectedResult.FirstName));
            Assert.That(contact.Surname, Is.EqualTo(expectedResult.Surname));
            Assert.That(contact.TelephoneNumber, Is.EqualTo(expectedResult.TelephoneNumber));
        }
        public void ShouldFindContactUsingSearchWithAtLeastThreeCharacters()
        {
            const string username = "******";
            var addressBook = new RealAddressBook(username);

            var random = new Random();

            var firstName = "Amanda" + random.Next();
            var surname = "Jones" + random.Next();
            var telephoneNumber = "01724 567892" + random.Next();

            var customer = new Contact(firstName, surname, telephoneNumber);

            var lastContact = addressBook.Save(customer, username);

            var expectedResult = addressBook.Read(lastContact.Id);

            const string searchText = "ama";
            var searchResult = addressBook.Search(searchText);

            Assert.That(
                searchResult.Any(p => p.Surname == expectedResult.Surname && p.FirstName == expectedResult.FirstName),
                Is.True);
        }