Пример #1
0
        public async void CanPartialUpdateTopicDescription()
        {
            _dataAccessMock.Setup(dal => dal.Update <DataEntity.Topic>(
                                      It.IsAny <string>(), It.IsAny <Expression <Func <DataEntity.Topic> > >()))
            .ReturnsAsync(new DataEntity.Topic())
            .Verifiable();

            MockTopicCache(new DataEntity.Topic {
                Id          = "5883a3fa50f5fea2822f21cf",
                Description = "mockedDescription",
                Notes       = "mockNotes"
            });

            var topicRep        = new TopicRepository(_dataAccessMock.Object, _topicCacheMock.Object);
            var topicController = new TopicController.TopicController(new QuizManager.QuizManager(topicRep, null, null), null);

            var jsonPatchRequest = new JsonPatchDocument <ResponseData.TopicIgnoreUniqId>();

            jsonPatchRequest.Replace((q) => q.Description, "mockDescriptionToUpdate");

            var result = await topicController.UpdateTopic("mockId", jsonPatchRequest);

            var objectResult = Assert.IsType <OkObjectResult>(result);

            objectResult.StatusCode.Should().Be(200, "Should return status code as modified");
            var updatedResult = Assert.IsAssignableFrom <ResponseData.Topic>(((ObjectResult)result).Value);

            updatedResult.Description.Should().Equals("mockDescriptionToUpdate");
            updatedResult.Notes.Should().Equals("mockNotes");
            updatedResult.Id.Should().Equals("5883a3fa50f5fea2822f21cf");
        }
Пример #2
0
        public async void CanUpdateTopicEntity()
        {
            // Arrange
            DataEntity.Topic returnVal = new DataEntity.Topic {
                Description = "mockUpdateDescription",
                Notes       = "mockUpdateNotes"
            };

            var mockMongoDBCollection = MongoHelper <DataEntity.Topic> .GetMockMongoCollection();

            mockMongoDBCollection.Setup(c =>
                                        c.FindOneAndUpdateAsync <DataEntity.Topic>(
                                            It.IsAny <MongoDB.Driver.FilterDefinition <DataEntity.Topic> >(),
                                            It.IsAny <MongoDB.Driver.UpdateDefinition <DataEntity.Topic> >(),
                                            It.IsAny <FindOneAndUpdateOptions <DataEntity.Topic, DataEntity.Topic> >(),
                                            It.IsAny <CancellationToken>()))
            .ReturnsAsync(returnVal);

            var mockMongoDatabase = MongoHelper <DataEntity.Topic> .GetMockMongoDBInstance();

            mockMongoDatabase.Setup(mdb =>
                                    mdb.GetCollection <DataEntity.Topic>(It.IsAny <string>(),
                                                                         It.IsAny <MongoCollectionSettings>())).Returns(mockMongoDBCollection.Object);

            var dataAccess      = new QuizDataAccess.QuizDataAccess <DataEntity.Topic>(mockMongoDatabase.Object);
            var topicRep        = new TopicRepository(dataAccess, _topicCacheMock.Object);
            var topicController = new TopicController.TopicController(new QuizManager.QuizManager(topicRep, null, null), null);

            var entity = new ResponseData.Topic {
                Description = "mockDescription",
                Notes       = "mockNotes"
            };

            // Act
            var result = await topicController.Update("58e5db28e40cc200151a5ba4", new ResponseData.TopicIgnoreUniqId {
                Description = entity.Description,
                Notes       = entity.Notes
            });

            // Assert
            var statusCode = Assert.IsType <StatusCodeResult>(result);

            statusCode.StatusCode.Should().Be(204, "Should return status code as modified");
        }
Пример #3
0
        public async void CanPartialUpdateTopicNotes()
        {
            // Arrange
            var expectedResult = new DataEntity.Topic {
                Id          = "5883a3fa50f5fea2822f21cf",
                Description = "mockedDescription",
                Notes       = "mockNotesDescriptionForUpdate"
            };

            _dataAccessMock.Setup(dal => dal.Update <DataEntity.Topic>(
                                      It.IsAny <string>(), It.IsAny <Expression <Func <DataEntity.Topic> > >()))
            .ReturnsAsync(expectedResult)
            .Verifiable();

            MockTopicCache(new DataEntity.Topic {
                Id          = "5883a3fa50f5fea2822f21cf",
                Description = "mockedDescription",
                Notes       = "mockNotes"
            });

            var topicRep        = new TopicRepository(_dataAccessMock.Object, _topicCacheMock.Object);
            var topicController = new TopicController.TopicController(
                new QuizManager.QuizManager(topicRep, null, null), null);

            var jsonPatchRequest = new JsonPatchDocument <ResponseData.TopicIgnoreUniqId>();

            jsonPatchRequest.Replace((q) => q.Notes, expectedResult.Notes);

            // Act
            var result = await topicController.UpdateTopic("mockId", jsonPatchRequest);

            // Assert
            var updatedResult = Assert.IsAssignableFrom <ResponseData.Topic>(((ObjectResult)(result)).Value);

            updatedResult.Notes.Should().BeEquivalentTo("mockNotesDescriptionForUpdate");
            updatedResult.Description.Should().BeEquivalentTo("mockedDescription");
            updatedResult.Id.Should().BeEquivalentTo("5883a3fa50f5fea2822f21cf");
        }