public void CancelButton_Cancels_Login() { var scheduler = new TestScheduler(); LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(scheduler) .WithUserName("coolusername") .WithPassword("excellentpassword"); scheduler.AdvanceByMs(TimeSpan.FromSeconds(1).Milliseconds); sut.Login.Subscribe(x => x.Should().Be(true)); Observable .Return(Unit.Default) .InvokeCommand(sut.Login); sut.Cancel.CanExecute.Subscribe(x => x.Should().Be(true)); scheduler.AdvanceByMs(1000); Observable .Return(Unit.Default) .InvokeCommand(sut.Cancel); }
public void CancelButton_IsAvailableUntil_TwoSeconds() { var actual = false; var scheduler = new TestScheduler(); LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(scheduler) .WithUserName("coolusername") .WithPassword("excellentpassword"); sut.Cancel.CanExecute.Subscribe(x => { actual = x; }); Observable.Return(Unit.Default).InvokeCommand(sut.Login); actual.Should().Be(false); // 50ms scheduler.AdvanceByMs(50); actual.Should().Be(true); // 1sec 50ms scheduler.AdvanceByMs(TimeSpan.FromSeconds(1).TotalMilliseconds); actual.Should().Be(true); // 2sec 50sms scheduler.AdvanceByMs(TimeSpan.FromSeconds(1).TotalMilliseconds); actual.Should().Be(false); }
public async Task User_CanLogin_WithCorrect_Password() { LoginViewModel sut = new LoginViewModelBuilder() .WithUserName("coolusername") .WithPassword("Mr. Goodbytes"); Assert.False(true); }
public async Task LoginButton_IsDisabled_ByDefault() { LoginViewModel sut = new LoginViewModelBuilder(); var result = await sut.Login.CanExecute.FirstAsync(); result.Should().BeFalse(); }
public async Task LoginButton_IsEnabled_WhenUserNameAndPassword_IsNotEmptyAsync(string userName, string password) { LoginViewModel sut = new LoginViewModelBuilder() .WithUserName(userName) .WithPassword(password); (await sut.Login.CanExecute.FirstAsync()).Should().Be(true); }
public async Task CancelButton_IsDisabled_WhenNot_LoggingIn() { LoginViewModel sut = new LoginViewModelBuilder(); var result = await sut.Cancel.CanExecute.FirstAsync(); result.Should().BeFalse(); }
public async Task User_CannotLogin_WithIncorrect_Password() { LoginViewModel sut = new LoginViewModelBuilder() .WithUserName("coolusername") .WithPassword("incorrectpassword"); Assert.False(true); }
public async Task LoginButton_IsDisabled_WhenUserNameOrPassword_IsEmpty(string userName, string password) { LoginViewModel sut = new LoginViewModelBuilder() .WithUserName(userName) .WithPassword(password); (await sut.Login.CanExecute.FirstAsync()).ShouldBe(false); }
public void CancelButton_IsDisabled_WhenNot_LoggingIn() { var sut = new LoginViewModelBuilder() .Build(); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeFalse();; }
public void LoginButton_IsDisabled_ByDefault() { var sut = new LoginViewModelBuilder() .Build(); sut.Login.CanExecute .FirstAsync().Wait() .Should().BeFalse();; }
public void User_CannotLogin_WithIncorrect_Password() { var sut = new LoginViewModelBuilder() .WithUserName("coolusername") .WithPassword("incorrectpassword") .Build(); Assert.False(true); }
public void LoginButton_IsEnabled_WhenUserNameAndPassword_IsNotEmptyAsync(string userName, string password) { var sut = new LoginViewModelBuilder() .WithUserName(userName) .WithPassword(password) .Build(); sut.Login.CanExecute .FirstAsync().Wait() .Should().BeTrue(); }
public void LoginButton_IsDisabled_WhenUserNameOrPassword_IsEmpty(string userName, string password) { var sut = new LoginViewModelBuilder() .WithUserName(userName) .WithPassword(password) .Build(); sut.Login.CanExecute .FirstAsync().Wait() .Should().BeFalse();; }
public void CanLogin_TicksCorrectly() { var scheduler = new TestScheduler(); LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(scheduler) .WithUserName("coolusername") .WithPassword("Mr. Goodbytes"); sut.Cancel.CanExecute.ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var collection).Subscribe(); Observable.Return(Unit.Default).InvokeCommand(sut.Login); scheduler.AdvanceByMs(TimeSpan.FromSeconds(5).TotalMilliseconds); collection.ToList().Should().BeEquivalentTo(new[] { false, true, false }); }
public async Task CancelButton_Cancels_Login() { await new TestScheduler().With(async sched => { LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(sched) .WithUserName("coolusername") .WithPassword("excellentpassword"); sut.Login.Subscribe(x => x.Should().BeTrue()); sched.AdvanceByMs(TimeSpan.FromSeconds(1).Milliseconds); var result = await sut.Cancel.CanExecute.FirstAsync(); result.Should().BeTrue(); }).ConfigureAwait(false); }
public void User_CannotLogin_WithIncorrect_Password() { var scheduler = new TestScheduler(); LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(scheduler) .WithUserName("coolusername") .WithPassword("incorrectpassword"); bool?value = null; sut.Login.Subscribe(x => value = x); Observable.Return(Unit.Default).InvokeCommand(sut.Login); scheduler.AdvanceByMs(TimeSpan.FromSeconds(3).TotalMilliseconds); value.Should().Be(false); }
public async Task CancelButton_IsAvailableUntil_TwoSeconds() { new TestScheduler().With(sched => { LoginViewModel sut = new LoginViewModelBuilder() .WithScheduler(sched) .WithUserName("coolusername") .WithPassword("excellentpassword"); sut.Login.Execute().Subscribe(); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeFalse(); // 50ms sched.AdvanceByMs(50); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeTrue(); // 1sec 50ms sched.AdvanceByMs(TimeSpan.FromSeconds(1).Milliseconds); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeTrue(); // 2sec 50sms sched.AdvanceByMs(TimeSpan.FromSeconds(1).Milliseconds); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeFalse(); }); }
public void CancelButton_Cancels_Login() { (new TestScheduler()).With(sched => { var sut = new LoginViewModelBuilder() .WithScheduler(sched) .WithUserName("coolusername") .WithPassword("excellentpassword") .Build(); sut.Login.Subscribe(x => { x.Should().BeTrue(); }); //sut.Login.Execute(); sched.AdvanceByMs(TimeSpan.FromSeconds(1).Milliseconds); sut.Cancel.CanExecute .FirstAsync().Wait() .Should().BeTrue(); //sut.Cancel.Execute(); }); }
public async Task CancelButton_IsDisabled_WhenNot_LoggingIn() { LoginViewModel sut = new LoginViewModelBuilder(); (await sut.Cancel.CanExecute.FirstAsync()).Should().Be(false); }