public void GetMovies_IsExecuting_SetsIsLoading() { var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetMovies( It.IsAny <string>(), It.IsAny <int>())) .Returns(() => Observable .Return(Enumerable.Empty <Movie>()) .Delay(TimeSpan.FromMilliseconds(500), _testScheduler) .DelaySubscription(TimeSpan.FromMilliseconds(500), _testScheduler)); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SearchTerm = "Any query"; _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(200).Ticks); Assert.IsFalse(target.IsLoading); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(900).Ticks); Assert.IsTrue(target.IsLoading); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(1000).Ticks); Assert.IsFalse(target.IsLoading); }
public void SetSelectedMovie_ValueIsNotNull_NavigatesToMovieDetails() { var selectedMovie = new MovieCellViewModel(new Movie() { Id = 1, Title = "Movie 1" }); var movieServiceMock = new Mock <IMovieService>(); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SelectedMovie = selectedMovie; _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(500).Ticks); var currentViewModel = target.HostScreen.Router.GetCurrentViewModel() as MovieDetailsViewModel; Assert.IsNotNull(currentViewModel); Assert.AreEqual(selectedMovie, currentViewModel.Movie); }
public void SearchTerm_HasLessThanThreeCharacters_DoesNotGetMovies() { string expectedSearch = "12"; var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetMovies( It.IsAny <string>(), It.IsAny <int>())) .Returns(() => Observable .Return(Enumerable.Empty <Movie>())); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SearchTerm = expectedSearch; _testScheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks); movieServiceMock .Verify(x => x.GetMovies( It.IsAny <string>(), It.IsAny <int>()), Times.Never); }
public UpcomingMoviesPage() { InitializeComponent(); viewModel = new UpcomingMoviesViewModel(new MovieService()); BindingContext = viewModel; listView.ItemTapped += ListView_ItemTapped; listView.ItemAppearing += ListView_ItemAppearing; }
public UpcomingMoviesPage() { InitializeComponent(); BindingContext = new UpcomingMoviesViewModel(new PageService()); upcomingMovies.ItemSelected += (sender, e) => { ((ListView)sender).SelectedItem = null; }; }
public void GetUrlPathSegment_VmIsCreated_ReturnsCorrectText() { var movieServiceMock = new Mock <IMovieService>(); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); Assert.AreEqual("Upcoming Movies", target.UrlPathSegment); }
public void MovieTappedCommand_Is_Not_Null() { //Arrange var navigationService = new Mock <INavigationService>(); var upcomingMoviesService = new Mock <IUpcomingMoviesService>(); //Act var vm = new UpcomingMoviesViewModel(upcomingMoviesService.Object, navigationService.Object); //Assert Assert.NotNull(vm.MovieTappedCommand); }
public async Task UpcomingMoviesList_Not_Null_After_InitializeAsync() { //Arrange var navigationService = new Mock <INavigationService>(); var upcomingMoviesService = new Mock <IUpcomingMoviesService>(); var vm = new UpcomingMoviesViewModel(upcomingMoviesService.Object, navigationService.Object); //Act await vm.InitializeAsync(null); //Assert Assert.NotNull(vm.UpcomingMovies); }
public async Task GetGenresAsyncShouldFillGenresList() { //Arrange var movieService = new MockMovieService(); var genreService = new MockGenreService(); var upcomingMoviesViewModel = new UpcomingMoviesViewModel(movieService, genreService); upcomingMoviesViewModel.Genres.Clear(); //Act await upcomingMoviesViewModel.GetGenresAsync(); //Assert Assert.IsNotEmpty(upcomingMoviesViewModel.Genres); }
public void GetMovies_HasMovies_SetsMovies() { string expectedSearch = "query"; int expectedPage = 2; var movies = new List <Movie>() { new Movie() { Id = 1, Title = "Movie 1" }, new Movie() { Id = 2, Title = "Movie 2" } }; var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetMovies( It.IsAny <string>(), It.IsAny <int>())) .Returns(() => Observable.Return(movies)); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SearchTerm = expectedSearch; _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(500).Ticks); Observable.Return(expectedPage).InvokeCommand(target.GetMovies); _testScheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks); movieServiceMock .Verify(x => x.GetMovies( It.Is <string>(search => search == expectedSearch), It.Is <int>(page => page == expectedPage)), Times.Once); Assert.AreEqual(movies.Count, target.Movies.Count); }
public void GetUpcomingMovies_OperationIsInvokedTwice_DoesNotAddDuplicatedMovies() { int expectedPage = 2; var movies = new List <Movie>() { new Movie() { Id = 1, Title = "Movie 1" }, new Movie() { Id = 2, Title = "Movie 2" } }; var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetUpcomingMovies( It.IsAny <int>())) .Returns(() => Observable.Return(movies)); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(500).Ticks); Observable.Return(expectedPage).InvokeCommand(target.GetUpcomingMovies); Observable.Return(expectedPage).InvokeCommand(target.GetUpcomingMovies); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(500).Ticks); movieServiceMock .Verify(x => x.GetUpcomingMovies( It.Is <int>(page => page == expectedPage)), Times.Exactly(2)); Assert.AreEqual(movies.Count, target.Movies.Count); }
public void SearchTerm_IsEmpty_GetUpcomingMovies() { var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetMovies( It.IsAny <string>(), It.IsAny <int>())) .Returns(() => Observable .Return(Enumerable.Empty <Movie>())); movieServiceMock .Setup(x => x.GetUpcomingMovies( It.IsAny <int>())) .Returns(() => Observable .Return(Enumerable.Empty <Movie>())); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SearchTerm = "any"; _testScheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks); target.SearchTerm = null; _testScheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks); movieServiceMock .Verify(x => x.GetMovies( It.Is <string>(search => search == "any"), It.Is <int>(page => page == 1)), Times.Once); movieServiceMock .Verify(x => x.GetUpcomingMovies( It.Is <int>(page => page == 1)), Times.Once); }
public void SetSelectedMovie_ValueIsNull_DoesNotNavigate() { var movieServiceMock = new Mock <IMovieService>(); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); target.SelectedMovie = null; _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(500).Ticks); var currentViewModel = target.HostScreen.Router.GetCurrentViewModel(); Assert.IsNull(currentViewModel); }
public async Task UpcomingMoviesList_Has_Items_When_Returned_From_Service() { //Arrange var mockList = new List <UpcomingMovie>(); mockList.Add(new UpcomingMovie { Id = 1, Overview = "Test", PosterPath = "testpath", ReleaseDate = DateTime.Today, Title = "Test Movie 1" }); mockList.Add(new UpcomingMovie { Id = 2, Overview = "Test", PosterPath = "testpath", ReleaseDate = DateTime.Today, Title = "Test Movie 2" }); var navigationService = new Mock <INavigationService>(); var upcomingMoviesService = new Mock <IUpcomingMoviesService>(); upcomingMoviesService.Setup (m => m.GetUpcomingMovies(It.IsAny <int>())) .Returns(Task.FromResult((IEnumerable <UpcomingMovie>)mockList)); var vm = new UpcomingMoviesViewModel(upcomingMoviesService.Object, navigationService.Object); //Act await vm.InitializeAsync(null); //Assert Assert.AreEqual(2, vm.UpcomingMovies.Count); }
public void GetUpcomingMovies_IsExecuting_SetsIsLoading() { int expectedPage = 2; var movieServiceMock = new Mock <IMovieService>(); movieServiceMock .Setup(x => x.GetUpcomingMovies( It.IsAny <int>())) .Returns(() => Observable .Return(Enumerable.Empty <Movie>()) .Delay(TimeSpan.FromMilliseconds(500), _testScheduler) .DelaySubscription(TimeSpan.FromMilliseconds(500), _testScheduler)); var target = new UpcomingMoviesViewModel( movieServiceMock.Object, _testScheduler, _testScheduler, _screenMock.Object); target.Activator.Activate(); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(200).Ticks); Assert.IsFalse(target.IsLoading); Observable.Return(expectedPage).InvokeCommand(target.GetUpcomingMovies); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(400).Ticks); Assert.IsTrue(target.IsLoading); _testScheduler.AdvanceBy(TimeSpan.FromMilliseconds(800).Ticks); Assert.IsFalse(target.IsLoading); }