Пример #1
0
        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);
        }
Пример #5
0
        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));
        }