コード例 #1
0
        public void PostSetsLocationHeader()
        {
            // arrange
            var item = this.GetDemoProduct();

            var mockDbset = Substitute.For<DbSet<Product>>();
            var mockDbContext = Substitute.For<StoreAppTestControllerContext>();
            mockDbContext.Products = mockDbset;
            mockDbContext.Products.Add(item).Returns(item);

            var controller = new ProductsController(mockDbContext);
            controller.Request = new HttpRequestMessage
            {
                RequestUri = new Uri("http://localhost/api/products")
            };

            controller.Configuration = new HttpConfiguration();
            controller.Configuration.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional });

            controller.RequestContext.RouteData = new HttpRouteData(
                route: new HttpRoute(),
                values: new HttpRouteValueDictionary { { "controller", "products" } });

            // act
            var response = controller.Post(item);

            // assert
            Assert.Equal("http://localhost/api/products/1", response.Headers.Location.AbsoluteUri);
        }
コード例 #2
0
        public void GetReturnsProduct()
        {
            // arrange
            var item = this.GetDemoProduct();

            var mockDbSet = Substitute.For<DbSet<Product>>();
            var mockDbContext = Substitute.For<StoreAppTestControllerContext>();
            mockDbContext.Products = mockDbSet;
            mockDbContext.Products.Find(item.Id).Returns(item);

            var controller = new ProductsController(mockDbContext);
            controller.Request = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // act
            var response = controller.Get(1);

            // assert
            Product product;

            Assert.True(response.TryGetContentValue<Product>(out product));
            Assert.Equal(1, product.Id);
        }
コード例 #3
0
        public void PostSetsLocationHeader_MockVersion()
        {
            // arrange
            var item = this.GetDemoProduct();

            var mockDbset = Substitute.For<DbSet<Product>>();
            var mockDbContext = Substitute.For<StoreAppTestControllerContext>();
            mockDbContext.Products = mockDbset;
            mockDbContext.Products.Add(item).Returns(item);

            var controller = new ProductsController(mockDbContext);
            controller.Request = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            string locationUrl = "http://location/";

            var mockUrlHelper = Substitute.For<UrlHelper>();
            mockUrlHelper.Link(Arg.Any<string>(), Arg.Any<object>()).Returns(locationUrl);
            controller.Url = mockUrlHelper;

            // act
            var response = controller.Post(item);

            // assert
            Assert.Equal(locationUrl, response.Headers.Location.AbsoluteUri);
        }