public Task TestExistsAsync() { var mockInstallationIdController = new Mock<IInstallationIdController>(); var guid = Guid.NewGuid(); mockInstallationIdController.Setup(obj => obj.Get()).Returns(guid); var controller = new ParseCurrentInstallationController(mockInstallationIdController.Object); var installation = new ParseInstallation(); return controller.SetAsync(installation, CancellationToken.None).OnSuccess(_ => { Assert.AreEqual(installation, controller.CurrentInstallation); return controller.ExistsAsync(CancellationToken.None); }).Unwrap() .OnSuccess(t => { Assert.IsTrue(t.Result); controller.ClearFromMemory(); return controller.ExistsAsync(CancellationToken.None); }).Unwrap() .OnSuccess(t => { Assert.IsTrue(t.Result); controller.ClearFromDisk(); return controller.ExistsAsync(CancellationToken.None); }).Unwrap() .OnSuccess(t => { Assert.IsFalse(t.Result); }); }