示例#1
0
        public async void GetBannersAsyncShouldReturnEmptyListIfNoBannersExists()
        {
            //arrange
            var mockRepo = new Mock <IBannerRepository>();

            IEnumerable <Banner> banners = new List <Banner>();

            mockRepo.Setup(repo => repo.GetAllAsync()).Returns(Task.FromResult(banners)).Verifiable();
            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var bannersDto = new List <BannerDto>();

            mockMapper.Setup(mapper => mapper.Map <List <Banner>, List <BannerDto> >(It.IsAny <List <Banner> >())).Returns(bannersDto).Verifiable();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var result = await sut.GetBannersAsync();

            //assert
            var okObjectResult = Assert.IsType <OkObjectResult>(result);

            mockRepo.Verify(mock => mock.GetAllAsync(), Times.Once());

            var model = Assert.IsAssignableFrom <List <BannerDto> >(
                okObjectResult.Value);

            Assert.True(!model.Any());
            Assert.Equal(200, okObjectResult.StatusCode);
        }
示例#2
0
        public async void GetBannerHtmlShouldReturnString()
        {
            //arrange
            var fixture = new Fixture();

            fixture.Customize <Banner>(b => b.Without(p => p.InternalId).With(ba => ba.Html, "<div></div>"));
            var banner = fixture.Create <Banner>();

            var mockRepo = new Mock <IBannerRepository>();

            mockRepo.Setup(repo => repo.GetAsync(banner.Id)).Returns(Task.FromResult(banner)).Verifiable();

            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            //act
            var result = await sut.GetBannerHtmlByIdAsync(banner.Id);

            //assert
            Assert.IsType <string>(result);
            mockRepo.Verify(mock => mock.GetAsync(banner.Id), Times.Once());
            Assert.Equal(200, sut.HttpContext.Response.StatusCode);
            Assert.Equal(banner.Html, result);
        }
示例#3
0
        public async void GetBannerHtmlShouldReturnNotFoundResult()
        {
            //arrange

            var mockRepo = new Mock <IBannerRepository>();

            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            //act
            var result = await sut.GetBannerHtmlByIdAsync(It.IsAny <Guid>());

            //assert
            var model = Assert.IsType <string>(result);

            mockRepo.Verify(mock => mock.GetAsync(It.IsAny <Guid>()), Times.Once());

            Assert.Equal(404, sut.HttpContext.Response.StatusCode);
            Assert.Equal(model, string.Empty);
        }
示例#4
0
        public async void RemoveBannerRequestShouldReturnStatusCode204IfBannerExists()
        {
            //arrange
            var fixture = new Fixture();

            fixture.Customize <Banner>(b => b.Without(p => p.InternalId));
            var banner   = fixture.Create <Banner>();
            var mockRepo = new Mock <IBannerRepository>();

            mockRepo.Setup(repo => repo.GetAsync(banner.Id)).Returns(Task.FromResult(banner)).Verifiable();
            mockRepo.Setup(repo => repo.RemoveAsync(banner.Id)).Returns(Task.FromResult(true)).Verifiable();

            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var result = await sut.DeleteAsync(banner.Id);

            //assert
            var statusCodeResult = Assert.IsType <StatusCodeResult>(result);

            mockRepo.Verify(mock => mock.RemoveAsync(banner.Id), Times.Once());
            mockRepo.Verify(mock => mock.GetAsync(banner.Id), Times.Once());
            Assert.Equal(204, statusCodeResult.StatusCode);
        }
示例#5
0
        public void RunBeforeEachTest()
        {
            var mapper         = MapperFactory.GetMapper();
            var contextOptions = new DbContextOptionsBuilder <BannerContext>()
                                 .UseInMemoryDatabase("TestBannerContext").Options;

            HtmlValidatorMock = new Mock <IHtmlValidator>();

            Context    = new BannerContext(contextOptions);
            Controller = new BannersController(Context, mapper, HtmlValidatorMock.Object);
        }
示例#6
0
        public async void UpdatingBannerShouldReturnBannerDto()
        {
            //arrange
            var fixture = new Fixture();

            fixture.Customize <Banner>(b => b.Without(p => p.InternalId));
            var banner = fixture.Create <Banner>();

            var mockRepo = new Mock <IBannerRepository>();

            mockRepo.Setup(repo => repo.GetAsync(It.IsAny <Guid>())).Returns(Task.FromResult(banner)).Verifiable();
            mockRepo.Setup(repo => repo.UpdateAsync(It.IsAny <Guid>(), banner)).Returns(Task.FromResult(true)).Verifiable();

            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var bannerDto = fixture.Create <BannerDto>();

            mockMapper.Setup(mapper => mapper.Map <Banner, BannerDto>(It.IsAny <Banner>())).Returns(bannerDto).Verifiable();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            var validHtml            = "<div></div>";
            var bannerUpdateDtoValid = fixture.Build <BannerUpdateDto>().With(b => b.Html, validHtml).Create();

            //act
            var resultValidHtml = await sut.PutAsync(It.IsAny <Guid>(), bannerUpdateDtoValid);


            //assert
            var okObjectResult = Assert.IsType <OkObjectResult>(resultValidHtml);

            mockRepo.Verify(mock => mock.UpdateAsync(It.IsAny <Guid>(), banner), Times.Once());
            var model = Assert.IsAssignableFrom <BannerDto>(
                okObjectResult.Value);

            Assert.Equal(model, bannerDto);
            Assert.Equal(200, okObjectResult.StatusCode);
            Assert.Equal(sut.ControllerContext.HttpContext.Response.Headers["Location"], $"http://localhost:50211/api/v1/banners/{banner.Id}");
        }
        public BannersControllerTests()
        {
            // Arrange
            mockBannerService = new Mock <IBannerService>();
            mockMapper        = new Mock <IMapper>();
            sut = new BannersController(mockBannerService.Object, mockMapper.Object);

            banners = new Entities.Banner[]
            {
                new Entities.Banner {
                    Id = 1, Name = "Banner1", Description = "Banner1_Description", ImageUrl = "Banner1_ImageUrl"
                },
                new Entities.Banner {
                    Id = 2, Name = "Banner2", Description = "Banner2_Description", ImageUrl = "Banner2_ImageUrl"
                },
                new Entities.Banner {
                    Id = 3, Name = "Banner3", Description = "Banner3_Description", ImageUrl = "Banner3_ImageUrl"
                }
            };
        }
示例#8
0
        public async Task PostsToBannerAndChecksGoodHtmlReturned()
        {
            var options = new DbContextOptionsBuilder <IBannersContext>()
                          .UseInMemoryDatabase(databaseName: "TestFixturedatabase2")
                          .Options;

            using (var context = new IBannersContext(options))
            {
                var controller = new BannersController(context);
                var banner     = new Banner {
                    Id = 1, Html = "&lt;html&gt;&lt;body&gt;&lt;h2 title=&quot;I'm a header&quot;&gt;The title Attribute&lt;/h2&gt;&lt;p title=&quot;I'm a tooltip&quot;&gt;Mouse over this paragraph, to display the title attribute as a tooltip.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;", Created = DateTime.Parse("2015-12-08T15:15:19Z")
                };

                var a = controller.PostBanner(banner);

                var r = await controller.GetBannerHtml(1) as ContentResult;

                string expected = @"<html><body><h2 title=""I'm a header"">The title Attribute</h2><p title=""I'm a tooltip"">Mouse over this paragraph, to display the title attribute as a tooltip.</p></body></html>";
                Assert.AreEqual(expected, r.Content);
            }
        }
示例#9
0
        public async Task PostsToBannerAndChecksValueReturnedIsSameAsGet()
        {
            var options = new DbContextOptionsBuilder <IBannersContext>()
                          .UseInMemoryDatabase(databaseName: "TestFixturedatabase")
                          .Options;

            using (var context = new IBannersContext(options))
            {
                var controller = new BannersController(context);
                var banner     = new Banner {
                    Id = 1, Html = "&lt;html&gt;&lt;body&gt;&lt;h2 title=&quot;I'm a header&quot;&gt;The title Attribute&lt;/h2&gt;&lt;p title=&quot;I'm a tooltip&quot;&gt;Mouse over this paragraph, to display the title attribute as a tooltip.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;", Created = DateTime.Parse("2015-12-08T15:15:19Z")
                };
                var response = controller.PostBanner(banner);
                var res      = response.Result as CreatedAtActionResult;

                var r = await controller.GetBanner(1) as OkObjectResult;

                Assert.AreEqual(banner, res.Value);
                Assert.AreEqual(banner, r.Value);
            }
        }
示例#10
0
        public async void RemoveBannerRequestShouldReturnNotFoundResultIfBannerDoesNotExist()
        {
            //arrange

            var mockRepo        = new Mock <IBannerRepository>();
            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var result = await sut.DeleteAsync(It.IsAny <Guid>());

            //assert
            var notFoundResult = Assert.IsType <NotFoundResult>(result);

            mockRepo.Verify(mock => mock.RemoveAsync(It.IsAny <Guid>()), Times.Never());

            Assert.Equal(404, notFoundResult.StatusCode);
        }
示例#11
0
        public async void AddingNewBannerShouldReturnBadRequestIfInvalidHtml()
        {
            //arrange
            var mockRepo        = new Mock <IBannerRepository>();
            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var fixture         = new Fixture();
            var invalidHtml     = "<div>div>";
            var createBannerDto = fixture.Build <BannerCreateDto>().With(b => b.Html, invalidHtml).Create();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var resultInvalidHtml = await sut.PostAsync(createBannerDto);

            //assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(resultInvalidHtml);

            Assert.Equal(400, badRequestObjectResult.StatusCode);
        }
示例#12
0
        public async void GetBannerByIdAsyncShouldReturnNotFoundResult()
        {
            //arrange
            var mockRepo = new Mock <IBannerRepository>();


            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var resultNotFound = await sut.GetBannerByIdAsync(It.IsAny <Guid>());

            //assert
            var notFoundObjectResult = Assert.IsType <NotFoundResult>(resultNotFound);

            mockRepo.Verify(mock => mock.GetAsync(It.IsAny <Guid>()), Times.Once());

            Assert.Equal(404, notFoundObjectResult.StatusCode);
        }
示例#13
0
        public async void UpdatingBannerShouldReturnBadRequestWhenPassedInvalidHtml()
        {
            //arrange
            var mockRepo        = new Mock <IBannerRepository>();
            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var sut                    = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);
            var fixture                = new Fixture();
            var invalidHtml            = "<div>div>";
            var bannerUpdateDtoInvalid = fixture.Build <BannerUpdateDto>().With(b => b.Html, invalidHtml).Create();

            //act
            var resultInvalidHtml = await sut.PutAsync(It.IsAny <Guid>(), bannerUpdateDtoInvalid);

            //assert
            var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(resultInvalidHtml);

            Assert.IsAssignableFrom <IEnumerable <HtmlParseError> >(
                badRequestObjectResult.Value);
            Assert.Equal(400, badRequestObjectResult.StatusCode);
        }
示例#14
0
        public async void GetBannerByIdAsyncShouldReturnBannerDto()
        {
            //arrange
            var mockRepo = new Mock <IBannerRepository>();

            var fixture = new Fixture();

            fixture.Customize <Banner>(b => b.Without(p => p.InternalId));
            var banner = fixture.Create <Banner>();

            mockRepo.Setup(repo => repo.GetAsync(banner.Id)).Returns(Task.FromResult(banner)).Verifiable();
            var mockLogger      = new Mock <ILogger <BannersController> >();
            var mockMapper      = new Mock <IMapper>();
            var mockTransformer = new Mock <ITransformer>();

            var bannerDto = fixture.Create <BannerDto>();

            mockMapper.Setup(mapper => mapper.Map <Banner, BannerDto>(It.IsAny <Banner>())).Returns(bannerDto).Verifiable();

            var sut = new BannersController(mockRepo.Object, mockLogger.Object, mockMapper.Object, mockTransformer.Object);

            //act
            var resultFound = await sut.GetBannerByIdAsync(banner.Id);


            //assert
            var okObjectResult = Assert.IsType <OkObjectResult>(resultFound);

            mockRepo.Verify(mock => mock.GetAsync(banner.Id), Times.Once());
            mockMapper.Verify(mock => mock.Map <Banner, BannerDto>(banner), Times.Once);

            var model = Assert.IsAssignableFrom <BannerDto>(
                okObjectResult.Value);

            Assert.Equal(model, bannerDto);
            Assert.Equal(200, okObjectResult.StatusCode);
        }