public async Task FindMatchingOrganisationsHandler_WithLtdAndLimitedCompany_TwoMatches()
        {
            var context = new TestIwsContext();

            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("SFW Ltd"),
                GetOrganisationWithName("SFW  Limited")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var strings = await handler.HandleAsync(new FindMatchingOrganisations("sfw"));

            Assert.Equal(2, strings.Count);
        }
        public async Task FindMatchingOrganisationsHandler_SearchTermContainsThe_ReturnsMatchingResults()
        {
            var context = new TestIwsContext();

            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("Environment Agency"),
                GetOrganisationWithName("Enivronent Agency")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations("THe environment agency"));

            Assert.Equal(2, results.Count);
        }
        public async Task FindMatchingOrganisationsHandler_AllDataMatches_ReturnedStringsMatchInputDataWithCase()
        {
            var names = new[] { "Environment Agency", "Environemnt Agincy" };

            var data = names.Select(GetOrganisationWithName).ToArray();

            var context = new TestIwsContext();

            context.Organisations.AddRange(data);

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations("Environment Agency"));

            Assert.Equal(names, results.Select(r => r.Name));
        }
        public async Task FindMatchingOrganisationsHandler_WithLtdCompany_OneMatches()
        {
            var context = new TestIwsContext();
            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("SFW Ltd"),
                GetOrganisationWithName("swf"),
                GetOrganisationWithName("mfw"),
                GetOrganisationWithName("mfi Kitchens and Showrooms Ltd"),
                GetOrganisationWithName("SEPA England"),
                GetOrganisationWithName("Tesco Recycling")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var strings = await handler.HandleAsync(new FindMatchingOrganisations("sfw"));

            Assert.Equal(1, strings.Count);
        }
        public async Task FindMatchingOrganisationsHandler_WithLtdCompany_OneMatches()
        {
            var context = new TestIwsContext();

            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("SFW Ltd"),
                GetOrganisationWithName("swf"),
                GetOrganisationWithName("mfw"),
                GetOrganisationWithName("mfi Kitchens and Showrooms Ltd"),
                GetOrganisationWithName("SEPA England"),
                GetOrganisationWithName("Tesco Recycling")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var strings = await handler.HandleAsync(new FindMatchingOrganisations("sfw"));

            Assert.Equal(1, strings.Count);
        }
        public async Task FindMatchingOrganisationsHandler_AllDataMatches_ReturnsDataOrderedByEditDistance()
        {
            var searchTerm = "bee keepers";

            var namesWithDistances = new[]
            {
                new KeyValuePair <string, int>("THE Bee Keepers Limited", 0),
                new KeyValuePair <string, int>("Bee Keeperes", 1),
                new KeyValuePair <string, int>("BeeKeeprs", 2)
            };

            var organisations = namesWithDistances.Select(n => GetOrganisationWithName(n.Key)).ToArray();

            var context = new TestIwsContext();

            context.Organisations.AddRange(organisations);

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations(searchTerm));

            Assert.Equal(namesWithDistances.OrderBy(n => n.Value).Select(n => n.Key), results.Select(r => r.Name));
        }
        public async Task FindMatchingOrganisationsHandler_WithLtdAndLimitedCompany_TwoMatches()
        {
            var context = new TestIwsContext();
            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("SFW Ltd"),
                GetOrganisationWithName("SFW  Limited")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var strings = await handler.HandleAsync(new FindMatchingOrganisations("sfw"));

            Assert.Equal(2, strings.Count);
        }
        public async Task FindMatchingOrganisationsHandler_AllDataMatches_ReturnsDataOrderedByEditDistance()
        {
            var searchTerm = "bee keepers";

            var namesWithDistances = new[]
            {
                new KeyValuePair<string, int>("THE Bee Keepers Limited", 0),
                new KeyValuePair<string, int>("Bee Keeperes", 1),
                new KeyValuePair<string, int>("BeeKeeprs", 2)
            };

            var organisations = namesWithDistances.Select(n => GetOrganisationWithName(n.Key)).ToArray();

            var context = new TestIwsContext();
            context.Organisations.AddRange(organisations);

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations(searchTerm));

            Assert.Equal(namesWithDistances.OrderBy(n => n.Value).Select(n => n.Key), results.Select(r => r.Name));
        }
        public async Task FindMatchingOrganisationsHandler_AllDataMatches_ReturnedStringsMatchInputDataWithCase()
        {
            var names = new[] { "Environment Agency", "Environemnt Agincy" };

            var data = names.Select(GetOrganisationWithName).ToArray();

            var context = new TestIwsContext();
            context.Organisations.AddRange(data);

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations("Environment Agency"));

            Assert.Equal(names, results.Select(r => r.Name));
        }
        public async Task FindMatchingOrganisationsHandler_DataContainsThe_ReturnsMatchingResults()
        {
            var context = new TestIwsContext();
            context.Organisations.AddRange(new[]
            {
                GetOrganisationWithName("THE  Environemnt Agency"),
                GetOrganisationWithName("THE Environemnt Agency"),
                GetOrganisationWithName("Environment Agency")
            });

            var handler = new FindMatchingOrganisationsHandler(context);

            var results = await handler.HandleAsync(new FindMatchingOrganisations("Environment Agency"));

            Assert.Equal(3, results.Count);
        }