public void Execute_WhenNotAllPackagesNeedsToBeResume_ShouldOnlyResumeTheOnesThatAreAtTheRightTime() { DroneActions.EditSettings<DroneSettings>(x => x.StoreHostname = DefaultHostUrl); var creativePackage = new List<CreativePackage> { new CreativePackage { To = "*****@*****.**", Group = "$default$", Processed = true }, new CreativePackage { To = "*****@*****.**", Group = "$default$", Processed = true }, }; DroneActions.StoreCollection(creativePackage); DroneActions.Store(new GroupsAndIndividualDomainsSendingPolicies { GroupSendingPolicies = new Dictionary<string, ResumeSendingPolicy> { {"david.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(-4)}}, {"cookie.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(2)}} } }); var task = new ResumeSendingForIndividualDomains(); DroneActions.StartScheduledTask(task); Jobs.Drone().WaitForJobToStart(task); DroneActions.WaitForChangeOnStoredObject<CreativePackage>(x => x.To == "*****@*****.**", x => x.Processed == false); DroneActions.WaitForChangeOnStoredObject<CreativePackage>(x => x.To == "*****@*****.**", x => x.Processed); }
public void Execute_WhenThereAreProcessedMailAndThereAreNoMatchesOfDomainsToBeResumed_ShouldDoNothing() { DroneActions.EditSettings<DroneSettings>(x => x.StoreHostname = DefaultHostUrl); var creativePackage = new List<CreativePackage> { new CreativePackage { To = "*****@*****.**", Group = "$default$", Processed = true }, new CreativePackage { To = "*****@*****.**", Group = "$default$", Processed = true }, }; DroneActions.StoreCollection(creativePackage); DroneActions.Store(new GroupsAndIndividualDomainsSendingPolicies { GroupSendingPolicies = new Dictionary<string, ResumeSendingPolicy> { {"david.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(4)}}, {"cookie.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(2)}} } }); var task = new ResumeSendingForIndividualDomains(); DroneActions.StartScheduledTask(task); Jobs.Drone().WaitForJobToStart(task); Thread.Sleep(1000); DroneActions.WaitForChangeOnStoredObject<CreativePackage>(x => x.To == "*****@*****.**", x => x.Processed); DroneActions.WaitForChangeOnStoredObject<CreativePackage>(x => x.To == "*****@*****.**", x => x.Processed); }
public void Execute_WhenThereAreDomainsToResume_ShouldFireAnEvent() { DroneActions.EditSettings<DroneSettings>(x => x.StoreHostname = DefaultHostUrl); ListenToEvent<ResumingGroups>(); DroneActions.Store(new GroupsAndIndividualDomainsSendingPolicies { GroupSendingPolicies = new Dictionary<string, ResumeSendingPolicy> { {"david.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(-4)}}, {"cookie.com", new ResumeSendingPolicy {ResumeAt = DateTime.UtcNow + TimeSpan.FromHours(-2)}} } }); var task = new ResumeSendingForIndividualDomains(); DroneActions.StartScheduledTask(task); AssertEventWasPublished<ResumingGroups>(x => x.Groups.Should().BeEquivalentTo(new[] { "david.com", "cookie.com" })); }