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);
        }