protected override IEnumerable <IQueryConstraint> DetermineConstraints(System.Collections.Specialized.NameValueCollection requestParams)
        {
            var builder = new ConstraintsBuilder(requestParams);

            builder.MaybeAddDateRangeConstraint("bizDate");
            builder.MaybeAddSetConstraint("bookId");
            return(builder.ToList());
        }
        public void ShouldNotAddDateRangeConstraintForEmptyRequest()
        {
            var req     = new NameValueCollection();
            var builder = new ConstraintsBuilder(req);

            builder.MaybeAddDateRangeConstraint("test");
            Assert.AreEqual(0, builder.ToList().Count);
        }
        public void ShouldThrowInvalidConstraintExceptionWhenBadEndDateIsGiven()
        {
            var req = new NameValueCollection();

            req["bizDate-start"] = "2011-06-01";
            req["bizDate-end"]   = "abc";
            var builder = new ConstraintsBuilder(req);

            try {
                builder.MaybeAddDateRangeConstraint("bizDate");
                Assert.Fail("Should have thrown InvalidConstraintException");
            } catch (InvalidConstraintException ex) {
                Assert.AreEqual("The constraint value 'abc' is not valid for the field 'bizDate-end'", ex.Message);
            }
        }
        public void ShouldAddDateRangeConstraintWhenBothStartAndEndArePresent()
        {
            var req = new NameValueCollection();
              req["bizDate-start"] = "2011-06-01";
              req["bizDate-end"] = "2011-06-30";
              var builder = new ConstraintsBuilder(req);

              builder.MaybeAddDateRangeConstraint("bizDate");
              Assert.AreEqual(1, builder.ToList().Count);
              Assert.IsInstanceOf(typeof (DateRangeQueryConstraint), builder.ToList()[0]);

              var c = (DateRangeQueryConstraint) builder.ToList()[0];
              Assert.AreEqual(new DateTime(2011, 6, 1), c.LowerBound);
              Assert.AreEqual(new DateTime(2011, 6, 30), c.UpperBound);
              Assert.AreEqual("bizDate", c.Category);
        }
        public void ShouldAddDateRangeConstraintWhenBothStartAndEndArePresent()
        {
            var req = new NameValueCollection();

            req["bizDate-start"] = "2011-06-01";
            req["bizDate-end"]   = "2011-06-30";
            var builder = new ConstraintsBuilder(req);

            builder.MaybeAddDateRangeConstraint("bizDate");
            Assert.AreEqual(1, builder.ToList().Count);
            Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[0]);

            var c = (DateRangeQueryConstraint)builder.ToList()[0];

            Assert.AreEqual(new DateTime(2011, 6, 1), c.LowerBound);
            Assert.AreEqual(new DateTime(2011, 6, 30), c.UpperBound);
            Assert.AreEqual("bizDate", c.Category);
        }
        public void ShouldBeAbleToAddBothSetAndDateConstraints()
        {
            var req = new NameValueCollection {
                { "someString", "a" }, { "bizDate-start", "2011-06-01" }, { "bizDate-end", "2011-06-30" }
            };
            var builder = new ConstraintsBuilder(req);

            builder.MaybeAddSetConstraint("someString");
            builder.MaybeAddDateRangeConstraint("bizDate");
            Assert.AreEqual(2, builder.ToList().Count);

            Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]);
            var sc = (SetQueryConstraint)builder.ToList()[0];

            Assert.That(new HashSet <String> {
                "a"
            }, Is.EqualTo(sc.Values).AsCollection);

            Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[1]);
            var c = (DateRangeQueryConstraint)builder.ToList()[1];

            Assert.That(new DateTime(2011, 6, 1), Is.EqualTo(c.LowerBound.Value));
            Assert.That(new DateTime(2011, 6, 30), Is.EqualTo(c.UpperBound.Value));
        }
 protected override IEnumerable<IQueryConstraint> DetermineConstraints(System.Collections.Specialized.NameValueCollection requestParams)
 {
     var builder = new ConstraintsBuilder(requestParams);
       builder.MaybeAddDateRangeConstraint("bizDate");
       builder.MaybeAddSetConstraint("bookId");
       return builder.ToList();
 }
        public void ShouldThrowInvalidConstraintExceptionWhenBadStartDateIsGiven()
        {
            var req = new NameValueCollection();
              req["bizDate-start"] = "abc";
              req["bizDate-end"] = "2011-06-30";
              var builder = new ConstraintsBuilder(req);

              try {
            builder.MaybeAddDateRangeConstraint("bizDate");
            Assert.Fail("Should have thrown InvalidConstraintException");
              } catch (InvalidConstraintException ex) {
            Assert.AreEqual("The constraint value 'abc' is not valid for the field 'bizDate-start'", ex.Message);
              }
        }
        public void ShouldNotAddDateRangeConstraintForEmptyRequest()
        {
            var req = new NameValueCollection();
              var builder = new ConstraintsBuilder(req);

              builder.MaybeAddDateRangeConstraint("test");
              Assert.AreEqual(0, builder.ToList().Count);
        }
        public void ShouldBeAbleToAddBothSetAndDateConstraints()
        {
            var req = new NameValueCollection { { "someString", "a" }, { "bizDate-start", "2011-06-01" }, { "bizDate-end", "2011-06-30" } };
              var builder = new ConstraintsBuilder(req);

              builder.MaybeAddSetConstraint("someString");
              builder.MaybeAddDateRangeConstraint("bizDate");
              Assert.AreEqual(2, builder.ToList().Count);

              Assert.IsInstanceOf(typeof(SetQueryConstraint), builder.ToList()[0]);
              var sc = (SetQueryConstraint)builder.ToList()[0];
              Assert.That(new HashSet<String> { "a" }, Is.EqualTo(sc.Values).AsCollection);

              Assert.IsInstanceOf(typeof(DateRangeQueryConstraint), builder.ToList()[1]);
              var c = (DateRangeQueryConstraint)builder.ToList()[1];
              Assert.That(new DateTime(2011, 6, 1), Is.EqualTo(c.LowerBound.Value));
              Assert.That(new DateTime(2011, 6, 30), Is.EqualTo(c.UpperBound.Value));
        }