public async Task ExecutingAQueueOfTasksActuallyExecutesEachOfThem() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(false); var taskService = new OfflineTaskService(client, database, loggingService, platform); for (int i = 0; i < 10; i++) { await taskService.AddAsync($"https://test-{i}.de", Array.Empty <string>()); } A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(true); A.CallTo(() => client.AddAsync(A <Uri> .Ignored, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(new WallabagItem() { Id = 1, Title = "My fake item", Url = "https://test.de", Tags = new List <WallabagTag>() }); await taskService.ExecuteAllAsync(); A.CallTo(() => client.AddAsync(A <Uri> .Ignored, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).MustHaveHappened(Repeated.Exactly.Times(10)); }
public async Task ExecutingAnAddItemOfflineTaskReplacesTheItemIdOfTheTask() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); var taskService = new OfflineTaskService(client, database, loggingService, platform); A.CallTo(() => client.AddAsync(A <Uri> .Ignored, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(new WallabagItem() { Id = 123 }); A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(true); int itemId = 0; taskService.TaskExecuted += (s, e) => itemId = e.Task.ItemId; await taskService.ExecuteAsync(new OfflineTask() { Id = 0, ItemId = 0, Action = OfflineTask.OfflineTaskAction.AddItem, Url = "https://test.de", Tags = new List <string>() }); Assert.Equal(123, itemId); }
public async Task ExecutingAnOfflineTaskWithoutInternetConnectionDoesNotCallTheAPI() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(false); var taskService = new OfflineTaskService(client, database, loggingService, platform); await taskService.AddAsync("http://test.de", new List <string>()); A.CallTo(() => client.AddAsync(A <Uri> .Ignored, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).MustNotHaveHappened(); }
public async Task AddingANewTaskForExistingArticleFiresTheTaskAddedEvent() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); var taskService = new OfflineTaskService(client, database, loggingService, platform); await Assert.RaisesAsync <OfflineTaskAddedEventArgs>( x => taskService.TaskAdded += x, x => taskService.TaskAdded -= x, () => taskService.AddAsync(0, OfflineTask.OfflineTaskAction.MarkAsRead)); }
public async Task AddingANewTaskForNewUrlFiresTheTaskAddedEvent() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); var taskService = new OfflineTaskService(client, database, loggingService, platform); await Assert.RaisesAsync <OfflineTaskAddedEventArgs>( x => taskService.TaskAdded += x, x => taskService.TaskAdded -= x, () => taskService.AddAsync("https://test.de", Array.Empty <string>())); }
public async Task ExecutingATaskWithFalseAPIResultDoesNotRemoveThemFromTheDatabase() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); A.CallTo(() => client.ArchiveAsync(A <WallabagItem> .Ignored, A <CancellationToken> .Ignored)).Returns(false); var taskService = new OfflineTaskService(client, database, loggingService, platform); int count = taskService.Count; await taskService.AddAsync(0, OfflineTask.OfflineTaskAction.MarkAsRead); Assert.Equal(count + 1, taskService.Count); }
public void HavingItemsInTheDatabaseAtStartShouldIncludeThemOnInit() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); for (int i = 0; i < 3; i++) { database.Insert(new OfflineTask() { Id = i, ItemId = i }); } var taskService = new OfflineTaskService(client, database, loggingService, platform); Assert.Equal(database.ExecuteScalar <int>("select count(*) from OfflineTask"), taskService.Count); }
public async Task ExecutionOfTaskFiresTheTaskExecutedEventWithoutInternetConnection() { var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); var task = new OfflineTask() { Id = 1, Action = OfflineTask.OfflineTaskAction.AddItem, ItemId = 0, Url = "https://test.de" }; var taskService = new OfflineTaskService(client, database, loggingService, platform); A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(false); await Assert.RaisesAsync <OfflineTaskExecutedEventArgs>( x => taskService.TaskExecuted += x, x => taskService.TaskExecuted -= x, () => taskService.ExecuteAsync(task)); }
public async Task AddingATaskExecutesItDirectly() { string uriString = "https://wallabag.org"; var uriToTest = new Uri(uriString); var client = A.Fake <IWallabagClient>(); var platform = A.Fake <IPlatformSpecific>(); var loggingService = A.Fake <ILoggingService>(); var database = TestsHelper.CreateFakeDatabase(); A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(true); A.CallTo(() => client.AddAsync(A <Uri> .Ignored, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(new WallabagItem() { Id = 1, Title = "My fake item", Url = uriString, Tags = new List <WallabagTag>() }); var taskService = new OfflineTaskService(client, database, loggingService, platform); await taskService.AddAsync(uriString, new List <string>()); A.CallTo(() => client.AddAsync(uriToTest, A <IEnumerable <string> > .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).MustHaveHappened(); }