public async void CanSearchTopicByTopicID() { // Arrange var topicId = "5883a3fa50f5fea2822f21cf"; var mockResults = new DataEntity.Topic { Id = topicId, Description = "mockedDescription", Notes = "mockNotes" }; MockTopicCache(mockResults); _topicRepository.Setup(t => t.GetTopicAsync(It.IsAny <string>())) .ReturnsAsync(mockResults) .Verifiable(); _dataAccessMock.Setup( p => p.GetByIdAsync(It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(new List <DataEntity.Topic> { mockResults }) .Verifiable(); // Act var results = await _topicControllerMock.GetById(topicId); // Assert var actualResult = Assert.IsType <ObjectResult>(results); Assert.IsType <ResponseData.Topic>(actualResult.Value); }
public async void CanAddTopic() { var mockResults = new DataEntity.Topic(); _dataAccessMock.Setup(p => p.AddAsync(mockResults)) .ReturnsAsync(string.Empty) .Verifiable(); var result = await _topicControllerMock.AddTopic(new ResponseData.TopicIgnoreUniqId()); var actualResult = Assert.IsType <StatusCodeResult>(result); actualResult.StatusCode.Should().Be((int)HttpStatusCode.Created, "Status code should be created"); }
private void MockTopicCache(DataEntity.Topic topic) { var mockResults = new DataEntity.Topic { Id = topic.Id, Description = topic.Description, Notes = topic.Notes }; _topicCacheMock.Setup(p => p.GetValueFromKeyAsync( It.IsAny <string>(), It.IsAny <Func <string, Task <DataEntity.Topic> > >())) .ReturnsAsync(mockResults); }
public async void CanAddQuestion() { var mockTopic = new DataEntity.Topic(); _topicRepositoryMock.Setup(tr => tr.GetTopicAsync(It.IsAny <string>())) .ReturnsAsync(mockTopic); var result = await _questionController.Add(new ResponseData.QuestionIgnoreId { TopicId = "9765a3fa50f5fea28212ba" }); var actualResult = Assert.IsType <StatusCodeResult>(result); Assert.Equal((int)HttpStatusCode.Created, actualResult.StatusCode); }
public void CanReturnPropertiesAndValueWhenConstantExpressionIsAnObjectInstance() { var input = new DataEntity.Topic { Id = "mockId", Description = "mockDescription" }; var result = Helper.ExtractBindingsAndValues( () => new DataEntity.Topic { Id = input.Id, Description = input.Description }); result.Should().NotBeNull("Expected properties and values"); result.Should().ContainKey("Id").WhichValue.ShouldBeEquivalentTo("mockId"); result.Should().ContainKey("Description").WhichValue.ShouldBeEquivalentTo("mockDescription"); }
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"); }
public async void UpdateCanHandleUnavilableResource() { // Arrange DataEntity.Topic returnVal = null; 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); MockTopicCache(new DataEntity.Topic { Id = "5883a3fa50f5fea2822f21cf", Description = "mockedDescription", Notes = "mockNotes" }); var topicRep = new TopicRepository(dataAccess, _topicCacheMock.Object); var topicController = new TopicController.TopicController(new QuizManager.QuizManager(topicRep, null, null), null); var jsonPatchRequest = new JsonPatchDocument <ResponseData.TopicIgnoreUniqId>(); jsonPatchRequest.Add((q) => q.Description, "mockDescriptionToUpdate"); // Act var result = await topicController.UpdateTopic("58e5db28e40cc200151a5ba4", jsonPatchRequest); // Assert var statusCode = Assert.IsType <StatusCodeResult>(result); statusCode.StatusCode.Should().Be(304, "Should return status code as modified"); }
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"); }
public async void CanUpdateQuestion() { // Arrange const string topicId = "5782a3fa50f5fea2822f21cf"; const string description = "update Questions"; const string notes = "testing question udpate"; // Mock data entity var questionEntityReturnVal = new DataEntity.Question { TopicId = topicId, Description = description, Notes = notes }; var topicEntityReturnVal = new DataEntity.Topic { Id = topicId, Description = "topic description", Notes = "topic notes" }; // mongoDB var mockMongoDBTopic = MockMongoDatabase <DataEntity.Topic>(topicEntityReturnVal, new List <DataEntity.Topic> { new DataEntity.Topic() }); var mockMongoDBQuestion = MockMongoDatabase <DataEntity.Question>(questionEntityReturnVal, new List <DataEntity.Question> { new DataEntity.Question() }); var dataAccessTopicObject = new QuizDataAccess.QuizDataAccess <DataEntity.Topic>(mockMongoDBTopic.Object); var dataAccessQuestionObject = new QuizDataAccess.QuizDataAccess <DataEntity.Question>(mockMongoDBQuestion.Object); // Cache MockQuestionCache(new List <DataEntity.Question> { new DataEntity.Question() }); MockTopicCache(new List <DataEntity.Topic> { new DataEntity.Topic() }); // Repository's var topicRepository = new TopicRepository(dataAccessTopicObject, _topicCacheMock.Object); var questionRepository = new QuestionRepository(dataAccessQuestionObject, _questionsCacheMock.Object); var manager = new QuizManager.QuizManager(topicRepository, questionRepository, null); var questionController = new QuestionController(manager); // Act var result = await questionController.Update("5883a3fa50f5fea2822f21cf", new ResponseData.QuestionIgnoreId { TopicId = topicId, Description = description, Notes = notes }); // Assert var statusCode = Assert.IsType <NoContentResult>(result); statusCode.Should().NotBeNull("Expected a valid status code"); statusCode.StatusCode.Should().Be((int)HttpStatusCode.NoContent); }