public async Task PilotQueryInteractor_GetPilotAsync_NullParameters()
        {
            var pilotQueryInteractor = new PilotQueryInteractor(mockPilotRepository.Object, mockLogger.Object);
            var result = await pilotQueryInteractor.GetPilotAsync(string.Empty);

            Assert.IsTrue(result.IsFaulted);
        }
        public async Task PilotQueryInteractor_GetPilotAsync_RepositoryFailure_Exception()
        {
            var id = "234sdfsjf";
            var exceptionMessage = "Derp";

            mockPilotRepository.Setup(p => p.ReadAsync(It.IsAny <string>())).Throws(new Exception(exceptionMessage));
            var pilotQueryInteractor = new PilotQueryInteractor(mockPilotRepository.Object, mockLogger.Object);

            var result = await pilotQueryInteractor.GetPilotAsync(id);

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNull(result.Value);
            Assert.IsNotNull(result.Error.Exception);
            Assert.AreEqual(exceptionMessage, result.Error.ErrorMessage);
        }
        public async Task PilotQueryInteractor_GetPilotAsync_RepositoryFailure_ReturnsNull()
        {
            var id        = "dlfw23efsdfl";
            var fName     = "Rick";
            var lName     = "R";
            var amaNumber = "23423940";
            var airFrame  = "Snipe 2";

            var pilot = new Pilot(fName, lName, id, amaNumber, airFrame);

            mockPilotRepository.Setup(p => p.ReadAsync(It.IsAny <string>())).Returns(Task.FromResult(new Result <Pilot>(null)));
            var pilotQueryInteractor = new PilotQueryInteractor(mockPilotRepository.Object, mockLogger.Object);

            var result = await pilotQueryInteractor.GetPilotAsync(id);

            Assert.IsTrue(result.IsFaulted);
            Assert.IsNull(result.Value);
        }
        public async Task PilotQueryInteractor_GetPilotAsync_HappyPath()
        {
            var id        = "sdflkwjrw";
            var fName     = "Rick";
            var lName     = "R";
            var amaNumber = "23423940";
            var airFrame  = "Snipe 2";

            var pilot = new Pilot(fName, lName, id, amaNumber, airFrame);

            mockPilotRepository.Setup(p => p.ReadAsync(It.IsAny <string>())).Returns(Task.FromResult(new Result <Pilot>(pilot)));
            var pilotQueryInteractor = new PilotQueryInteractor(mockPilotRepository.Object, mockLogger.Object);

            var result = await pilotQueryInteractor.GetPilotAsync(id);

            Assert.IsFalse(result.IsFaulted);
            Assert.IsNotNull(result.Value);
            Assert.AreEqual(id, result.Value.Id);
            Assert.AreEqual(fName, result.Value.FirstName);
            Assert.AreEqual(lName, result.Value.LastName);
            Assert.AreEqual(amaNumber, result.Value.StandardsBodyId);
            Assert.AreEqual(airFrame, result.Value.Airframe);
        }