public void TestLatestExecution_TracksActionTask() { var tcs = new TaskCompletionSource <object>(); var objectUnderTest = new ProtectedAsyncCommand(() => tcs.Task); objectUnderTest.Execute(null); Assert.AreEqual(tcs.Task, objectUnderTest.LatestExecution.ActualTask); }
public void TestExecute_UpdatesLatestExecution() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); AsyncProperty originalExecution = objectUnderTest.LatestExecution; objectUnderTest.Execute(null); Assert.AreNotEqual(originalExecution, objectUnderTest.LatestExecution); }
public void TestLatestExecution_NotifiesOnChange() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); var changedProperties = new List <string>(); objectUnderTest.PropertyChanged += (sender, args) => changedProperties.Add(args.PropertyName); objectUnderTest.Execute(null); CollectionAssert.AreEqual(new[] { nameof(objectUnderTest.LatestExecution) }, changedProperties); }
public void TestExecute_InvokesProvidedAction() { var tcs = new TaskCompletionSource <object>(); var actionMock = new Mock <Func <Task> >(); actionMock.Setup(f => f()).Returns(tcs.Task); var objectUnderTest = new ProtectedAsyncCommand(actionMock.Object); objectUnderTest.Execute(null); actionMock.Verify(f => f(), Times.Once); }
public void TestExecute_DoesNotThrowWhenActionErrors() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.FromException(new Exception())); objectUnderTest.Execute(null); }