public async Task <IActionResult> Post([FromBody] HowToBecomeSegmentModel upsertHowToBecomeSegmentModel) { logService.LogInformation($"{PostActionName} has been called"); if (upsertHowToBecomeSegmentModel == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var existingDocument = await howToBecomeSegmentService.GetByIdAsync(upsertHowToBecomeSegmentModel.DocumentId).ConfigureAwait(false); if (existingDocument != null) { return(new StatusCodeResult((int)HttpStatusCode.AlreadyReported)); } var response = await howToBecomeSegmentService.UpsertAsync(upsertHowToBecomeSegmentModel) .ConfigureAwait(false); logService.LogInformation($"{PostActionName} has upserted content for: {upsertHowToBecomeSegmentModel.CanonicalName}"); return(new StatusCodeResult((int)response)); }
public async Task <IActionResult> Put([FromBody] HowToBecomeSegmentModel upsertHowToBecomeSegmentModel) { logService.LogInformation($"{PutActionName} has been called"); if (upsertHowToBecomeSegmentModel == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var existingDocument = await howToBecomeSegmentService.GetByIdAsync(upsertHowToBecomeSegmentModel.DocumentId).ConfigureAwait(false); if (existingDocument == null) { return(new StatusCodeResult((int)HttpStatusCode.NotFound)); } if (upsertHowToBecomeSegmentModel.SequenceNumber <= existingDocument.SequenceNumber) { return(new StatusCodeResult((int)HttpStatusCode.AlreadyReported)); } upsertHowToBecomeSegmentModel.Etag = existingDocument.Etag; upsertHowToBecomeSegmentModel.SocLevelTwo = existingDocument.SocLevelTwo; var response = await howToBecomeSegmentService.UpsertAsync(upsertHowToBecomeSegmentModel).ConfigureAwait(false); return(new StatusCodeResult((int)response)); }
public async Task DeleteSegmentEndpointsReturnSuccessWhenFound() { // Arrange var documentId = Guid.NewGuid(); var deleteUri = new Uri($"{SegmentUrl}/{documentId}", UriKind.Relative); var howToBecomeSegmentModel = new HowToBecomeSegmentModel { DocumentId = documentId, CanonicalName = documentId.ToString().ToLowerInvariant(), SocLevelTwo = "12345", Data = new HowToBecomeSegmentDataModel { LastReviewed = DateTime.UtcNow }, }; var client = factory.CreateClient(); client.DefaultRequestHeaders.Accept.Clear(); await client.PostAsync(SegmentUrl, howToBecomeSegmentModel, new JsonMediaTypeFormatter()) .ConfigureAwait(false); // Act var response = await client.DeleteAsync(deleteUri).ConfigureAwait(false); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public async Task SegmentControllerGetBodyJsonReturnsSuccess(string mediaTypeName) { // Arrange var howToBecomeSegmentModel = new HowToBecomeSegmentModel { CanonicalName = "SomeCanonicalName" }; var fakeHowToBecomeApiModel = A.Dummy <HowToBecomeApiModel>(); var controller = BuildSegmentController(mediaTypeName); A.CallTo(() => FakeHowToBecomeSegmentService.GetByIdAsync(A <Guid> .Ignored)).Returns(howToBecomeSegmentModel); A.CallTo(() => FakeMapper.Map <HowToBecomeApiModel>(A <HowToBecomeSegmentDataModel> .Ignored)).Returns(fakeHowToBecomeApiModel); // Act var result = await controller.Body(documentId).ConfigureAwait(false); // Assert A.CallTo(() => FakeHowToBecomeSegmentService.GetByIdAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <HowToBecomeApiModel>(A <HowToBecomeSegmentDataModel> .Ignored)).MustHaveHappenedOnceExactly(); var jsonResult = Assert.IsType <OkObjectResult>(result); Assert.IsAssignableFrom <HowToBecomeApiModel>(jsonResult.Value); controller.Dispose(); }
public async Task PutSegmentEndpointsReturnOk() { // Arrange var howToBecomeSegmentModel = new HowToBecomeSegmentModel { DocumentId = Guid.NewGuid(), CanonicalName = Guid.NewGuid().ToString(), SocLevelTwo = "11PutSoc", Data = GetDefaultHowToBecomeSegmentDataModel(nameof(PutSegmentEndpointsReturnOk)), }; var client = factory.CreateClient(); client.DefaultRequestHeaders.Accept.Clear(); await client.PostAsync(SegmentUrl, howToBecomeSegmentModel, new JsonMediaTypeFormatter()) .ConfigureAwait(false); // Act howToBecomeSegmentModel.SequenceNumber++; var response = await client.PutAsync(SegmentUrl, howToBecomeSegmentModel, new JsonMediaTypeFormatter()) .ConfigureAwait(false); // Assert response.EnsureSuccessStatusCode(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public static CommonRoutes GetExistingCommonRoute(this HowToBecomeSegmentModel existingSegmentModel, RouteName routeName) { return(existingSegmentModel ?.Data ?.EntryRoutes ?.CommonRoutes .FirstOrDefault(e => e.RouteName == routeName)); }
private async Task <HttpStatusCode> SendMessageData(HowToBecomeSegmentModel fullModel) { var result = await httpClientService.PutFullJobProfileAsync(fullModel).ConfigureAwait(false); if (result == HttpStatusCode.NotFound) { return(await httpClientService.PostFullJobProfileAsync(fullModel).ConfigureAwait(false)); } return(result); }
private async Task <HttpStatusCode> UpsertAndRefreshSegmentModel(HowToBecomeSegmentModel existingSegmentModel) { var result = await repository.UpsertAsync(existingSegmentModel).ConfigureAwait(false); if (result == HttpStatusCode.OK || result == HttpStatusCode.Created) { var refreshJobProfileSegmentServiceBusModel = mapper.Map <RefreshJobProfileSegmentServiceBusModel>(existingSegmentModel); await jobProfileSegmentRefreshService.SendMessageAsync(refreshJobProfileSegmentServiceBusModel).ConfigureAwait(false); } return(result); }
public async Task <HttpStatusCode> UpsertAsync(HowToBecomeSegmentModel howToBecomeSegmentModel) { if (howToBecomeSegmentModel == null) { throw new ArgumentNullException(nameof(howToBecomeSegmentModel)); } if (howToBecomeSegmentModel.Data == null) { howToBecomeSegmentModel.Data = new HowToBecomeSegmentDataModel(); } return(await UpsertAndRefreshSegmentModel(howToBecomeSegmentModel).ConfigureAwait(false)); }
public async Task HowToBecomeSegmentServicePatchRegistrationReturnsNotFoundWhenDocumentNotExists() { // arrange var patchModel = A.Fake <PatchRegistrationModel>(); var documentId = Guid.NewGuid(); HowToBecomeSegmentModel existingSegmentModel = null; var expectedResult = HttpStatusCode.NotFound; A.CallTo(() => repository.GetAsync(A <Expression <Func <HowToBecomeSegmentModel, bool> > > .Ignored)).Returns(existingSegmentModel); // act var result = await howToBecomeSegmentService.PatchRegistrationAsync(patchModel, documentId).ConfigureAwait(false); // assert A.CallTo(() => repository.GetAsync(A <Expression <Func <HowToBecomeSegmentModel, bool> > > .Ignored)).MustHaveHappenedOnceExactly(); Assert.Equal(expectedResult, result); }
public async Task SeedDefaultArticle(CustomWebApplicationFactory <Startup> factory) { const string url = "/segment"; var model = new HowToBecomeSegmentModel { DocumentId = MainArticleGuid, CanonicalName = Job1CanonicalName, SocLevelTwo = MainJobSocLevelTwo, Data = GetDefaultHowToBecomeSegmentDataModel(), }; var client = factory?.CreateClient(); client?.DefaultRequestHeaders.Accept.Clear(); await client.PostAsync(url, model, new JsonMediaTypeFormatter()).ConfigureAwait(false); }
public async Task <HttpStatusCode> PutFullJobProfileAsync(HowToBecomeSegmentModel howToBecomeSegmentModel) { var url = new Uri($"{segmentClientOptions?.BaseAddress}segment"); ConfigureHttpClient(); using (var content = new ObjectContent(typeof(HowToBecomeSegmentModel), howToBecomeSegmentModel, new JsonMediaTypeFormatter(), MediaTypeNames.Application.Json)) { var response = await httpClient.PutAsync(url, content).ConfigureAwait(false); if (!response.IsSuccessStatusCode && response.StatusCode != HttpStatusCode.NotFound) { var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); logService.LogError($"Failure status code '{response.StatusCode}' received with content '{responseContent}', for Put type {typeof(HowToBecomeSegmentModel)}, Id: {howToBecomeSegmentModel?.DocumentId}"); response.EnsureSuccessStatusCode(); } return(response.StatusCode); } }
public async Task PostSegmentEndpointsForDefaultArticleRefreshAllReturnOk() { // Arrange var howToBecomeSegmentModel = new HowToBecomeSegmentModel { DocumentId = DataSeeding.MainArticleGuid, CanonicalName = DataSeeding.Job1CanonicalName, SocLevelTwo = DataSeeding.MainJobSocLevelTwo, Data = GetDefaultHowToBecomeSegmentDataModel(nameof(PostSegmentEndpointsForDefaultArticleRefreshAllReturnOk)), }; var client = factory.CreateClient(); client.DefaultRequestHeaders.Accept.Clear(); // Act var response = await client.PostAsync(SegmentUrl, howToBecomeSegmentModel, new JsonMediaTypeFormatter()).ConfigureAwait(false); // Assert Assert.True(response.IsSuccessStatusCode); }