Exemplo n.º 1
0
        public async Task ScoringStorageCmdInteractor_SaveRoundScores_BadScores_BadPilotId()
        {
            List <TimeSheet> pilotScores = GenerateValidTimeSheets(10);

            var timeGates = new List <TimeGate> {
                new TimeGate(TimeSpan.MinValue, 0, TimeGateType.Task)
            };
            var taskB = new TaskB_LastTwoFlights4MinMax();

            var roundScore = new TimeSheet
            {
                RoundOrdinal = 8,
                TimeGates    = timeGates,
                PilotId      = null,
                ContestId    = "asdfawewrs",
                TaskId       = taskB.Id,
                FlightGroup  = FlightGroup.A
            };

            pilotScores[7] = roundScore;

            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.SaveRoundScoresAsync(pilotScores, "234234");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNotNull(result.Error.ErrorMessage);
        }
Exemplo n.º 2
0
        public async Task ScoringStorageCmdInteractor_DeletePilotScoreAsync_NullTimeSheetParam()
        {
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.DeletePilotScoreAsync(null, "asdfsa");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.AreEqual(false, result.Value);
        }
Exemplo n.º 3
0
        public async Task ScoringStorageCmdInteractor_SaveRoundScores_EmptyTimeSheet()
        {
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.SaveRoundScoresAsync(new List <TimeSheet>(), "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNotNull(result.Error.ErrorMessage);
        }
Exemplo n.º 4
0
        public async Task ScoringStorageCmdInteractor_SaveRoundScores_EmptyContestId()
        {
            List <TimeSheet> pilotScores = GenerateValidTimeSheets(10);
            var scoringCmdInteractor     = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.SaveRoundScoresAsync(pilotScores, string.Empty);

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNotNull(result.Error.ErrorMessage);
        }
Exemplo n.º 5
0
        public async Task ScoringStorageCmdInteractor_DeletePilotScoreAsync_EmptyContestId()
        {
            var timeSheet            = GenerateValidTimeSheets(1);
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.DeletePilotScoreAsync(timeSheet.First(), string.Empty);

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.AreEqual(false, result.Value);
        }
Exemplo n.º 6
0
        public async Task ScoringStorageCmdInteractor_DeletePilotScoreAsync_HappyPath()
        {
            var timeSheet = GenerateValidTimeSheets(1);

            mockScoringRepository.Setup(sr => sr.DeleteAsync(It.IsAny <TimeSheet>())).Returns(Task.FromResult(new Result <bool>(true)));
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.DeletePilotScoreAsync(timeSheet.First(), "sadfasd");

            Assert.IsFalse(result.IsFaulted);
            Assert.IsNull(result.Error);
            Assert.AreEqual(true, result.Value);
        }
Exemplo n.º 7
0
        public async Task ScoringStorageCmdInteractor_DeletePilotScoreAsync_RepositoryException()
        {
            var timeSheet = GenerateValidTimeSheets(1);

            mockScoringRepository.Setup(sr => sr.UpdateAsync(It.IsAny <TimeSheet>())).ThrowsAsync(new Exception());
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.DeletePilotScoreAsync(timeSheet.First(), "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.AreEqual(false, result.Value);
        }
Exemplo n.º 8
0
        public async Task ScoringStorageCmdInteractor_UpdatePilotScoreAsync_RepositoryReturnsNull()
        {
            var timeSheet = GenerateValidTimeSheets(1);

            mockScoringRepository.Setup(sr => sr.UpdateAsync(It.IsAny <TimeSheet>())).Returns(Task.FromResult(new Result <TimeSheet>(null)));
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet.First(), "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);
        }
Exemplo n.º 9
0
        public async Task ScoringStorageCmdInteractor_SaveRoundScores_HappyPath()
        {
            List <TimeSheet> pilotScores = GenerateValidTimeSheets(10);

            var timeGates = new List <TimeGate> {
                new TimeGate(TimeSpan.MinValue, 0, TimeGateType.Task)
            };
            var taskB = new TaskB_LastTwoFlights4MinMax();

            mockScoringRepository.Setup(sr => sr.CreateAsync(It.IsAny <IEnumerable <TimeSheet> >())).Returns(Task.FromResult(new Result <IEnumerable <TimeSheet> >(pilotScores)));

            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.SaveRoundScoresAsync(pilotScores, "234234");

            Assert.IsFalse(result.IsFaulted);
            Assert.IsNull(result.Error);
            Assert.IsNotNull(result.Value);
            Assert.AreEqual(10, result.Value.Count());
        }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="F3KContestEngine" /> class.
 /// </summary>
 /// <param name="taskQueryInteractor">The task query interactor.</param>
 /// <param name="contestStorageCmdIntr">The contest storage command intr.</param>
 /// <param name="scoringStorageCmdIntr">The scoring storage command intr.</param>
 /// <param name="logger">The logger.</param>
 public F3KContestEngine(TaskQueryInteractor taskQueryInteractor,
                         ContestStorageCmdInteractor contestStorageCmdIntr,
                         ScoringStorageCmdInteractor scoringStorageCmdIntr,
                         ScoringQueryInteractor scoringQueryInteractor,
                         ScoringContestScoreAggInteractor scoringContestScoreAggIntr,
                         FlightMatrixStorageCmdInteractor flightMatrixStorageCmdIntr,
                         FlightMatrixQueryInteractor flightMatrixQueryIntr,
                         PilotQueryInteractor pilotQueryInteractor,
                         ISortingAlgo sortingAlgo,
                         IFlyOffSelectionAlgo flyOffAlgo,
                         ILoggingService logger) : base(contestStorageCmdIntr, scoringStorageCmdIntr)
 {
     this.taskQueryInteractor        = taskQueryInteractor ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(taskQueryInteractor)} cannot be null");
     this.scoringQueryInteractor     = scoringQueryInteractor ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(scoringQueryInteractor)} cannot be null");
     this.scoringContestScoreAggIntr = scoringContestScoreAggIntr ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(scoringContestScoreAggIntr)} cannot be null");
     this.flightMatrixQueryIntr      = flightMatrixQueryIntr ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(flightMatrixQueryIntr)} cannot be null");
     this.flightMatrixStorageCmdIntr = flightMatrixStorageCmdIntr ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(flightMatrixStorageCmdIntr)} cannot be null");
     this.pilotQueryInteractor       = pilotQueryInteractor ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(pilotQueryInteractor)} cannot be null");
     this.sortingAlgo       = sortingAlgo ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(sortingAlgo)} cannot be null");
     this.flyOffPilotPicker = flyOffAlgo ?? throw new ArgumentException($"{nameof(F3KContestEngine)}:Ctor - {nameof(flyOffAlgo)} cannot be null");
     this.logger            = logger ?? throw new ArgumentNullException($"{nameof(F3KContestEngine)}:Ctor - {nameof(logger)} cannot be null");
 }
Exemplo n.º 11
0
 public void ScoringStorageCmdInteractor_Ctor_NullLoggerParam()
 {
     var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, null);
 }
Exemplo n.º 12
0
 public void ScoringStorageCmdInteractor_Ctor_NullRespositoryParam()
 {
     var scoringCmdInteractor = new ScoringStorageCmdInteractor(null, mockLogger.Object);
 }
Exemplo n.º 13
0
        public async Task ScoringStorageCmdInteractor_UpdatePilotScoreAsync_BadTimeSheetParam()
        {
            var timeSheet = GenerateValidTimeSheets(1).First();

            timeSheet.ContestId = null;

            mockScoringRepository.Setup(sr => sr.UpdateAsync(It.IsAny <TimeSheet>())).Returns(Task.FromResult(new Result <TimeSheet>(timeSheet)));
            var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            var result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);

            timeSheet.ContestId   = "234234";
            timeSheet.FlightGroup = FlightGroup.Unknown;

            scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);

            timeSheet.FlightGroup = FlightGroup.A;
            timeSheet.PilotId     = null;

            scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);

            timeSheet.PilotId      = "234234";
            timeSheet.RoundOrdinal = -1;

            scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);

            timeSheet.RoundOrdinal = 2;
            timeSheet.TaskId       = null;

            scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);

            timeSheet.TaskId    = "234234";
            timeSheet.TimeGates = null;

            scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, mockLogger.Object);
            result = await scoringCmdInteractor.UpdatePilotsScoreAsync(timeSheet, "sadfasd");

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNotNull(result.Error);
            Assert.IsNull(result.Value);
        }
Exemplo n.º 14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ContestEngineBase"/> class.
 /// </summary>
 /// <param name="contestStorageCmdInteractor">The contest storage command interactor.</param>
 /// <param name="scoringStorageCmdInteractor">The scoring storage command interactor.</param>
 public ContestEngineBase(ContestStorageCmdInteractor contestStorageCmdInteractor,
                          ScoringStorageCmdInteractor scoringStorageCmdInteractor)
 {
     this.contestStorageIntr = new Lazy <ContestStorageCmdInteractor>(() => contestStorageCmdInteractor);
     this.scoringCmdIntr     = new Lazy <ScoringStorageCmdInteractor>(() => scoringStorageCmdInteractor);
 }