public async Task Run_PushesEventsAndTimesOutOriginPlayer_WhenPointsEventIsValid() { const string OriginPlayerName = "originPlayer"; var pointsEvent = new PointsEvent { Amount = 15, OriginPlayerId = OriginPlayerName }; var mockEventFactory = new Func <JsonDocument, PointsEvent>(document => pointsEvent); var mockGameTimer = new Mock <IGameTimer>(); mockGameTimer.Setup(timer => timer.Timeout(pointsEvent.OriginPlayerId, It.IsAny <string>())).Verifiable(); var mockEventWriter = new Mock <IEventWriter <PointsEvent> >(); mockEventWriter.Setup(writer => writer.PushEvents(pointsEvent)).Verifiable(); var structureUnderTest = new CommandIntake(mockEventFactory, () => 20, mockGameTimer.Object, mockEventWriter.Object, null, null); const string CommandPayload = "{}"; await structureUnderTest.InterpretCommand(CommandPayload); mockGameTimer.Verify(timer => timer.Timeout(pointsEvent.OriginPlayerId, It.IsAny <string>()), Times.Once); mockEventWriter.Verify(writer => writer.PushEvents(pointsEvent), Times.Once); }
public async Task InterpretCommand_ShortCircuits_WhenEventFactoryReturnsNull() { var mockEventFactory = new Func <JsonDocument, PointsEvent>(document => null); var mockGameTimer = new Mock <IGameTimer>(); mockGameTimer.Setup(timer => timer.Timeout(It.IsAny <string>(), It.IsAny <string>())).Verifiable(); var mockEventWriter = new Mock <IEventWriter <PointsEvent> >(); mockEventWriter.Setup(writer => writer.PushEvents(It.IsAny <PointsEvent>())).Verifiable(); var structureUnderTest = new CommandIntake(mockEventFactory, () => 1, mockGameTimer.Object, mockEventWriter.Object, null, null); const string CommandPayload = "{}"; await structureUnderTest.InterpretCommand(CommandPayload); mockGameTimer.Verify(timer => timer.Timeout(It.IsAny <string>(), It.IsAny <string>()), Times.Never); mockEventWriter.Verify(writer => writer.PushEvents(It.IsAny <PointsEvent>()), Times.Never); }