public void PostRequestResultsInAcceptedWithValidGuid()
        {
            var     mock = new Mock <ICreateProductRequestJournal>();
            Product product;

            mock
            .Setup(m => m.Book(It.IsAny <CreateProductRequest>()))
            .Callback((CreateProductRequest m) => product = m.Product)
            .Returns(new Guid("12345678901234567890123456789012"));

            var controller = new CreateProductRequestsController(mock.Object);

            var result = controller.Post(new CreateProductRequest {
                Product = new Product {
                    Name = "the name", Price = "66.66"
                }
            });

            var acceptedResult = Assert.IsType <AcceptedAtActionResult>(result);

            Assert.True(acceptedResult.RouteValues.ContainsKey("id"));
            Guid guid = Assert.IsType <Guid>(acceptedResult.RouteValues["id"]);

            Assert.NotEqual(Guid.Empty, guid);
        }
        public void PostRequestWithNullRequestResultsInBadRequest()
        {
            var mock = new Mock <ICreateProductRequestJournal>();

            mock.Setup(m => m.Book(It.IsAny <CreateProductRequest>())).Returns(new Guid("12345678901234567890123456789012"));
            var controller = new CreateProductRequestsController(mock.Object);

            var result = controller.Post(null);

            var acceptedResult = Assert.IsType <BadRequestObjectResult>(result);
        }