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 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); }
private static DynamicForm CopyExistingForm(DynamicForm form, int revision) { var copy = BsonSerializer.Deserialize <DynamicForm>(form.ToBsonDocument()); copy.Id = ObjectId.GenerateNewId(); copy.Revision = revision; return(copy); }
public async Task should_delegate_to_find_results_with_expected_params() { var objectId = ObjectId.Parse(Id); var cursor = StubCursor(); var form = new DynamicForm(); StubSingleFoundResult(cursor, form); var body = await ExecuteEndpoint(_controller.GetById(Id)); AssetRepositoryWasQueriedById(objectId); body.Should().Be(form); }
public async Task should_delegate_to_repo_to_save_form() { var form = new DynamicForm(); _repository.Setup(x => x.SaveAsync( FormController.CollectionName, form)).ReturnsAsync(form); var body = await ExecuteEndpoint(_controller.AddNewItem(form)); _repository.Verify(x => x.SaveAsync( FormController.CollectionName, form)); body.Should().Be(form); }
public async Task should_delegate_to_repo_to_lookup_by_id() { var objectId = ObjectId.Parse(Id); var cursor = StubCursor(); var form = new DynamicForm(); StubSingleFoundResult(cursor, form); var patch = new JsonPatchDocument <DynamicForm>(); _repository.Setup(x => x.UpdateAsync(FormController.CollectionName, It.IsAny <Expression <Func <DynamicForm, bool> > >(), form)) .ReturnsAsync(new ReplaceOneResult.Acknowledged(1, 1, objectId)); var _ = await _controller.Patch(Id, patch); AssetRepositoryWasQueriedById(objectId); }
public async Task should_apply_patch_then_delegate_to_repo_to_update_form_data() { var objectId = ObjectId.Parse(Id); var cursor = StubCursor(); var form = new DynamicForm(); StubSingleFoundResult(cursor, form); var patch = new JsonPatchDocument <DynamicForm>(); _repository.Setup(x => x.UpdateAsync(FormController.CollectionName, It.IsAny <Expression <Func <DynamicForm, bool> > >(), form)) .ReturnsAsync(new ReplaceOneResult.Acknowledged(1, 1, objectId)); var _ = await _controller.Patch(Id, patch); _repository.Verify(x => x.UpdateAsync(FormController.CollectionName, It.Is <Expression <Func <DynamicForm, bool> > >(e => Lambda.Eq(e, f => f.Id == objectId)), form)); }
public async Task <ApiResult <DynamicForm> > AddNewItem([FromBody] DynamicForm data) { // TODO - No check for whether the item already exists. var createdForm = await _repository.SaveAsync(CollectionName, data); if (createdForm == null) { throw new HttpConflictException ( new ApiError( nameof(Conflict), $"Unable to create the form: {{{nameof(data)}}}", additionalData: new Dictionary <string, DynamicForm> { { nameof(data), data } }) ); } return(Created($"{HttpContext.GetRequestUrl()}/{createdForm.Id}", createdForm)); }
private static void StubSingleFoundResult(Mock <IAsyncCursor <DynamicForm> > cursor, DynamicForm form) { cursor.Setup(x => x.Current).Returns(new List <DynamicForm> { form }); cursor.SetupSequence(x => x.MoveNext(It.IsAny <CancellationToken>())) .Returns(true) .Returns(false); }