public void UpdateHistoryWithIncomingRecordThatIsDifferentAndHasDkimRecordsCausesUpdate()
        {
            DateTime startDate1 = new DateTime(2018, 12, 12);
            DateTime startDate2 = new DateTime(2018, 12, 14);

            DkimHistoryRecord dkimHistoryRecord1 = new DkimHistoryRecord(startDate1, null,
                                                                         new List <DkimHistoryRecordEntry>
            {
                new DkimHistoryRecordEntry(Selector1, new List <string> {
                    DkimRecord1
                })
            });

            DkimHistoryEntityState state = new DkimHistoryEntityState(Domain1, new List <DkimHistoryRecord> {
                dkimHistoryRecord1
            });

            DkimHistoryRecord dkimHistoryRecord2 = new DkimHistoryRecord(startDate2, null,
                                                                         new List <DkimHistoryRecordEntry>
            {
                new DkimHistoryRecordEntry(Selector1, new List <string> {
                    DkimRecord2
                })
            });

            state.UpdateHistory(dkimHistoryRecord2);

            Assert.That(state.Records.Count, Is.EqualTo(2));
            Assert.That(state.Records.Last().StartDate, Is.EqualTo(dkimHistoryRecord1.StartDate));
            Assert.That(state.Records.Last().EndDate, Is.EqualTo(dkimHistoryRecord2.StartDate));
            CollectionAssert.AreEqual(state.Records.Last().Entries, dkimHistoryRecord1.Entries);
            Assert.That(state.Records.First(), Is.EqualTo(dkimHistoryRecord2));
        }
 private async Task Insert(DkimHistoryEntityState state)
 {
     await MySqlHelper.ExecuteNonQueryAsync(ConnectionString,
                                            @"INSERT INTO `dkim_entity_history`(`id`,`state`)VALUES(@domain,@state)",
                                            new MySqlParameter("domain", state.Id),
                                            new MySqlParameter("state", JsonConvert.SerializeObject(state)));
 }
コード例 #3
0
        public async Task Save(DkimHistoryEntityState state)
        {
            string connectionString = await _connectionInfoAsync.GetConnectionStringAsync();

            string serializedState = JsonConvert.SerializeObject(state, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            await MySqlHelper.ExecuteNonQueryAsync(connectionString,
                                                   DkimEntityHistoryDaoResouces.InsertDkimEntityHistory,
                                                   new MySqlParameter("domain", state.Id),
                                                   new MySqlParameter("state", serializedState));
        }
        public void UpdateEmptyHistoryWithIncomingRecordThatHasDkimRecordsCausesUpdate()
        {
            DkimHistoryEntityState state = new DkimHistoryEntityState(Domain1);

            DkimHistoryRecord dkimHistoryRecord = new DkimHistoryRecord(DateTime.Now, null,
                                                                        new List <DkimHistoryRecordEntry>
            {
                new DkimHistoryRecordEntry(Selector1, new List <string> {
                    DkimRecord1
                })
            });

            state.UpdateHistory(dkimHistoryRecord);

            Assert.That(state.Records.Count, Is.EqualTo(1));
            Assert.That(state.Records.First(), Is.EqualTo(dkimHistoryRecord));
        }
        public void UpdateHistoryWithIncomingRecordThatIsNotDifferentAndHasDkimRecordsDoesntCauseUpdate()
        {
            DateTime startDate1 = new DateTime(2018, 12, 12);

            DkimHistoryRecord dkimHistoryRecord1 = new DkimHistoryRecord(startDate1, null,
                                                                         new List <DkimHistoryRecordEntry>
            {
                new DkimHistoryRecordEntry(Selector1, new List <string> {
                    DkimRecord1
                })
            });

            DkimHistoryEntityState state = new DkimHistoryEntityState(Domain1, new List <DkimHistoryRecord> {
                dkimHistoryRecord1
            });

            state.UpdateHistory(dkimHistoryRecord1);

            Assert.That(state.Records.Count, Is.EqualTo(1));
            Assert.That(state.Records.First(), Is.EqualTo(dkimHistoryRecord1));
        }
        public async Task HistoryIsSavedForChanges()
        {
            string selector  = "dkimRecord";
            string selector2 = "dkimRecord2";

            DkimHistoryEntityState state = new DkimHistoryEntityState(Id,
                                                                      new List <DkimHistoryRecord>
            {
                new DkimHistoryRecord(DateTime.UtcNow.AddDays(-1), null,
                                      new List <DkimHistoryRecordEntry>
                {
                    new DkimHistoryRecordEntry(selector, new List <string>()),
                })
            });

            await _dao.Save(state);

            DkimHistoryEntityState state2 = (await SelectAllHistory(Id)).First();

            state2.Records[0].EndDate = DateTime.UtcNow;
            state2.Records.Insert(0, new DkimHistoryRecord(DateTime.UtcNow.AddDays(-1), null,
                                                           new List <DkimHistoryRecordEntry>
            {
                new DkimHistoryRecordEntry(selector2, new List <string>()),
            }));

            await _dao.Save(state2);

            List <DkimHistoryEntityState> historyStates = await SelectAllHistory(Id);

            Assert.That(historyStates[0].Records.Count, Is.EqualTo(2));

            Assert.That(historyStates[0].Records[0].EndDate, Is.Null);
            Assert.That(historyStates[0].Records[0].Entries.Count, Is.EqualTo(1));
            Assert.That(historyStates[0].Records[0].Entries[0], Is.EqualTo(selector2));

            Assert.That(historyStates[0].Records[1].EndDate, Is.Not.Null);
            Assert.That(historyStates[0].Records[1].Entries.Count, Is.EqualTo(1));
            Assert.That(historyStates[0].Records[1].Entries[0], Is.EqualTo(selector));
        }
        public async Task GetStateExistsReturnsState()
        {
            string selector = "dkimRecord";

            DkimHistoryEntityState state = new DkimHistoryEntityState(Id,
                                                                      new List <DkimHistoryRecord>
            {
                new DkimHistoryRecord(DateTime.UtcNow.AddDays(-1), null,
                                      new List <DkimHistoryRecordEntry> {
                    new DkimHistoryRecordEntry(selector, new List <string>())
                })
            });

            await Insert(state);

            DkimHistoryEntityState stateFromDatabase = await _dao.Get(Id);

            Assert.That(stateFromDatabase.Id, Is.EqualTo(state.Id));
            Assert.That(stateFromDatabase.Records.Count, Is.EqualTo(state.Records.Count));
            Assert.That(stateFromDatabase.Records[0].Entries.Count, Is.EqualTo(state.Records[0].Entries.Count));
            Assert.That(stateFromDatabase.Records[0].Entries[0], Is.EqualTo(state.Records[0].Entries[0]));
        }
        public async Task GetNoStateExistsReturnsNull()
        {
            DkimHistoryEntityState state = await _dao.Get(Id);

            Assert.That(state, Is.Null);
        }