상속: NoSqlBase, IFeedbackMapper
        public void Save_RawRecord_Saves()
        {
            FeedbackMapper feedbackMapper = new FeedbackMapper(this.client, this.database);
            Guid applicationId = Guid.NewGuid();
            Guid deviceId = Guid.NewGuid();

            Feedback feedback = new Feedback()
                {
                    ApplicationId = applicationId,
                    DeviceId = deviceId,
                    Message = "feedback",
                    Rating =  FeedbackRatingType.Five,
                    ScreenName =  "screenName",
                    SessionId = Guid.NewGuid(),
                    DateCreatedOnDevice =  DateTime.Now,
                    Version = "1.1"
                };

            feedbackMapper.Save(feedback);
        }
        public void Save_SummaryRecord_MatchesSummary()
        {
            FeedbackMapper feedbackMapper = new FeedbackMapper(this.client, this.database);
            Guid applicationId = Guid.NewGuid();
            string screenName = "screenName";

            FeedbackSummary expected = new FeedbackSummary()
            {
                ApplicationId = applicationId,
                Count = 2,
                Date = date,
                PlatformId = platform,
                Ratings = new List<RatingAggregate>()
                {
                     new RatingAggregate(screenName, 8)
                     {
                         Count = 2
                     }
                },
                Version = version,
                SumOfRatings = 8
            };

            Feedback feedback = new Feedback()
                {
                    ApplicationId = applicationId,
                    DeviceId = Guid.NewGuid(),
                    Message = "feedback",
                    Rating =  FeedbackRatingType.Five,
                    ScreenName =  screenName,
                    SessionId = Guid.NewGuid(),
                    DateCreatedOnDevice =  dateCreatedOnDevice,
                    Date = date,
                    DateCreated = DateTime.Now,
                    Version = version,
                    PlatformId = platform
                };

            FeedbackSummary summary = new FeedbackSummary(feedback);
            feedbackMapper.Save(summary);

            Feedback feedback2 = new Feedback()
            {
                ApplicationId = applicationId,
                DeviceId = Guid.NewGuid(),
                Message = "feedback",
                Rating =  FeedbackRatingType.Three,
                ScreenName =  screenName,
                SessionId = Guid.NewGuid(),
                DateCreatedOnDevice =  dateCreatedOnDevice,
                Date = date,
                DateCreated = DateTime.Now,
                Version = version,
                PlatformId = platform
            };

            FeedbackSummary summary2 = new FeedbackSummary(feedback2);
            feedbackMapper.Save(summary2);

            IMongoQuery query = Query.And
                (
                    Query<FeedbackSummary>.EQ<DateTime>(mem => mem.Date, date),
                    Query<FeedbackSummary>.EQ<Guid>(mem => mem.ApplicationId, applicationId),
                    Query<FeedbackSummary>.EQ<string>(mem => mem.Version, version),
                    Query<FeedbackSummary>.EQ<PlatformType>(mem => mem.PlatformId, platform)
                );

            FeedbackSummary actual = this.GetCollection<FeedbackSummary>().FindOne(query);

            actual.ShouldHave().AllPropertiesBut(x => x.Id)
                .IncludingNestedObjects().EqualTo(expected);
        }