protected override void AdditionalSetup()
        {
            _mockUserInteraction = new Mock <ICustomUserInteraction>();
            Ioc.RegisterSingleton <ICustomUserInteraction>(_mockUserInteraction.Object);

            _mockMessenger = new Mock <IMvxMessenger>();
            Ioc.RegisterSingleton <IMvxMessenger>(_mockMessenger.Object);

            _fixture = new Fixture().Customize(new AutoMoqCustomization());
            _fixture.OmitProperty("EffectiveDateString");
            _fixture.Customize <InstructionSafetyCheckViewModel>(vm => vm.Without(x => x.SafetyCheckItemViewModels));
            _fixture.Customize <InstructionSafetyCheckViewModel>(vm => vm.Without(x => x.SafetyProfileVehicle));
            _fixture.Customize <SafetyCheckFault>(vm => vm.With(x => x.Status, Core.Enums.SafetyCheckStatus.Passed));

            _driver  = _fixture.Create <Core.Models.Driver>();
            _vehicle = _fixture.Create <Core.Models.Vehicle>();
            _trailer = _fixture.Create <Core.Models.Trailer>();

            _infoService = _fixture.Create <InfoService>();
            _fixture.Inject <IInfoService>(_infoService);
            _infoService.SetCurrentDriver(_driver);
            _infoService.SetCurrentVehicle(_vehicle);

            _safetyCheckService = _fixture.Create <SafetyCheckService>();
            _fixture.Inject <ISafetyCheckService>(_safetyCheckService);

            _mobileData = _fixture.SetUpInstruction(Core.Enums.InstructionType.Collect, false, true, false, false, false, false, true, null);
            _navData    = new NavData <MobileData>()
            {
                Data = _mobileData
            };

            _navData.OtherData["UpdatedTrailer"] = _trailer;

            _safetyCheckService.CurrentVehicleSafetyCheckData   = _vehicleSafetyCheckData = _fixture.Create <SafetyCheckData>();
            _navData.OtherData["UpdatedTrailerSafetyCheckData"] = _trailerSafetyCheckData = _fixture.Create <SafetyCheckData>();

            var mockMobileDataRepo = _fixture.InjectNewMock <IMobileDataRepository>();

            mockMobileDataRepo.Setup(mdr => mdr.GetByIDAsync(It.Is <Guid>(i => i == _mobileData.ID))).ReturnsAsync(_mobileData);

            _mockSafetyProfileRepository = _fixture.InjectNewMock <ISafetyProfileRepository>();
            _mockConfigRepository        = _fixture.InjectNewMock <IConfigRepository>();
            _mockVehicleRepo             = _fixture.InjectNewMock <IVehicleRepository>();

            _mockVehicleRepo.Setup(vr => vr.GetByIDAsync(_vehicle.ID)).ReturnsAsync(_vehicle);

            var repositories = _fixture.Create <Repositories>();

            _fixture.Inject <IRepositories>(repositories);

            _mockNavigationService = _fixture.InjectNewMock <INavigationService>();
            Ioc.RegisterSingleton <INavigationService>(_mockNavigationService.Object);

            _safetyProfiles = CreateSafetyProfiles();
        }
Пример #2
0
        private async Task AuthenticateAsync()
        {
            AuthenticationResult result;
            LogMessage           exceptionMsg = null;

            ProgressTitle   = _progressTitleForPasscode;
            ProgressMessage = _progressMessageForPasscode;

            this.IsBusy = true;

            try
            {
                result = await _authenticationService.AuthenticateAsync(this.Passcode);

                if (result.Success)
                {
                    _infoService.SetCurrentDriver(result.Driver);

                    if (await _currentDriverRepository.GetByIDAsync(_infoService.CurrentDriverID.Value) == null)
                    {
                        var newDriver = new CurrentDriver {
                            ID = _infoService.CurrentDriverID.Value
                        };

                        try
                        {
                            await _currentDriverRepository.InsertAsync(newDriver);
                        }
                        catch (Exception ex)
                        {
                            MvxTrace.Error("\"{0}\" in {1}.{2}\n{3}", ex.Message, "CurrentDriverRepository", "InsertAsync", ex.StackTrace);
                            throw;
                        }
                    }

                    // Start the gateway queue timer which will cause submission of any queued data to the MWF Mobile gateway service on a repeat basis
                    _gatewayQueuedService.StartQueueTimer();

                    await _navigationService.MoveToNextAsync();
                }
            }
            catch (Exception ex)
            {
                exceptionMsg = _loggingService.GetExceptionLogMessage(ex);
                result       = new AuthenticationResult()
                {
                    AuthenticationFailedMessage = "Unable to check your passcode.", Success = false
                };
            }
            finally
            {
                // clear the passcode
                this.Passcode = string.Empty;
                this.IsBusy   = false;
            }

            if (exceptionMsg != null)
            {
                await _loggingService.LogEventAsync(exceptionMsg);
            }

            // Let the user know
            if (!result.Success)
            {
                await Mvx.Resolve <ICustomUserInteraction>().AlertAsync(result.AuthenticationFailedMessage);
            }
        }