public async Task PagesControllerIndexHtmlReturnsSuccessWhenNoData(string mediaTypeName) { // Arrange var controller = BuildSegmentController(mediaTypeName); var expectedIndexDocumentViewModel = new IndexDocumentViewModel { CanonicalName = "test-canonical-name" }; A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).Returns((IEnumerable <RelatedCareersSegmentModel>)null); A.CallTo(() => FakeMapper.Map <IndexDocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).Returns(expectedIndexDocumentViewModel); // Act var result = await controller.Index().ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <IndexDocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).MustNotHaveHappened(); var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <IndexViewModel>(viewResult.ViewData.Model); Assert.Null(model.Documents); controller.Dispose(); }
public async Task SegmentControllerUpsertReturnsSuccessForUpdate(string mediaTypeName) { // Arrange var existingModel = A.Fake <RelatedCareersSegmentModel>(); existingModel.SequenceNumber = 123; var modelToUpsert = A.Fake <RelatedCareersSegmentModel>(); modelToUpsert.SequenceNumber = 124; var controller = BuildSegmentController(mediaTypeName); var expectedUpsertResponse = HttpStatusCode.OK; A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).Returns(existingModel); A.CallTo(() => FakeRelatedCareersSegmentService.UpsertAsync(A <RelatedCareersSegmentModel> .Ignored)).Returns(expectedUpsertResponse); // Act var result = await controller.Put(modelToUpsert).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.UpsertAsync(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); var okResult = Assert.IsType <StatusCodeResult>(result); Assert.Equal((int)HttpStatusCode.OK, okResult.StatusCode); controller.Dispose(); }
public async Task SegmentControllerGetBodyJsonReturnsSuccess(string mediaTypeName) { // Arrange var relatedCareersSegmentModel = new RelatedCareersSegmentModel { CanonicalName = "SomeCanonicalName" }; var fakeRelatedCareerApiModel = new List <RelatedCareerApiModel> { new RelatedCareerApiModel { Title = "SomeTitle1", Url = "someurl1", }, }; var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).Returns(relatedCareersSegmentModel); A.CallTo(() => FakeMapper.Map <List <RelatedCareerApiModel> >(A <RelatedCareersSegmentModel> .Ignored)).Returns(fakeRelatedCareerApiModel); // Act var result = await controller.Body(documentId).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <List <RelatedCareerApiModel> >(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); var jsonResult = Assert.IsType <OkObjectResult>(result); Assert.IsAssignableFrom <List <RelatedCareerApiModel> >(jsonResult.Value); controller.Dispose(); }
public async Task SegmentControllerIndexHtmlReturnsSuccess(string mediaTypeName) { // Arrange const int resultsCount = 2; var expectedResults = A.CollectionOfFake <RelatedCareersSegmentModel>(resultsCount); var controller = BuildSegmentController(mediaTypeName); var expectedIndexDocumentViewModel = new IndexDocumentViewModel { CanonicalName = "test-canonical-name" }; A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).Returns(expectedResults); A.CallTo(() => FakeMapper.Map <IndexDocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).Returns(expectedIndexDocumentViewModel); // Act var result = await controller.Index().ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <IndexDocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappened(resultsCount, Times.Exactly); var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <IndexViewModel>(viewResult.ViewData.Model); Assert.Equal(resultsCount, model.Documents.Count()); controller.Dispose(); }
public async Task HealthControllerHealthReturnsServiceUnavailableWhenException() { // Arrange var controller = BuildHealthController(MediaTypeNames.Application.Json); A.CallTo(() => FakeRelatedCareersSegmentService.PingAsync()).Throws <Exception>(); // Act var result = await controller.Health().ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.PingAsync()).MustHaveHappenedOnceExactly(); var statusResult = Assert.IsType <StatusCodeResult>(result); Assert.Equal((int)HttpStatusCode.ServiceUnavailable, statusResult.StatusCode); controller.Dispose(); }
public async Task SegmentControllerDocumentHtmlReturnsNoContentWhenNoData(string mediaTypeName) { // Arrange var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.GetByNameAsync(A <string> .Ignored)).Returns((RelatedCareersSegmentModel)null); // Act var result = await controller.Document(Article).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetByNameAsync(A <string> .Ignored)).MustHaveHappenedOnceExactly(); var statusResult = Assert.IsType <NoContentResult>(result); Assert.Equal((int)HttpStatusCode.NoContent, statusResult.StatusCode); controller.Dispose(); }
public async Task SegmentControllerGetBodyHtmlReturnsSuccess(string mediaTypeName) { // Arrange var expectedResult = A.Fake <RelatedCareersSegmentModel>(); var controller = BuildSegmentController(mediaTypeName); var model = new DocumentViewModel { DocumentId = Guid.NewGuid(), CanonicalName = "nurse", RoutePrefix = "segment", SequenceNumber = 123, Data = new DocumentDataViewModel { LastReviewed = DateTime.UtcNow, RelatedCareers = new List <RelatedCareerDataViewModel> { new RelatedCareerDataViewModel { Id = Guid.NewGuid(), ProfileLink = "related-job-1", Title = "RelatedJobTitle1", }, }, }, }; A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).Returns(expectedResult); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).Returns(model); // Act var result = await controller.Body(documentId).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); var viewResult = Assert.IsType <ViewResult>(result); Assert.IsAssignableFrom <DocumentViewModel>(viewResult.ViewData.Model); controller.Dispose(); }
public async Task ReturnsSuccessForHtmlMediaType(string mediaTypeName) { // Arrange var controller = BuildSegmentController(mediaTypeName); var dbModels = GetSegmentModels(); A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).Returns(dbModels); // Act var result = await controller.RefreshDocuments().ConfigureAwait(false); // Assert A.CallTo(() => FakeJobProfileSegmentRefreshService.SendMessageListAsync(A <List <RefreshJobProfileSegmentServiceBusModel> > .Ignored)).MustHaveHappenedOnceExactly(); var res = Assert.IsType <JsonResult>(result); Assert.Equal(dbModels.Count, (res.Value as List <RefreshJobProfileSegmentServiceBusModel>).Count); controller.Dispose(); }
public async Task SegmentControllerDeleteReturnsNotFound(string mediaTypeName) { // Arrange const bool documentExists = false; var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.DeleteAsync(A <Guid> .Ignored)).Returns(documentExists); // Act var result = await controller.Delete(Guid.NewGuid()).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.DeleteAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); var statusResult = Assert.IsType <NotFoundResult>(result); Assert.Equal((int)HttpStatusCode.NotFound, statusResult.StatusCode); controller.Dispose(); }
public async Task ReturnsNoContentWhenNoData(string mediaTypeName) { // Arrange List <RelatedCareersSegmentModel> expectedResult = null; var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.GetAllAsync()).Returns(expectedResult); // Act var result = await controller.RefreshDocuments().ConfigureAwait(false); // Assert A.CallTo(() => FakeJobProfileSegmentRefreshService.SendMessageListAsync(A <List <RefreshJobProfileSegmentServiceBusModel> > .Ignored)).MustNotHaveHappened(); var statusResult = Assert.IsType <NoContentResult>(result); A.CallTo(() => FakeLogger.LogWarning(A <string> .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal((int)HttpStatusCode.NoContent, statusResult.StatusCode); controller.Dispose(); }
public async Task SegmentControllerGetBodyPlainMediaTypeReturnsNotAcceptable(string mediaTypeName) { // Arrange var expectedResult = A.Fake <RelatedCareersSegmentModel>(); var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).Returns(expectedResult); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).Returns(A.Fake <DocumentViewModel>()); // Act var result = await controller.Body(documentId).ConfigureAwait(false); var viewResult = Assert.IsType <StatusCodeResult>(result); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetByIdAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal((int)HttpStatusCode.NotAcceptable, viewResult.StatusCode); controller.Dispose(); }
public async Task HealthControllerHealthReturnsSuccessWhenhealthy() { // Arrange var controller = BuildHealthController(MediaTypeNames.Application.Json); A.CallTo(() => FakeRelatedCareersSegmentService.PingAsync()).Returns(true); // Act var result = await controller.Health().ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.PingAsync()).MustHaveHappenedOnceExactly(); var jsonResult = Assert.IsType <OkObjectResult>(result); var model = Assert.IsAssignableFrom <HealthViewModel>(jsonResult.Value); Assert.True(model.HealthItems.Count > 0); Assert.True(!string.IsNullOrWhiteSpace(model.HealthItems.First().Service)); Assert.True(!string.IsNullOrWhiteSpace(model.HealthItems.First().Message)); controller.Dispose(); }
public async Task SegmentControllerDocumentHtmlReturnsSuccess(string mediaTypeName) { // Arrange var expectedResult = A.Fake <RelatedCareersSegmentModel>(); var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeRelatedCareersSegmentService.GetByNameAsync(A <string> .Ignored)).Returns(expectedResult); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).Returns(A.Fake <DocumentViewModel>()); // Act var result = await controller.Document(Article).ConfigureAwait(false); // Assert A.CallTo(() => FakeRelatedCareersSegmentService.GetByNameAsync(A <string> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <DocumentViewModel>(A <RelatedCareersSegmentModel> .Ignored)).MustHaveHappenedOnceExactly(); var viewResult = Assert.IsType <ViewResult>(result); Assert.IsAssignableFrom <DocumentViewModel>(viewResult.ViewData.Model); controller.Dispose(); }