public async Task should_save_new_copy_of_original_form()
        {
            var id    = ObjectId.GenerateNewId();
            var model = new LocalizationCopy
            {
                ObjectId = ObjectId.GenerateNewId().ToString()
            };
            var cursor            = StubCursor();
            var localizationModel = new LocalizationModel {
                Id = id
            };

            cursor.Setup(x => x.Current).Returns(new List <LocalizationModel> {
                localizationModel
            });
            cursor.SetupSequence(x => x.MoveNext(It.IsAny <CancellationToken>()))
            .Returns(false)
            .Returns(true)
            .Returns(false);
            _repository.Setup(x => x.SaveAsync
                              (
                                  LocalizationController.CollectionName, It.IsAny <LocalizationModel>()
                              )
                              )
            .ReturnsAsync(localizationModel);

            var _ = await _controller.Upsert(model);

            _repository.Verify(x => x.SaveAsync(
                                   LocalizationController.CollectionName,
                                   It.IsAny <LocalizationModel>()));
        }
        public async Task should_return_existing_draft_copy()
        {
            var id    = ObjectId.GenerateNewId();
            var model = new LocalizationCopy
            {
                ObjectId   = ObjectId.GenerateNewId().ToString(),
                ObjectName = ObjectName
            };
            var cursor = StubCursor();
            var form   = new LocalizationModel {
                Id = id
            };

            cursor.Setup(x => x.Current).Returns(new List <LocalizationModel> {
                form
            });
            cursor.SetupSequence(x => x.MoveNext(It.IsAny <CancellationToken>()))
            .Returns(true)
            .Returns(true)
            .Returns(false);

            var response = await ExecuteEndpoint(_controller.Upsert(model));

            _repository.Verify(x => x.SaveAsync(
                                   LocalizationController.CollectionName,
                                   It.IsAny <LocalizationModel>()), Times.Never);
            response.Should().Be(form);
        }
Пример #3
0
        public async Task <ApiResult <LocalizationModel> > Upsert([FromBody] LocalizationCopy localizationCopy)
        {
            var existing = await FindExistingLocalization(localizationCopy, localizationCopy.ObjectName);

            if (existing != null)
            {
                return(Ok(existing));
            }

            var model = await FindLocalization(localizationCopy.ObjectId, localizationCopy.ObjectName);

            if (model == null)
            {
                throw new HttpNotFoundException
                      (
                          new ApiError
                          (
                              nameof(NotFound),
                              $"Could not find {nameof(LocalizationModel)} by {nameof(LocalizationModel.ObjectId)}({{objectId}}) " +
                              $"and {nameof(LocalizationModel.ObjectName)}({{objectName}})",
                              additionalData: new Dictionary <string, string> {
                    { "objectId", localizationCopy.ObjectId }, { "objectName", localizationCopy.ObjectName }
                }
                          )
                      );
            }

            var copy = CopyExistingLocalization(model, localizationCopy.NewObjectId);

            return(await AddNewItem(copy));
        }
        public void should_return_not_found_when_no_form_found_by_object_id()
        {
            var model = new LocalizationCopy
            {
                ObjectId = 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
        private async Task <LocalizationModel> FindExistingLocalization(LocalizationCopy localizationCopy, string objectName)
        {
            var results = await _repository.FindAsync <LocalizationModel>(CollectionName, x => x.ObjectId == localizationCopy.NewObjectId && x.ObjectName == objectName);

            return(results.SingleOrDefault());
        }