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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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()); }
/// <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"); }
public void ScoringStorageCmdInteractor_Ctor_NullLoggerParam() { var scoringCmdInteractor = new ScoringStorageCmdInteractor(mockScoringRepository.Object, null); }
public void ScoringStorageCmdInteractor_Ctor_NullRespositoryParam() { var scoringCmdInteractor = new ScoringStorageCmdInteractor(null, mockLogger.Object); }
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); }
/// <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); }