示例#1
0
        public void Action_filter_ignores_object_content_with_null_value()
        {
            // Arrange
            var facade = new Mock <ISitecoreItemFacade>();

            var filter = new ItemModelActionFilter {
                SitecoreItemFacade = facade.Object
            };

            var content = new ObjectContent(typeof(string), null, new JsonMediaTypeFormatter());
            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            };
            var actionContext         = new HttpActionContext();
            var actionExecutedContext = new HttpActionExecutedContext
            {
                ActionContext = actionContext,
                Response      = message
            };
            var token = new CancellationToken();

            // Act
            var taskResult = filter.OnActionExecutedAsync(actionExecutedContext, token);

            taskResult.Wait(token);

            // Assert
            Assert.IsNotNull(actionExecutedContext.ActionContext.Response.Content);
        }
示例#2
0
        public void Action_filter_applies_external_url_to_list_of_models()
        {
            // Arrange
            var facade = new Mock <ISitecoreItemFacade>();

            var item = GenerateTestItem(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "services client item");

            facade.Setup(x => x.GetItem(It.IsAny <ID>())).Returns(item);
            facade.Setup(x => x.GetItemExternalUrl(It.IsAny <Item>()))
            .ReturnsInOrder("http://itemurl.com/item1", "http://itemurl.com/item2", "http://itemurl.com/item3");

            var filter = new ItemModelActionFilter {
                SitecoreItemFacade = facade.Object
            };

            var itemModelList = new List <ItemModel>
            {
                new ItemModel
                {
                    ["ItemID"] = Guid.NewGuid().ToString()
                },
                new ItemModel
                {
                    ["ItemID"] = Guid.NewGuid().ToString()
                },
                new ItemModel
                {
                    ["ItemID"] = Guid.NewGuid().ToString()
                }
            };

            var content = new ObjectContent(typeof(List <ItemModel>), itemModelList, new JsonMediaTypeFormatter());
            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            };
            var actionContext         = new HttpActionContext();
            var actionExecutedContext = new HttpActionExecutedContext
            {
                ActionContext = actionContext,
                Response      = message
            };
            var token = new CancellationToken();

            // Act
            var taskResult = filter.OnActionExecutedAsync(actionExecutedContext, token);

            taskResult.Wait(token);

            // Assert
            Assert.IsNotNull(actionExecutedContext.ActionContext.Response.Content);
            var contentItemModelList = ((ObjectContent)actionExecutedContext.ActionContext.Response.Content).Value as List <ItemModel>;

            Assert.IsNotNull(contentItemModelList);
            Assert.AreEqual(3, contentItemModelList.Count);
            Assert.AreEqual("http://itemurl.com/item1", contentItemModelList[0]["ExternalUrl"]);
            Assert.AreEqual("http://itemurl.com/item2", contentItemModelList[1]["ExternalUrl"]);
            Assert.AreEqual("http://itemurl.com/item3", contentItemModelList[2]["ExternalUrl"]);
        }
示例#3
0
        public void Action_filter_ignores_object_content_with_reference_to_invalid_item_id()
        {
            // Arrange
            var facade = new Mock <ISitecoreItemFacade>();

            Item nullItem = null;

            facade.Setup(x => x.GetItem(It.IsAny <ID>())).Returns(nullItem);

            var filter = new ItemModelActionFilter {
                SitecoreItemFacade = facade.Object
            };

            var itemModel = new ItemModel
            {
                ["ItemID"] = Guid.NewGuid().ToString()
            };

            var content = new ObjectContent(typeof(ItemModel), itemModel, new JsonMediaTypeFormatter());
            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            };
            var actionContext         = new HttpActionContext();
            var actionExecutedContext = new HttpActionExecutedContext
            {
                ActionContext = actionContext,
                Response      = message
            };
            var token = new CancellationToken();

            // Act
            var taskResult = filter.OnActionExecutedAsync(actionExecutedContext, token);

            taskResult.Wait(token);

            // Assert
            Assert.IsNotNull(actionExecutedContext.ActionContext.Response.Content);
        }