public void ModelTest()
 {
     _ = new GetIndexModel
     {
         Locations = new List <string>(),
     };
 }
        public async Task IndexWhenNoDateInApiReturnsData()
        {
            // arrange
            var expectedContentPageModel1 = new ContentPageModel
            {
                Id                = Guid.NewGuid(),
                CanonicalName     = "test-test",
                PageLocation      = "/top-of-the-tree",
                RedirectLocations = new List <string>
                {
                    "/test/test",
                },
                Url = new Uri("http://www.test.com"),
            };
            var expectedContentPageModel2 = new ContentPageModel
            {
                Id                       = Guid.NewGuid(),
                CanonicalName            = "default-page",
                PageLocation             = "/top-of-the-tree",
                IsDefaultForPageLocation = true,
                RedirectLocations        = new List <string>
                {
                    "/test/test",
                },
                Url = new Uri("http://www.test.com"),
            };
            var expectedContentPageModels = new List <ContentPageModel> {
                expectedContentPageModel1, expectedContentPageModel2,
            };
            var expectedGetIndexModel1 = new GetIndexModel
            {
                Id        = expectedContentPageModel1.Id,
                Locations = expectedContentPageModel1.RedirectLocations,
            };
            var expectedGetIndexModel2 = new GetIndexModel
            {
                Id        = expectedContentPageModel2.Id,
                Locations = expectedContentPageModel2.RedirectLocations,
            };

            A.CallTo(() => fakeContentPageService.GetAllAsync(A <string> .Ignored)).Returns(expectedContentPageModels);

            using var controller = new ApiController(logger, fakeContentPageService, fakeMapper);

            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel1)).Returns(expectedGetIndexModel1);
            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel2)).Returns(expectedGetIndexModel2);

            // act
            var result = await controller.Index().ConfigureAwait(false) as OkObjectResult;

            // assert
            A.CallTo(() => fakeContentPageService.GetAllAsync(A <string> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel1)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel2)).MustHaveHappenedOnceExactly();

            Assert.NotNull(result);
            Assert.IsType <Dictionary <Guid, GetIndexModel> >(result !.Value);
            Assert.NotEmpty(result.Value as Dictionary <Guid, GetIndexModel>);
        }
        public async Task ApiControllerDocuemntReturnsSuccess()
        {
            // arrange
            const HttpStatusCode expectedStatusCode = HttpStatusCode.OK;
            var expectedContentPageModel            = new ContentPageModel
            {
                Id                = Guid.NewGuid(),
                CanonicalName     = "test-test",
                RedirectLocations = new List <string>
                {
                    "/test/test",
                },
                Url = new Uri("http://www.test.com"),
            };
            var expectedGetIndexModel = new GetIndexModel
            {
                Locations = expectedContentPageModel.RedirectLocations,
            };

            A.CallTo(() => fakeContentPageService.GetByIdAsync(A <Guid> .Ignored, A <string> .Ignored)).Returns(expectedContentPageModel);
            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel)).Returns(expectedGetIndexModel);

            using var controller = new ApiController(logger, fakeContentPageService, fakeMapper);

            // act
            var result = await controller.Document(expectedContentPageModel.Id).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeContentPageService.GetByIdAsync(A <Guid> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly();
            A.CallTo(() => fakeMapper.Map <GetIndexModel>(expectedContentPageModel)).MustHaveHappenedOnceExactly();

            var jsonResult  = Assert.IsType <OkObjectResult>(result);
            var modelResult = Assert.IsAssignableFrom <GetIndexModel>(jsonResult.Value);

            Assert.Equal((int)expectedStatusCode, jsonResult.StatusCode);
            Assert.Equal(expectedGetIndexModel, modelResult);
        }