public string UpsertQueryString_Should_InsertValue_When_KeyIsValid(string baseUrl, string key, string value)
        {
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            builder.UpsertQueryStringPair(key, value);
            return(builder.GetAsString());
        }
        public string SetHashFragment_Should_InsertFragmentIfValid(string baseUrl, string fragment)
        {
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            builder.SetHashFragment(fragment);
            return(builder.GetAsString());
        }
        public string Initialize_Should_InitializeCorrectly_When_InitialUrlIsMultiple(params string[] varie)
        {
            //Act
            var builder = FluentUrlBuilder.Initialize(varie);

            //Assert
            return(builder.GetAsString());
        }
        public string UpsertQueryString_Should_AddMultipleKeys(string baseUrl, string key, string value, string secondKey, string secondValue)
        {
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            builder.UpsertQueryStringPair(key, value);
            builder.UpsertQueryStringPair(secondKey, secondValue);
            return(builder.GetAsString());
        }
        public void TrimString_Should_TrimCorrectly(string initial, string expected)
        {
            //Act
            var actualString = FluentUrlBuilder.TrimString(initial);

            //Assert
            Assert.AreEqual(expected, actualString);
        }
        public string RemoveQueryString_Should_RemovePair(string baseUrl, string key, string value, string secondKey, string secondValue, string keyToRemove)
        {
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            builder.UpsertQueryStringPair(key, value);
            builder.UpsertQueryStringPair(secondKey, secondValue);
            builder.RemoveQueryStringPair(keyToRemove);
            return(builder.GetAsString());
        }
 /// <summary>
 /// Adds a path part to the builder, only if the part is valid.
 /// </summary>
 /// <param name="pathPart">part to be added to the builder</param>
 /// <returns>Returns the same UrlBuilder object that can be used to concatenate other methods.</returns>
 public FluentUrlBuilder AddPathPart(string pathPart)
 {
     pathPart = FluentUrlBuilder.TrimString(pathPart);
     if (!string.IsNullOrWhiteSpace(pathPart))
     {
         this.urlParts.Add(pathPart);
     }
     return(this);
 }
        public string AddPathPart_Should_CorrectlyAddPart(string baseUrl, string part)
        {
            //Arrange
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            //Act
            builder.AddPathPart(part);
            //Assert
            return(builder.GetAsString());
        }
        public void Initialize_Should_InitializeCorrectly_When_InitialUrlIsSingleAndClean()
        {
            //Arrange
            var baseUrl = "https://www.code4it.dev";

            //Act
            var builder = FluentUrlBuilder.Initialize(baseUrl);

            //Assert
            builder.GetAsString().Should().Be(baseUrl);
        }
        public void RemoveQueryString_Should_RemovePair()
        {
            var stringUrl = "https://www.code4it.dev";

            (string q, string s) = ("key", "val");
            var expectedUri = new Uri("https://www.code4it.dev?key=val");
            var builder     = FluentUrlBuilder.Initialize(stringUrl);

            builder.UpsertQueryStringPair(q, s);
            var actual = builder.GetAsUri();

            Assert.AreEqual(expectedUri, actual);
        }
 public void Initialize_Should_ThowException_When_InputIsNotValid(params string[] parts)
 {
     // Act and Assert
     Assert.Throws <ArgumentException>(() => FluentUrlBuilder.Initialize(parts));
 }