示例#1
0
        public void HasNoDataAtAll()
        {
            using (var wrapper = new RegistersWrapper()) {
                IRegister register = wrapper.New.Register();
                var       rdbc     = wrapper.DB.Tables.DbContextForReader;

                Assert.True(rdbc.People.Count() == 0);
                Assert.True(rdbc.DebtDeals.Count() == 0);
                Assert.True(rdbc.DebtDealsAnalysis.Count() == 0);
                Assert.True(rdbc.CurrentDebts.Count() == 0);
                Assert.True(rdbc.CurrentTotalsPerPerson.Count() == 0);
                Assert.True(rdbc.CurrentStatisticsPerPerson.Count() == 0);
                Assert.True(rdbc.CurrentPeopleStatisticsDocuments.Count() == 0);

                Assert.True(register.HasNoData);
                Assert.True(((IRegisterReader)register).HasNoData);

                // achievers register
                IAchieversRegisterReader achieversReader
                    = ((IRegisterReader)register).Debts.Achievers;
                Assert.Empty(achieversReader.ByID.WithMaxDueDebtsTotal);
                Assert.Empty(achieversReader.ByID.WhoHistoricallyCreditedMaxTotal);
                Assert.Empty(achieversReader.ByID.BestDebtorByRepaidFractionThenTotal);
            }
        }
示例#2
0
        public DebtsRegister(
            TablesDbContext dbc,
            TablesDbContextForReader rdbc,
            IPersonDebtsRegister personDebtsRegister,
            IPersonDebtsRegisterReader personDebtsRegisterReader,
            IPairDebtsRegister pairDebtsRegister,
            IPairDebtsRegisterReader pairDebtsRegisterReader,
            IDebtDealsRegister debtDealsRegister,
            IDebtDealsRegisterReader debtDealsRegisterReader,
            IAchieversRegister achieversRegister,
            IAchieversRegisterReader achieversRegisterReader
            )
        {
            this.dbc  = dbc;
            this.rdbc = rdbc;

            this.Person = personDebtsRegister;
            this.personDebtsRegisterReader = personDebtsRegisterReader;

            this.Pairs = pairDebtsRegister;
            this.pairDebtsRegisterReader = pairDebtsRegisterReader;

            this.Deals = debtDealsRegister;
            this.debtDealsRegisterReader = debtDealsRegisterReader;

            this.Achievers = achieversRegister;
            this.achieversRegisterReader = achieversRegisterReader;
        }
示例#3
0
        private void CheckAchieversRegister(
            IAchieversRegisterReader roAchievers,
            TablesDbContextForReader rdbc,
            IMongoCollection <AchieversDoc> mongoCollection,
            string giverId, string takerId, decimal total
            )
        {
            var byId = roAchievers.ByID;

            string achieversDocIdString
                = rdbc.CurrentPeopleStatisticsDocuments
                  .Where(csd => csd.DocumentName == AchieversDoc.Name)
                  .First().DocumentId;

            Assert.False(string.IsNullOrEmpty(achieversDocIdString));

            ObjectId     achieversDocId = new ObjectId(achieversDocIdString);
            AchieversDoc achieversDoc
                = mongoCollection.AsQueryable()
                  .Where(doc => doc.Id == achieversDocId)
                  .First();

            Action <IReadOnlyCollection <string> > maxDebtorChecker
                = set => {
                if (set != null)
                {
                    Assert.Equal(0, set.Count);
                }
                };

            maxDebtorChecker(byId.WithMaxDueDebtsTotal);
            maxDebtorChecker(achieversDoc.MaxDueDebtsTotalPersonIds);

            Action <IReadOnlyCollection <string> > maxCreditorChecker
                = set => {
                Assert.Contains(set, id => id == giverId);
                Assert.Equal(1, set.Count);
                };

            maxCreditorChecker(byId.WhoHistoricallyCreditedMaxTotal);
            maxCreditorChecker(
                achieversDoc.HistoricallyCreditedMaxTotalPersonIds);

            Action <IReadOnlyCollection <string> > bestDebtorChecker
                = set => {
                Assert.Contains(set, id => id == takerId);
                Assert.Equal(1, set.Count);
                };

            bestDebtorChecker(byId.BestDebtorByRepaidFractionThenTotal);
            bestDebtorChecker(
                achieversDoc.BestDebtorIdsByRepaidFractionThenTotal);
        }
示例#4
0
        private void CheckAchieversRegister(
            IAchieversRegisterReader roAchievers,
            IMongoCollection <AchieversDoc> mongoCollection,
            string giverId, string takerId, decimal amount
            )
        {
            var byId = roAchievers.ByID;

            Assert.Contains(byId.WithMaxDueDebtsTotal, id => id == takerId);
            Assert.Equal(1, byId.WithMaxDueDebtsTotal.Count);

            Assert.Contains(
                byId.WhoHistoricallyCreditedMaxTotal, id => id == giverId);
            Assert.Equal(1, byId.WhoHistoricallyCreditedMaxTotal.Count);

            Assert.Equal(0, byId.BestDebtorByRepaidFractionThenTotal.Count);
        }