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); }
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); }
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); }
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); }
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); }
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" } }; }
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 = "<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>", 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); } }
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 = "<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>", 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); } }
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); }
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); }
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); }
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); }
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); }