private async Task <DynamicForm> FindExistingForm(DynamicFormCopy formCopy, int widgetId) { var results = await _repository.FindAsync <DynamicForm>(CollectionName, x => x.WidgetId == widgetId && x.Revision == formCopy.Revision); return(results.SingleOrDefault()); }
public async Task should_return_existing_draft_copy() { var id = ObjectId.GenerateNewId(); var model = new DynamicFormCopy { Id = id.ToString() }; var cursor = StubCursor(); var form = new DynamicForm { Id = id }; cursor.Setup(x => x.Current).Returns(new List <DynamicForm> { form }); cursor.SetupSequence(x => x.MoveNext(It.IsAny <CancellationToken>())) .Returns(true) .Returns(true) .Returns(false); var body = await ExecuteEndpoint(_controller.Upsert(model)); _repository.Verify(x => x.SaveAsync( FormController.CollectionName, It.IsAny <DynamicForm>()), Times.Never); body.Should().Be(form); }
public async Task should_save_new_copy_of_original_form() { var id = ObjectId.GenerateNewId(); var model = new DynamicFormCopy { Id = id.ToString() }; var cursor = StubCursor(); var form = new DynamicForm { Id = id }; StubSingleFoundResult(cursor, form); _repository.Setup(x => x.SaveAsync ( FormController.CollectionName, It.IsAny <DynamicForm>() ) ) .ReturnsAsync(form); var _ = await _controller.Upsert(model); _repository.Verify(x => x.SaveAsync( FormController.CollectionName, It.IsAny <DynamicForm>())); }
public void should_return_not_found_when_no_form_found_by_object_id() { var model = new DynamicFormCopy { Id = ObjectId.GenerateNewId().ToString() }; var cursor = StubCursor(); StubNotFoundResult(cursor); _controller.Awaiting(x => x.Upsert(model)) .Should().ThrowExactly <HttpNotFoundException>().And .StatusCode.Should().Be(HttpStatusCode.NotFound); }
public async Task <ApiResult <DynamicForm> > Upsert([FromBody] DynamicFormCopy formCopy) { var objectId = ConvertObjectId(formCopy.Id); var form = await FindFormById(objectId); var existing = await FindExistingForm(formCopy, form.WidgetId); if (existing != null) { return(Ok(existing)); } var copy = CopyExistingForm(form, formCopy.Revision); return(await AddNewItem(copy)); }