示例#1
0
        public void SmokeTest()
        {
            // Arrange
            var now = _fakeClock.Now.ToIso8601();
            var fiveMinutesHence = _fakeClock.Now.AddMinutes(5).ToIso8601();
            var oneWeekHence     = _fakeClock.Now.AddDays(7).ToIso8601();

            var expected = new Repr.ReverseAuction
            {
                OtherTerms = "a skateboard",

                Pickup = new Repr.Waypoint
                {
                    Address  = "742 Evergreen Terr, Springfield, IL 62704",
                    Earliest = now,
                    Latest   = oneWeekHence,
                },

                Dropoff = new Repr.Waypoint
                {
                    Address  = "205 Brazos St, Austin, TX 78701",
                    Earliest = now,
                    Latest   = oneWeekHence,
                },

                BiddingStart = now,
                BiddingEnd   = fiveMinutesHence,
            };

            // Act
            var create = Container.GetInstance <ReverseAuction.Create>();
            var actual = create.From(expected);

            // Assert
            Assert.AreEqual(expected.OtherTerms, actual.OtherTerms);

            Assert.AreEqual(expected.Pickup.Address, actual.Pickup.Address);
            Assert.AreNotEqual(default(double), actual.Pickup.Latitude);
            Assert.AreNotEqual(default(double), actual.Pickup.Longitude);
            Assert.AreEqual(expected.Pickup.Earliest, actual.Pickup.Earliest);
            Assert.AreEqual(expected.Pickup.Latest, actual.Pickup.Latest);

            Assert.AreEqual(expected.Dropoff.Address, actual.Dropoff.Address);
            Assert.AreNotEqual(default(double), actual.Dropoff.Latitude);
            Assert.AreNotEqual(default(double), actual.Dropoff.Longitude);
            Assert.AreEqual(expected.Dropoff.Earliest, actual.Dropoff.Earliest);
            Assert.AreEqual(expected.Dropoff.Latest, actual.Dropoff.Latest);

            Assert.AreEqual(expected.BiddingStart, actual.BiddingStart);
            Assert.AreEqual(expected.BiddingEnd, actual.BiddingEnd);
        }
示例#2
0
            // TODO: Move the following methods into separate Assembler classes.

            private ReverseAuctionAggregate ToAggregate(
                Repr.ReverseAuction repr)
            {
                repr.MustNotBeNull(nameof(repr));

                // TODO: Translate from Domain-oriented errors to UI-oriented errors.
                return(_factory.New(
                           repr.Pickup.Address,
                           Convert.FromRepr(repr.Pickup),
                           repr.Dropoff.Address,
                           Convert.FromRepr(repr.Dropoff),
                           repr.OtherTerms,
                           Convert.ToTimeRange(repr.BiddingStart, repr.BiddingEnd)));
            }
示例#3
0
        public IHttpActionResult Post(Repr.ReverseAuction request)
        {
            Repr.ReverseAuction response = _create.From(request);

            return(Created(response.Uri, response));
        }
示例#4
0
 // TODO: Write a ReverseAuctionId ValueType instead of using an int?
 public Repr.ReverseAuction From(Repr.ReverseAuction repr)
 {
     return(ToRepresentation(_repository.Save(ToAggregate(repr))));
 }