public void GetBlikCodeCommand__ShouldNotNavigateOnInvalidCredentials(string username)
        {
            // ARRANGE
            var parameters = new NavigationParameters
            {
                { nameof(username), username },
            };

            var mockNavigationService = new Mock <INavigationService>();

            var viewModel = new AccountPageViewModel(mockNavigationService.Object);

            // ACT
            Should.NotThrow(() => viewModel.OnNavigatingTo(parameters));

            // ASSERT
            viewModel.GetBlikCodeCommand.CanExecute().ShouldBeFalse();
        }
        public void OnNavigatingTo__NavigatesToSignInPageOnInvalidCredentials(string username)
        {
            // ARRANGE
            var parameters = new NavigationParameters
            {
                { nameof(username), username },
            };

            var mockNavigationService = new Mock <INavigationService>();

            mockNavigationService.Setup(n => n.NavigateAsync($"/{nameof(SignInPage)}"))
            .ReturnsAsync(new Mock <INavigationResult>().Object);

            var viewModel = new AccountPageViewModel(mockNavigationService.Object);

            // ACT
            Should.NotThrow(() => viewModel.OnNavigatingTo(parameters));

            // ASSERT
            mockNavigationService.Verify(n => n.NavigateAsync($"/{nameof(SignInPage)}"), Times.Once);
        }
        public void OnNavigatingTo__ParserNavigationParametersCorrectly(string username)
        {
            // ARRANGE
            var parameters = new NavigationParameters
            {
                { nameof(username), username },
            };

            var mockNavigationService = new Mock <INavigationService>();

            mockNavigationService.Setup(n => n.NavigateAsync($"/{nameof(SignInPage)}"))
            .ReturnsAsync(new Mock <INavigationResult>().Object);

            var viewModel = new AccountPageViewModel(mockNavigationService.Object);

            // ACT
            Should.NotThrow(() => viewModel.OnNavigatingTo(parameters));

            // ASSERT
            viewModel.Username.ShouldBeSameAs(username ?? string.Empty);
        }
        public void GetBlikCodeCommand__ShouldNavigateToCorrectViewOnValidCredentials(string username)
        {
            // ARRANGE
            var parameters = new NavigationParameters
            {
                { nameof(username), username },
            };

            var mockNavigationService = new Mock <INavigationService>();

            mockNavigationService.Setup(n => n.NavigateAsync($"{nameof(BlikCodePage)}",
                                                             new NavigationParameters($"{nameof(username)}={username}")))
            .ReturnsAsync(new Mock <INavigationResult>().Object);

            var viewModel = new AccountPageViewModel(mockNavigationService.Object);

            // ACT
            Should.NotThrow(() => viewModel.OnNavigatingTo(parameters));
            Should.NotThrow(viewModel.GetBlikCodeCommand.Execute);

            // ASSERT
            mockNavigationService.Verify(n => n.NavigateAsync($"{nameof(BlikCodePage)}",
                                                              new NavigationParameters($"{nameof(username)}={username}")), Times.Once);
        }