public async Task should_delegate_to_repo_to_save_course_and_denormalized_data() { var certId = ObjectId.Parse(CertId); var course = new Course { CertificationId = CertId, Name = "Course Name", IsActive = true }; var cert = new Certification { Id = certId, Courses = new List <DenormalizedCourse> { new DenormalizedCourse { Id = ObjectId.Empty } } }; var cursor = StubCursor <Certification>(CertCollectionName); StubSingleFoundResult(cursor, cert); Repository.Setup(x => x.SaveAsync(CourseCollectionName, course)) .ReturnsAsync(course); var response = await ExecuteEndpoint(_controller.AddNewItem(course)); // verify course Repository.Verify(x => x.SaveAsync(CourseCollectionName, course)); response.Should().Be(course); response.CreatedBy.UserId.Should().BeEquivalentTo(UserId); response.UpdatedBy.UserId.Should().BeEquivalentTo(UserId); response.CreatedAt.Should().BeCloseTo(DateTime.UtcNow, 500); response.UpdatedAt.Should().BeCloseTo(DateTime.UtcNow, 500); // verify denormalized data Repository.Verify(x => x.UpdateAsync(CertCollectionName, It.Is <Expression <Func <Certification, bool> > >(e => Lambda.Eq(e, f => f.Id == certId)), It.IsAny <Certification>())); cert.Courses.Count.Should().Be(2); cert.Courses.Count(x => x.Id != ObjectId.Empty).Should().Be(1); }