public void ConvertingToRecordShouldTallyCorrectly(DmarcResult?spfResult, DmarcResult?dkimResult, Policy?disposition, string aggregationField)
        {
            AggregateReportRecordEnriched aggregateReportRecordEnriched = CreateTestRecord(spfResult, dkimResult, disposition, 10000, date: new DateTime(2001, 01, 01));

            List <DomainDateRecord> result = aggregateReportRecordEnriched.ToDomainDateRecords();

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(new DateTime(2001, 01, 01), result[0].Date);
            Assert.AreEqual("digital.ncsc.gov.uk", result[0].Domain);
            Assert.AreEqual(10000, TallyAllCounts(result[0]));
            Assert.AreEqual(10000, typeof(DomainDateRecord).GetProperty(aggregationField)?.GetValue(result[0], null));

            Assert.AreEqual(new DateTime(2001, 01, 01), result[1].Date);
            Assert.AreEqual("ncsc.gov.uk", result[1].Domain);
            Assert.AreEqual(10000, TallyAllCounts(result[1]));
            Assert.AreEqual(10000, typeof(DomainDateRecord).GetProperty(aggregationField)?.GetValue(result[1], null));
        }
        public void ConvertingToRecordShouldSplitIntoSubdomains()
        {
            AggregateReportRecordEnriched aggregateReportRecordEnriched = CreateTestRecord(headerFrom: "a.b.c.d.e.gov.uk", organisationDomain: "e.gov.uk", date: new DateTime(2001, 01, 01));

            List <DomainDateRecord> result = aggregateReportRecordEnriched.ToDomainDateRecords();

            Assert.AreEqual(5, result.Count);

            Assert.AreEqual(new DateTime(2001, 01, 01), result[0].Date);
            Assert.AreEqual(new DateTime(2001, 01, 01), result[1].Date);
            Assert.AreEqual(new DateTime(2001, 01, 01), result[2].Date);
            Assert.AreEqual(new DateTime(2001, 01, 01), result[3].Date);
            Assert.AreEqual(new DateTime(2001, 01, 01), result[4].Date);

            Assert.AreEqual("a.b.c.d.e.gov.uk", result[0].Domain);
            Assert.AreEqual("b.c.d.e.gov.uk", result[1].Domain);
            Assert.AreEqual("c.d.e.gov.uk", result[2].Domain);
            Assert.AreEqual("d.e.gov.uk", result[3].Domain);
            Assert.AreEqual("e.gov.uk", result[4].Domain);
        }