public async Task <IActionResult> Post(RecordContract recordContract) { try { _logger.LogInformation("Posting a new record."); var record = _mapper.Map <Record>(recordContract); var result = await _repo.UpsertRecord(record); if (result.DateModified == null) { var newUri = Url.Link("RecordGet", new { appName = record.ApplicationName, dataType = record.DataType, version = record.Version }); return(Created(newUri, _mapper.Map <RecordContract>(record))); } return(Ok(_mapper.Map <RecordContract>(result))); } catch (System.Exception e) { _logger.LogError(e.Message); } _logger.LogWarning($"Problem saving {recordContract.ApplicationName}/{recordContract.DataType}/{recordContract.Version}."); return(BadRequest("Could not update record")); }
public void Post_Update() { // Arrange var recordContract = new RecordContract { ApplicationName = "testAppName", DataType = "dataType", Version = "version1", Value = "value", DateCreated = DateTime.UtcNow, DateModified = DateTime.UtcNow }; var req = new MockHttpRequest { Body = RecordFunctionTests.GenerateStreamFromString(_record) }; var mapper = Substitute.For <IMapper>(); var repo = Substitute.For <IRepository>(); repo.UpsertRecord(Arg.Any <Model.Record>()).Returns(Task.FromResult <Model.Record>(new Model.Record { DateModified = DateTime.Now })); var logger = Substitute.For <ILogger <Records> >(); var target = new Records(repo, mapper); // Act var result = target.Post(req, logger).Result; // Assert Assert.IsType <OkObjectResult>(result); }
public void Post_Throws() { // Arrange var recordContract = new RecordContract { ApplicationName = "testAppName", DataType = "dataType", Version = "version1", Value = "value", DateCreated = DateTime.UtcNow, DateModified = DateTime.UtcNow }; var mapper = Substitute.For <IMapper>(); var repo = Substitute.For <IRepository>(); repo.UpsertRecord(Arg.Any <Model.Record>()).Returns(Task.FromException <Model.Record>(new System.Exception("Boom"))); var logger = Substitute.For <ILogger <RecordsController> >(); var target = new RecordsController(repo, logger, mapper); // Act var result = target.Post(recordContract).Result; // Assert logger.Received().Log( LogLevel.Error, Arg.Any <EventId>(), Arg.Is <object>(o => o.ToString() == "Boom"), null, Arg.Any <Func <object, Exception, string> >()); Assert.IsType <BadRequestObjectResult>(result); }
public void Post_Insert() { // Arrange var recordContract = new RecordContract { ApplicationName = "testAppName", DataType = "dataType", Version = "version1", Value = "value" }; var record = new Model.Record { ApplicationName = "testAppName", DataType = "dataType", Version = "version1", Value = "value" }; var mapper = Substitute.For <IMapper>(); mapper.Map <Model.Record>(Arg.Any <RecordContract>()).Returns(record); var repo = Substitute.For <IRepository>(); repo.UpsertRecord(Arg.Any <Model.Record>()).Returns(Task.FromResult <Model.Record>(record)); var logger = Substitute.For <ILogger <RecordsController> >(); var target = new RecordsController(repo, logger, mapper) { Url = Substitute.For <IUrlHelper>() }; // Act var result = target.Post(recordContract).Result; // Assert Assert.IsType <CreatedResult>(result); }
public async Task <IActionResult> Post( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "Records")] HttpRequest req, ILogger log) { RecordContract recordContract = null; try { log.LogInformation("Posting a new record."); //read json object from request body var content = await new StreamReader(req.Body).ReadToEndAsync(); recordContract = JsonConvert.DeserializeObject <Model.Contracts.RecordContract>(content); var record = _mapper.Map <Model.Record>(recordContract); var result = await _repo.UpsertRecord(record); if (result.DateModified == null) { var newUri = $"Records/{record.ApplicationName}/{record.DataType}/{record.Version}"; return(new CreatedResult(newUri, _mapper.Map <RecordContract>(record))); } return(new OkObjectResult(_mapper.Map <RecordContract>(record))); } catch (Exception e) { log.LogError(e.Message); } log.LogWarning($"Problem saving {recordContract?.ApplicationName}/{recordContract?.DataType}/{recordContract?.Version}."); return(new BadRequestObjectResult("Could not update record")); }