public void ProcessRequest_Should_Not_Add_Property_Value_As_Query_String_Parameter_If_Value_Of_The_Property_Is_Null()
        {
            var propertyQueryStringBuilder = new PropertyQueryStringBuilder();

            var clanFilter = new PairPropertyFilter {
                Name = "Eyyam"
            };
            var queryParameters = new List <KeyValuePair <string, string> >();

            propertyQueryStringBuilder.ProcessRequest(queryParameters, clanFilter);

            Assert.Single(queryParameters);
            Assert.Contains(new KeyValuePair <string, string>("name", clanFilter.Name), queryParameters);
        }
        public void ProcessRequest_Should_Add_All_Propert_Values_As_Query_String_Parameter_If_Values_Are_Not_Null()
        {
            var propertyQueryStringBuilder = new PropertyQueryStringBuilder();

            var clanFilter = new PairPropertyFilter {
                Name = "Eyyam", Tag = "ATSGEDS"
            };
            var queryParameters = new List <KeyValuePair <string, string> >();

            propertyQueryStringBuilder.ProcessRequest(queryParameters, clanFilter);

            Assert.Equal(2, queryParameters.Count);
            Assert.Contains(new KeyValuePair <string, string>("name", clanFilter.Name), queryParameters);
            Assert.Contains(new KeyValuePair <string, string>("tag", clanFilter.Tag), queryParameters);
        }
        public void ProcessRequest_Should_Pass_Same_QueryStringParams_And_Filter_To_Successor()
        {
            var queryStringBuilder         = new Mock <QueryStringBuilder>(MockBehavior.Strict);
            var propertyQueryStringBuilder = new PropertyQueryStringBuilder();

            propertyQueryStringBuilder.SetSuccessor(queryStringBuilder.Object);

            queryStringBuilder.Setup(builder => builder.ProcessRequest(It.IsAny <IList <KeyValuePair <string, string> > >(), It.IsAny <PairPropertyFilter>()));

            var clanFilter = new PairPropertyFilter {
                Name = "Eyyam", Tag = "ATSGEDS"
            };
            var queryParameters = new List <KeyValuePair <string, string> >();

            propertyQueryStringBuilder.ProcessRequest(queryParameters, clanFilter);

            queryStringBuilder.Verify(
                builder => builder.ProcessRequest(It.Is <IList <KeyValuePair <string, string> > >(stringBuilder => Equals(stringBuilder, queryParameters)),
                                                  It.Is <PairPropertyFilter>(filter => Equals(filter, clanFilter))), Times.Once);
        }