public void WhenModelIsUpdatedTheViewModelIsUpdatedToo()
        {
            var item = new Item();
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var navigation         = A.Fake <INavigationService>();
            var logging            = A.Fake <ILoggingService>();
            var device             = A.Fake <IPlatformSpecific>();
            var database           = TestsHelper.CreateFakeDatabase();

            var viewModel = new ItemViewModel(item,
                                              offlineTaskService,
                                              navigation,
                                              logging,
                                              device,
                                              database);

            bool eventWasFired = false;

            viewModel.PropertyChanged += (s, e) =>
            {
                eventWasFired = true;
                Assert.True(e.PropertyName == nameof(ItemViewModel.Model));
            };

            viewModel.RaisePropertyChanged(nameof(viewModel.Model));

            Assert.True(eventWasFired);
        }
        public async Task ArticleWithEmptyContentShouldFailWithoutAnInternetConnection()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            // Insert a sample item without content to the database
            var item = new Item()
            {
                Id      = 1,
                Content = string.Empty
            };

            database.Insert(item);

            // If the ViewModel asks for an internet connection, return false
            A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(false);

            var viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database);
            await viewModel.ActivateAsync(item.Id, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            A.CallTo(() => platform.InternetConnectionIsAvailable).MustHaveHappened();
            A.CallTo(() => client.GetItemAsync(A <int> .That.IsEqualTo(1), A <CancellationToken> .Ignored)).MustNotHaveHappened();
            A.CallTo(() => platform.GetArticleTemplateAsync()).MustNotHaveHappened();
            Assert.True(viewModel.ErrorDuringInitialization);
            Assert.True(string.IsNullOrEmpty(viewModel?.FormattedHtml));
        }
Exemple #3
0
        public void AddingATagToMultipleItemsAddsThemUsingTheOfflineTaskService()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                Items = new List <Item>()
                {
                    new Item()
                    {
                        Id = 1, Title = "First test"
                    },
                    new Item()
                    {
                        Id = 2, Title = "Second test"
                    },
                }
            };

            viewModel.Tags.Add(new Tag()
            {
                Id = 1, Label = "test"
            });
            viewModel.FinishCommand.Execute(null);

            A.CallTo(() => offlineTaskService.AddAsync(A <int> .Ignored, OfflineTask.OfflineTaskAction.EditTags, A <List <Tag> > .Ignored, A <List <Tag> > .Ignored)).MustHaveHappened(Repeated.Exactly.Twice);
        }
Exemple #4
0
        public async Task AddingOneItemWithTagsDoesAddThemToTheCurrentTagList()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var item = new Item()
            {
                Id   = 1,
                Tags = new System.Collections.ObjectModel.ObservableCollection <Tag>()
                {
                    new Tag()
                    {
                        Id = 1, Label = "test"
                    },
                    new Tag()
                    {
                        Id = 2, Label = "test"
                    },
                    new Tag()
                    {
                        Id = 3, Label = "test"
                    },
                }
            };

            database.Insert(item);

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService);
            await viewModel.ActivateAsync(item.Id, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            Assert.Equal(3, viewModel.Tags.Count);
            Assert.False(viewModel.TagsCountIsZero);
        }
        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 void ExecutingTheChangeFavoriteStatusCommandChangesItemPropertiesCorrect()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            var item = new Item()
            {
                Id        = 1,
                Content   = string.Empty,
                IsStarred = false
            };

            var viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database)
            {
                Item = new ItemViewModel(item, offlineTaskService, navigationService, loggingService, platform, database)
            };

            Assert.False(viewModel.Item.Model.IsStarred);

            viewModel.ChangeFavoriteStatusCommand.Execute(null);
            Assert.True(viewModel.Item.Model.IsStarred);

            viewModel.ChangeFavoriteStatusCommand.Execute(null);
            Assert.False(viewModel.Item.Model.IsStarred);
        }
Exemple #7
0
        public void InvokingTheQueryUpdateUpdatesTheSuggestions()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            //Fake some tags
            var fakeTags = new List <Tag>();

            for (int i = 0; i < 3; i++)
            {
                var tag = new Tag()
                {
                    Label = $"{nameof(EditTagsViewModelTests)} fake tag {i}",
                    Id    = i
                };

                fakeTags.Add(tag);
                database.Insert(tag);
            }

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                TagQuery = nameof(EditTagsViewModelTests)
            };

            viewModel.TagQueryChangedCommand.Execute(null);

            Assert.Equal(3, viewModel.Suggestions.Count);
            Assert.Contains(nameof(EditTagsViewModel), viewModel.Suggestions[0].Label);
        }
        public void EditingTheTagsNavigatesToProperPage()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            var item = new Item()
            {
                Id   = 1,
                Tags = new System.Collections.ObjectModel.ObservableCollection <Tag>()
                {
                    new Tag()
                    {
                        Label = "test"
                    }
                }
            };

            var viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database)
            {
                Item = new ItemViewModel(item, offlineTaskService, navigationService, loggingService, platform, database)
            };

            viewModel.EditTagsCommand.Execute(null);

            A.CallTo(() => navigationService.Navigate(A <Data.Common.Navigation.Pages> .That.IsEqualTo(Data.Common.Navigation.Pages.EditTagsPage), A <object> .Ignored)).MustHaveHappened();
        }
Exemple #9
0
        public void AddingMultipleItemsWithTagsDoesntAddThemToTheCurrentTagList()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                Items = new List <Item>()
                {
                    new Item()
                    {
                        Id = 1, Title = "First test"
                    },
                    new Item()
                    {
                        Id = 2, Title = "Second test"
                    },
                }
            };

            Assert.Equal(0, viewModel.Tags.Count);
            Assert.True(viewModel.TagsCountIsZero);
        }
        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 void DeletingAnItemInvokesProperActions()
        {
            var item = new Item()
            {
                Id = 10
            };
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var navigation         = A.Fake <INavigationService>();
            var logging            = A.Fake <ILoggingService>();
            var device             = A.Fake <IPlatformSpecific>();
            var database           = TestsHelper.CreateFakeDatabase();

            database.Insert(item);

            var viewModel = new ItemViewModel(item,
                                              offlineTaskService,
                                              navigation,
                                              logging,
                                              device,
                                              database);

            viewModel.DeleteCommand.Execute(null);

            A.CallTo(() => offlineTaskService.AddAsync(
                         10,
                         A <OfflineTask.OfflineTaskAction> .That.IsEqualTo(OfflineTask.OfflineTaskAction.Delete),
                         A <List <Tag> > .Ignored,
                         A <List <Tag> > .Ignored)).MustHaveHappened();
            Assert.Null(database.Find <Item>(10));
        }
        public async Task ArticleWithEmptyContentIsReFetchedFromTheServerAndContinuesIfSuccessful()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            // Insert a sample item without content to the database
            var item = new Item()
            {
                Id      = 1,
                Content = string.Empty
            };

            database.Insert(item);

            // If the ViewModel asks for an internet connection, return true
            A.CallTo(() => platform.InternetConnectionIsAvailable).Returns(true);

            // This is our custom template to see if the formatting was fine
            A.CallTo(() => platform.GetArticleTemplateAsync()).Returns("{{title}}");

            // Return an item if asked for
            A.CallTo(() => client.GetItemAsync(A <int> .That.IsEqualTo(1), A <CancellationToken> .Ignored)).Returns(new WallabagItem()
            {
                Id                   = 1,
                Content              = "This is my content.",
                CreationDate         = DateTime.Now,
                DomainName           = "test.de",
                EstimatedReadingTime = 10,
                IsRead               = false,
                IsStarred            = false,
                Language             = "de-DE",
                LastUpdated          = DateTime.Now,
                Mimetype             = "text/html",
                Title                = "This is my title",
                Url                  = "https://test.de"
            });

            var viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database);
            await viewModel.ActivateAsync(item.Id, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            // Everything should be fine and our custom template should be applied
            A.CallTo(() => platform.InternetConnectionIsAvailable).MustHaveHappened();
            A.CallTo(() => client.GetItemAsync(A <int> .That.IsEqualTo(1), A <CancellationToken> .Ignored)).MustHaveHappened();
            A.CallTo(() => platform.GetArticleTemplateAsync()).MustHaveHappened();
            Assert.False(viewModel.ErrorDuringInitialization);
            Assert.False(string.IsNullOrEmpty(viewModel.FormattedHtml));
            Assert.Equal("This is my title", viewModel.FormattedHtml);
        }
Exemple #13
0
        public void CancellingWillNavigateBack()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new AddItemViewModel(offlineTaskService, loggingService, database, navigationService);

            viewModel.CancelCommand.Execute(null);

            A.CallTo(() => navigationService.GoBack()).MustHaveHappened();
        }
        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 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 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));
        }
Exemple #17
0
        public async Task RemovingAnTagAndAddingAnotherExecutesTheProperActions()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var tagToRemove = new Tag()
            {
                Id = 2, Label = "test"
            };
            var tagToAdd = new Tag()
            {
                Id = 4, Label = "test"
            };
            var item = new Item()
            {
                Id   = 1,
                Tags = new System.Collections.ObjectModel.ObservableCollection <Tag>()
                {
                    new Tag()
                    {
                        Id = 1, Label = "test"
                    },
                    tagToRemove,
                    new Tag()
                    {
                        Id = 3, Label = "test"
                    },
                }
            };

            database.Insert(item);

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService);
            await viewModel.ActivateAsync(item.Id, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            Assert.Equal(3, viewModel.Tags.Count);

            viewModel.Tags.Add(tagToAdd);
            viewModel.Tags.Remove(tagToRemove);

            Assert.Equal(3, viewModel.Tags.Count);

            viewModel.FinishCommand.Execute(null);

            A.CallTo(() => offlineTaskService.AddAsync(A <int> .Ignored, OfflineTask.OfflineTaskAction.EditTags, A <List <Tag> > .That.Contains(tagToAdd), A <List <Tag> > .That.Contains(tagToRemove))).MustHaveHappened(Repeated.Exactly.Once);
            //A.CallTo(() => navigationService.GoBack()).MustHaveHappened();
        }
        public async Task GettingAPreviewImageForAVideoReturnsValidValue(string provider, string videoId)
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            var    viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database);
            string result    = await viewModel.GetPreviewImageForVideoAsync(provider, videoId);

            Assert.NotEqual(string.Empty, result);
            Assert.True(result.StartsWith("http"));
        }
Exemple #19
0
        public void ParsingTheTagQueryWontAddEmptyOrSpaceStrings()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                TagQuery = ",  ,"
            };

            viewModel.TagSubmittedCommand.Execute(null);
            Assert.Equal(0, viewModel.Suggestions.Count);
        }
        public async Task NavigationWithAWrongParameterReportsError()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            var viewModel = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database);
            await viewModel.ActivateAsync(9999, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            Assert.True(viewModel.ErrorDuringInitialization);
            A.CallTo(() => platform.GetArticleTemplateAsync()).MustNotHaveHappened();
        }
        public void InvokingTheScanQRCodeCommandNavigatesToTheQRPage()
        {
            var logging    = A.Fake <ILoggingService>();
            var navigation = A.Fake <INavigationService>();
            var device     = A.Fake <IPlatformSpecific>();
            var client     = A.Fake <IWallabagClient>();
            var apiService = A.Fake <IApiClientCreationService>();
            var database   = TestsHelper.CreateFakeDatabase();

            var viewModel = new LoginPageViewModel(logging, navigation, device, client, apiService, database);

            viewModel.ScanQRCodeCommand.Execute();

            A.CallTo(() => navigation.Navigate(Data.Common.Navigation.Pages.QRScanPage)).MustHaveHappened();
        }
        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 TheUrlFieldIsVisibleIfTheSelectedProviderUrlIsNotNull()
        {
            var logging    = A.Fake <ILoggingService>();
            var navigation = A.Fake <INavigationService>();
            var device     = A.Fake <IPlatformSpecific>();
            var client     = A.Fake <IWallabagClient>();
            var apiService = A.Fake <IApiClientCreationService>();
            var database   = TestsHelper.CreateFakeDatabase();
            var viewModel  = new LoginPageViewModel(logging, navigation, device, client, apiService, database)
            {
                SelectedProvider = WallabagProvider.GetOther(device)
            };

            viewModel.RaisePropertyChanged(nameof(viewModel.SelectedProvider));

            Assert.Null(viewModel.SelectedProvider.Url);
            Assert.True(viewModel.UrlFieldIsVisible);
        }
        public async Task NavigationWithParameterSetsProperties()
        {
            var logging    = A.Fake <ILoggingService>();
            var navigation = A.Fake <INavigationService>();
            var device     = A.Fake <IPlatformSpecific>();
            var client     = A.Fake <IWallabagClient>();
            var apiService = A.Fake <IApiClientCreationService>();
            var database   = TestsHelper.CreateFakeDatabase();
            var viewModel  = new LoginPageViewModel(logging, navigation, device, client, apiService, database);

            var param = new ProtocolSetupNavigationParameter("user", "http://test.de");

            await viewModel.ActivateAsync(param, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

            Assert.True(WallabagProvider.GetOther(device).Equals(viewModel.SelectedProvider));
            Assert.Equal("user", viewModel.Username);
            Assert.Equal("http://test.de", viewModel.Url);
        }
Exemple #25
0
        public void AddingAnMicrosoftEdgeUriAddsTheCorrectOne()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new AddItemViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                UriString = "read:http://wallabag.org"
            };

            viewModel.AddCommand.Execute(null);

            A.CallTo(() => navigationService.GoBack()).MustHaveHappened();
            A.CallTo(() => offlineTaskService.AddAsync(A <string> .That.IsEqualTo("http://wallabag.org"), A <IEnumerable <string> > .Ignored)).MustHaveHappened();
            // TODO: Add database check
        }
Exemple #26
0
        public void AddingAnInvalidUriDoesNotExecuteTheOfflineTaskService()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new AddItemViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                UriString = "fake"
            };

            viewModel.AddCommand.Execute(null);

            A.CallTo(() => navigationService.GoBack()).MustNotHaveHappened();
            A.CallTo(() => offlineTaskService.AddAsync(A <string> .Ignored, A <IEnumerable <string> > .Ignored)).MustNotHaveHappened();
            // TODO: Add database check
        }
Exemple #27
0
        public void SubmittingWillClearTheQueryAfterwards()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService)
            {
                TagQuery = "test1"
            };

            viewModel.TagSubmittedCommand.Execute(null);
            Assert.Equal(1, viewModel.Tags.Count);

            Assert.False(viewModel.TagsCountIsZero);
            Assert.True(string.IsNullOrEmpty(viewModel.TagQuery));
        }
        public async Task UsingYoutubeOrVimeoAsHostnameSetsTheHostnameEmpty()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var platform           = A.Fake <IPlatformSpecific>();
            var navigationService  = A.Fake <INavigationService>();
            var client             = A.Fake <IWallabagClient>();
            var database           = TestsHelper.CreateFakeDatabase();

            var fakeItems = new List <Item>
            {
                new Item()
                {
                    Id              = 1,
                    Hostname        = "youtube.com",
                    Content         = "test content",
                    PreviewImageUri = new Uri("https://test.de")
                },
                new Item()
                {
                    Id              = 2,
                    Hostname        = "vimeo.com",
                    Content         = "test content",
                    PreviewImageUri = new Uri("https://test.de")
                }
            };

            A.CallTo(() => platform.GetArticleTemplateAsync()).Returns("{{imageHeader}}");

            foreach (var item in fakeItems)
            {
                database.Insert(item);

                var fakeItemViewModel = new ItemViewModel(item, offlineTaskService, navigationService, loggingService, platform, database);
                var viewModel         = new ItemPageViewModel(offlineTaskService, loggingService, platform, navigationService, client, database)
                {
                    Item = fakeItemViewModel
                };
                await viewModel.ActivateAsync(item.Id, new Dictionary <string, object>(), Data.Common.NavigationMode.New);

                Assert.False(viewModel.ErrorDuringInitialization);
                Assert.Equal(string.Empty, viewModel.FormattedHtml);
            }
        }
Exemple #29
0
        public void SubmittingASuggestionAddsItToTheTagsList()
        {
            var offlineTaskService = A.Fake <IOfflineTaskService>();
            var loggingService     = A.Fake <ILoggingService>();
            var database           = TestsHelper.CreateFakeDatabase();
            var navigationService  = A.Fake <INavigationService>();

            var viewModel = new EditTagsViewModel(offlineTaskService, loggingService, database, navigationService);
            var tagToTest = new Tag()
            {
                Id    = 1337,
                Label = "My suggestion tag"
            };

            viewModel.TagSubmittedCommand.Execute(tagToTest);

            Assert.Equal(1, viewModel.Tags.Count);
            Assert.Equal(tagToTest, viewModel.Tags[0]);
        }
        public void RegisterCommandCanNotBeExecutedIfSelectedProviderIsNull()
        {
            var logging    = A.Fake <ILoggingService>();
            var navigation = A.Fake <INavigationService>();
            var device     = A.Fake <IPlatformSpecific>();
            var client     = A.Fake <IWallabagClient>();
            var apiService = A.Fake <IApiClientCreationService>();
            var database   = TestsHelper.CreateFakeDatabase();

            var uriToTest = new Uri("https://test.de");

            var viewModel = new LoginPageViewModel(logging, navigation, device, client, apiService, database)
            {
                SelectedProvider = null
            };

            Assert.False(viewModel.RegisterCommand.CanExecute(null));
            A.CallTo(() => device.LaunchUri(A <Uri> .That.IsEqualTo(uriToTest.Append("/register")), A <Uri> .Ignored)).MustNotHaveHappened();
        }