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);
        }
예제 #3
0
        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));
        }
예제 #8
0
        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);
 }