public void ReplaceOldLocationWithNewWhenCallingSetLocationTwiceWhenLastParameter()
        {
            const string firstTown  = "Karlsruhe,de";
            const string secondTown = "Stuttgart,de";

            IUrlProvider providerUnderTest = CreateDefaultUrlProvider();

            providerUnderTest.SetLocation(firstTown);
            providerUnderTest.SetLocation(secondTown);
            var url = providerUnderTest.GetUriAsString();

            Assert.Contains(string.Concat("q=", secondTown), url);
            Assert.DoesNotContain(string.Concat("q=", firstTown), url);
        }
        public void EncodeUmlauteInQuery(string UmlautLocation, string ExpectedEncoding)
        {
            IUrlProvider ProviderUnderTest = CreateDefaultUrlProvider();

            ProviderUnderTest.SetLocation(UmlautLocation);

            Assert.Contains(ExpectedEncoding, ProviderUnderTest.GetUriAsString());
        }
        public void AddQueryParamterForTown(string LocationToSet)
        {
            IUrlProvider ProviderUnderTest = CreateDefaultUrlProvider();

            ProviderUnderTest.SetLocation(LocationToSet);

            Assert.Contains($"q={LocationToSet}", ProviderUnderTest.GetUriAsString());
        }
        internal void ProvideAFluidInterface()
        {
            const string Town = "Karlsruhe,de";
            const OpenWeatherUrlProvider.QueryMode     Mode     = OpenWeatherUrlProvider.QueryMode.Json;
            const OpenWeatherUrlProvider.QueryUnit     Unit     = OpenWeatherUrlProvider.QueryUnit.Metric;
            const OpenWeatherUrlProvider.QueryLanguage Language = OpenWeatherUrlProvider.QueryLanguage.German;

            IUrlProvider ProviderUnderTest = CreateDefaultUrlProvider();

            ProviderUnderTest.SetLocation(Town).SetMode(Mode).SetUnit(Unit).SetLanguage(Language);

            Assert.True(true);
        }
        public void ThrowArgumentExceptionWhenLocationFormatIsWrong(string Location)
        {
            IUrlProvider ProviderUnderTest = CreateDefaultUrlProvider();

            Assert.Throws <ArgumentException>(() => ProviderUnderTest.SetLocation(Location));
        }