public void PostValidDtoWhenSoldOut(int capacity, int quantity)
        {
            var repository = new FakeReservationsRepository();
            var now        = new DateTime(2019, 9, 27);
            var sut        = new ReservationsController(
                TimeSpan.FromHours(2.5),
                new[] { new Table(capacity) },
                repository,
                new ConstantClock(now));

            var dto = new ReservationDto
            {
                Date     = now.AddDays(2).ToString(),
                Quantity = quantity
            };
            var actual = sut.Post(dto);

            var c = Assert.IsAssignableFrom <ObjectResult>(actual);

            Assert.Equal(StatusCodes.Status500InternalServerError, c.StatusCode);
        }
        public void PostValidDtoWhenNoPriorReservationsExist(
            int capacity,
            int quantity)
        {
            var repository = new FakeReservationsRepository();
            var now        = new DateTime(2019, 9, 24);
            var sut        = new ReservationsController(
                TimeSpan.FromHours(2.5),
                new[] { new Table(capacity) },
                repository,
                new ConstantClock(now));

            var dto = new ReservationDto
            {
                Date     = now.AddDays(1).ToString(),
                Quantity = quantity
            };
            var actual = sut.Post(dto);

            Assert.IsAssignableFrom <OkResult>(actual);
            Assert.NotEmpty(repository);
        }
        public void PostPastReservationWhenNoPriorReservationsExist(
            int capacity,
            int quantity)
        {
            var repository = new FakeReservationsRepository();
            var now        = new DateTime(2019, 8, 21);
            var sut        = new ReservationsController(
                TimeSpan.FromHours(2.5),
                new[] { new Table(capacity) },
                repository,
                new ConstantClock(now));

            var dto = new ReservationDto
            {
                Date     = now.Subtract(TimeSpan.FromDays(1)).ToString(),
                Quantity = quantity
            };
            var actual = sut.Post(dto);

            var br  = Assert.IsAssignableFrom <BadRequestObjectResult>(actual);
            var msg = Assert.IsAssignableFrom <string>(br.Value);

            Assert.NotEmpty(msg);
        }