public async Task OnNoChanges_CallsNothing() { var gameweekClient = A.Fake <IGlobalSettingsClient>(); A.CallTo(() => gameweekClient.GetGlobalSettings()).Returns(GameweeksWithCurrentNowMarkedAsFinished()); var mediator = A.Fake <IMediator>(); var action = new GameweekLifecycleMonitor(gameweekClient, A.Fake <ILogger <GameweekLifecycleMonitor> >(), mediator); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekMonitoringStarted> .That.Matches(a => a.CurrentGameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); A.CallTo(() => mediator.Publish(A <GameweekJustBegan> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekFinished> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekJustBegan> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekFinished> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekJustBegan> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); A.CallTo(() => mediator.Publish(A <GameweekFinished> ._, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); }
public async Task OnFirstProcess_NoCurrentGameweek_OrchestratesNothing() { var gameweekClient = A.Fake <IGlobalSettingsClient>(); A.CallTo(() => gameweekClient.GetGlobalSettings()).Returns(GlobalSettingsWithGameweeks(new List <Gameweek>())); var mediator = A.Fake <IMediator>(); var action = new GameweekLifecycleMonitor(gameweekClient, A.Fake <ILogger <GameweekLifecycleMonitor> >(), mediator); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(null, CancellationToken.None)).WithAnyArguments().MustNotHaveHappened(); }
public async Task OnFirstProcess_OrchestratesInitializeAndGameweekOngoing() { var gameweekClient = A.Fake <IGlobalSettingsClient>(); A.CallTo(() => gameweekClient.GetGlobalSettings()).Returns(GlobalSettingsWithGameweeks(SomeGameweeks())); var mediator = A.Fake <IMediator>(); var action = new GameweekLifecycleMonitor(gameweekClient, A.Fake <ILogger <GameweekLifecycleMonitor> >(), mediator); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekMonitoringStarted> .That.Matches(a => a.CurrentGameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> .That.Matches(a => a.Gameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); }
public async Task OnGameweekFinished_CallsOrchestratorEnd() { var gameweekClient = A.Fake <IGlobalSettingsClient>(); A.CallTo(() => gameweekClient.GetGlobalSettings()) .Returns(GameweeksBeforeTransition()).Once() .Then.Returns(GameweeksWithCurrentNowMarkedAsFinished()); var mediator = A.Fake <IMediator>(); var action = new GameweekLifecycleMonitor(gameweekClient, A.Fake <ILogger <GameweekLifecycleMonitor> >(), mediator); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekMonitoringStarted> .That.Matches(a => a.CurrentGameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> .That.Matches(a => a.Gameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekFinished> .That.Matches(a => a.Gameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); }
public async Task OnGameweekTransition_CallsOrchestratorBegin() { var gameweekClient = A.Fake <IGlobalSettingsClient>(); A.CallTo(() => gameweekClient.GetGlobalSettings()) .Returns(GameweeksBeforeTransition()).Once() .Then.Returns(GameweeksAfterTransition()); var mediator = A.Fake <IMediator>(); var session = new TestableMessageSession(); var action = new GameweekLifecycleMonitor(gameweekClient, A.Fake <ILogger <GameweekLifecycleMonitor> >(), mediator, session); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekMonitoringStarted> .That.Matches(a => a.CurrentGameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); A.CallTo(() => mediator.Publish(A <GameweekCurrentlyOnGoing> .That.Matches(a => a.Gameweek.Id == 2), CancellationToken.None)).MustHaveHappenedOnceExactly(); await action.EveryOtherMinuteTick(CancellationToken.None); A.CallTo(() => mediator.Publish(A <GameweekJustBegan> .That.Matches(a => a.Gameweek.Id == 3), CancellationToken.None)).MustHaveHappenedOnceExactly(); Assert.Single(session.PublishedMessages); Assert.IsType <Messaging.Contracts.Events.v1.GameweekJustBegan>(session.PublishedMessages[0].Message); }
public GameweekLifecycleRecurringAction(GameweekLifecycleMonitor monitor, ILogger <GameweekLifecycleRecurringAction> logger) { _monitor = monitor; _logger = logger; }