This repository was archived by the owner on Jun 21, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +53
-1
lines changed
GitHub.UI.Reactive/Controls/Validation Expand file tree Collapse file tree 3 files changed +53
-1
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ namespace GitHub.UI
1717 public class ValidationMessage : UserControl
1818 {
1919 const double defaultTextChangeThrottle = 0.2 ;
20+ bool userHasInteracted ;
2021
2122 public ValidationMessage ( )
2223 {
@@ -33,7 +34,7 @@ public ValidationMessage()
3334 . Do ( CreateBinding )
3435 . Select ( control =>
3536 Observable . Merge (
36- this . WhenAnyValue ( x => x . ShowError ) ,
37+ this . WhenAnyValue ( x => x . ShowError ) . Where ( x => userHasInteracted ) ,
3738 control . Events ( ) . TextChanged
3839 . Throttle ( TimeSpan . FromSeconds ( ShowError ? defaultTextChangeThrottle : TextChangeThrottle ) ,
3940 RxApp . MainThreadScheduler )
@@ -121,6 +122,7 @@ public string ErrorAdornerTemplate
121122 void ShowValidateError ( bool showError )
122123 {
123124 IsShowingMessage = showError ;
125+ userHasInteracted = true ;
124126
125127 if ( ValidatesControl == null || ! IsAdornerEnabled ( ) ) return ;
126128
Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . Net ;
3+ using System . Reactive . Linq ;
4+ using System . Reactive . Subjects ;
5+ using GitHub . Authentication ;
6+ using GitHub . Info ;
7+ using GitHub . Models ;
8+ using GitHub . Primitives ;
9+ using GitHub . Services ;
10+ using GitHub . ViewModels ;
11+ using NSubstitute ;
12+ using Octokit ;
13+ using ReactiveUI ;
14+ using Xunit ;
15+
16+ public class LoginControlViewModelTests
17+ {
18+ public class TheAuthenticationResultsCommand : TestBaseClass
19+ {
20+ [ Fact ]
21+ public async void AllowsLoginFromEnterpriseAfterGitHubLoginHasFailed ( )
22+ {
23+ var repositoryHosts = Substitute . For < IRepositoryHosts > ( ) ;
24+
25+ var gitHubLogin = Substitute . For < ILoginToGitHubViewModel > ( ) ;
26+ var gitHubLoginCommand = ReactiveCommand . CreateAsyncObservable ( _ =>
27+ Observable . Return ( AuthenticationResult . CredentialFailure ) ) ;
28+ gitHubLogin . Login . Returns ( gitHubLoginCommand ) ;
29+
30+ var enterpriseLogin = Substitute . For < ILoginToGitHubForEnterpriseViewModel > ( ) ;
31+ var enterpriseLoginCommand = ReactiveCommand . CreateAsyncObservable ( _ =>
32+ Observable . Return ( AuthenticationResult . Success ) ) ;
33+ enterpriseLogin . Login . Returns ( enterpriseLoginCommand ) ;
34+
35+ var loginViewModel = new LoginControlViewModel ( repositoryHosts , gitHubLogin , enterpriseLogin ) ;
36+ var success = false ;
37+
38+ loginViewModel . AuthenticationResults
39+ . Where ( x => x == AuthenticationResult . Success )
40+ . Subscribe ( _ => success = true ) ;
41+
42+ await gitHubLoginCommand . ExecuteAsync ( ) ;
43+ await enterpriseLoginCommand . ExecuteAsync ( ) ;
44+
45+ Assert . True ( success ) ;
46+ }
47+ }
48+ }
49+
Original file line number Diff line number Diff line change 163163 <Compile Include =" GitHub.App\Services\GitClientTests.cs" />
164164 <Compile Include =" GitHub.App\Services\RepositoryCloneServiceTests.cs" />
165165 <Compile Include =" GitHub.App\Services\RepositoryCreationServiceTests.cs" />
166+ <Compile Include =" GitHub.App\ViewModels\LoginControlViewModelTests.cs" />
166167 <Compile Include =" GitHub.App\ViewModels\LoginToGitHubViewModelTests.cs" />
167168 <Compile Include =" GitHub.App\ViewModels\RepositoryCloneViewModelTests.cs" />
168169 <Compile Include =" GitHub.App\ViewModels\RepositoryCreationViewModelTests.cs" />
You can’t perform that action at this time.
0 commit comments