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();
        }
Exemple #5
0
    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;
 }