You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1301 lines
35 KiB
1301 lines
35 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Collections.Generic; |
|
using System.Collections.ObjectModel; |
|
using System.ComponentModel; |
|
using System.Linq; |
|
using ICSharpCode.PackageManagement; |
|
using ICSharpCode.PackageManagement.Design; |
|
using NuGet; |
|
using NUnit.Framework; |
|
using PackageManagement.Tests.Helpers; |
|
|
|
namespace PackageManagement.Tests |
|
{ |
|
[TestFixture] |
|
public class PackagesViewModelTests |
|
{ |
|
TestablePackagesViewModel viewModel; |
|
FakeTaskFactory taskFactory; |
|
FakeRegisteredPackageRepositories registeredPackageRepositories; |
|
|
|
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories) |
|
{ |
|
viewModel = new TestablePackagesViewModel(registeredPackageRepositories); |
|
this.registeredPackageRepositories = registeredPackageRepositories; |
|
taskFactory = viewModel.FakeTaskFactory; |
|
} |
|
|
|
void CreateViewModel() |
|
{ |
|
CreateRegisteredRepositoriesService(); |
|
CreateViewModel(registeredPackageRepositories); |
|
} |
|
|
|
void CreateRegisteredRepositoriesService() |
|
{ |
|
registeredPackageRepositories = new FakeRegisteredPackageRepositories(); |
|
} |
|
|
|
void CompleteReadPackagesTask() |
|
{ |
|
taskFactory.ExecuteAllFakeTasks(); |
|
} |
|
|
|
void ClearReadPackagesTasks() |
|
{ |
|
taskFactory.ClearAllFakeTasks(); |
|
} |
|
|
|
[Test] |
|
public void IsPaged_OnePackageAndPageSizeIsFive_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddOneFakePackage(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
bool paged = viewModel.IsPaged; |
|
|
|
Assert.IsFalse(paged); |
|
} |
|
|
|
[Test] |
|
public void IsPaged_SixPackagesAndPageSizeIsFive_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
bool paged = viewModel.IsPaged; |
|
|
|
Assert.IsTrue(paged); |
|
} |
|
|
|
[Test] |
|
public void SelectedPageNumber_ByDefault_ReturnsOne() |
|
{ |
|
CreateViewModel(); |
|
|
|
int pageNumber = viewModel.SelectedPageNumber; |
|
|
|
Assert.AreEqual(1, pageNumber); |
|
} |
|
|
|
[Test] |
|
public void HasPreviousPage_SixPackagesSelectedPageNumberIsOneAndPageSizeIsFive_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Assert.IsFalse(viewModel.HasPreviousPage); |
|
} |
|
|
|
[Test] |
|
public void HasPreviousPage_SixPackagesSelectedPageNumberIsTwoAndPageSizeIsFive_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.IsTrue(viewModel.HasPreviousPage); |
|
} |
|
|
|
[Test] |
|
public void HasPreviousPage_SelectedPagesChangesFromFirstPageToSecond_PropertyChangedEventFiredForAllProperties() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
PropertyChangedEventArgs propertyChangedEvent = null; |
|
viewModel.PropertyChanged += (sender, e) => propertyChangedEvent = e; |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
string propertyName = propertyChangedEvent.PropertyName; |
|
|
|
Assert.IsNull(propertyName); |
|
} |
|
|
|
[Test] |
|
public void HasNextPage_SixPackagesSelectedPageNumberIsOneAndPageSizeIsFive_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Assert.IsTrue(viewModel.HasNextPage); |
|
} |
|
|
|
[Test] |
|
public void HasNextPage_SixPackagesSelectedPageNumberIsTwoAndPageSizeIsFive_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.IsFalse(viewModel.HasNextPage); |
|
} |
|
|
|
[Test] |
|
public void HasNextPage_SixPackagesSelectedPageNumberIsTwoAndPageSizeIsTwo_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.IsTrue(viewModel.HasNextPage); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsTwoAndPageSizeIsFive_ReturnsTwoPagesWithSecondOneSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1 }, |
|
new Page() { Number = 2, IsSelected = true } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsOneAndPageSizeIsFive_ReturnsTwoPagesWithFirstOneSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true }, |
|
new Page() { Number = 2 } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsOneAndPageSizeIsTwo_ReturnsThreePagesWithFirstOneSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true }, |
|
new Page() { Number = 2 }, |
|
new Page() { Number = 3 } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsOneAndPageSizeIsTwoAndMaximumSelectablePagesIsTwo_ReturnsTwoPagesWithFirstOneSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.MaximumSelectablePages = 2; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true }, |
|
new Page() { Number = 2 } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsOneAndPageSizeIsFiveGetPagesTwice_ReturnsTwoPagesWithFirstOneSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true }, |
|
new Page() { Number = 2 } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesSelectedPageNumberIsThreeAndPageSizeIsTwoAndMaximumSelectablePagesIsTwo_ReturnsPagesTwoAndThreeWithPageThreeSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 3; |
|
viewModel.MaximumSelectablePages = 2; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 2 }, |
|
new Page() { Number = 3, IsSelected = true } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void Pages_TenPackagesSelectedPageNumberIsFiveAndPageSizeIsTwoAndMaximumSelectablePagesIsThree_ReturnsPagesThreeAndFourAndFive() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddTenFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 5; |
|
viewModel.MaximumSelectablePages = 3; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 3 }, |
|
new Page() { Number = 4 }, |
|
new Page() { Number = 5, IsSelected = true } |
|
}; |
|
|
|
var actualPages = viewModel.Pages; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, actualPages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_RepositoryHasThreePackagesWhenSelectedPageIsOneAndPageSizeIsTwo_TwoPackageViewModelsCreatedForFirstTwoPackages() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddThreeFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new List<FakePackage>(); |
|
expectedPackages.Add(viewModel.FakePackages[0]); |
|
expectedPackages.Add(viewModel.FakePackages[1]); |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_RepositoryHasSixPackagesWhenSelectedPageIsOneAndPageSizeIsThree_ThreePackageViewModelsCreatedForFirstThreePackages() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 3; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new List<FakePackage>(); |
|
expectedPackages.Add(viewModel.FakePackages[0]); |
|
expectedPackages.Add(viewModel.FakePackages[1]); |
|
expectedPackages.Add(viewModel.FakePackages[2]); |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void Pages_PageSizeChanged_PagesRecalcuatedBasedOnNewPageSize() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 10; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
int oldPageCount = viewModel.Pages.Count; |
|
viewModel.PageSize = 5; |
|
int newPageCount = viewModel.Pages.Count; |
|
|
|
Assert.AreEqual(2, newPageCount); |
|
Assert.AreEqual(1, oldPageCount); |
|
} |
|
|
|
[Test] |
|
public void Pages_SelectedPageNumberChanged_PagesRecalculatedBasedOnNewSelectedPage() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 3; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
ClearReadPackagesTasks(); |
|
var oldPages = viewModel.Pages; |
|
viewModel.SelectedPageNumber = 2; |
|
CompleteReadPackagesTask(); |
|
var newPages = viewModel.Pages; |
|
|
|
Page[] expectedPages = new Page[] { |
|
new Page() { Number = 1 }, |
|
new Page() { Number = 2, IsSelected = true } |
|
}; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, newPages); |
|
} |
|
|
|
[Test] |
|
public void ShowNextPageCommand_TwoPagesAndFirstPageSelectedWhenCommandExecuted_PageTwoIsSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 3; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.ShowNextPageCommand.Execute(null); |
|
|
|
int selectedPage = viewModel.SelectedPageNumber; |
|
|
|
Assert.AreEqual(2, selectedPage); |
|
} |
|
|
|
[Test] |
|
public void ShowNextPageCommand_TwoPagesAndFirstPageSelectedWhenCommandExecuted_SecondPageOfPackagesDisplayed() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddThreeFakePackages(); |
|
viewModel.PageSize = 2; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.ShowNextPageCommand.Execute(null); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new List<FakePackage>(); |
|
expectedPackages.Add(viewModel.FakePackages[2]); |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void ShowPreviousPageCommand_TwoPagesAndSecondPageSelectedWhenCommandExecuted_PageOneIsSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 3; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
viewModel.ShowPreviousPageCommand.Execute(null); |
|
|
|
int selectedPage = viewModel.SelectedPageNumber; |
|
|
|
Assert.AreEqual(1, selectedPage); |
|
} |
|
|
|
[Test] |
|
public void ShowPreviousPageCommand_TwoPagesAndSecondPageSelectedWhenCommandExecuted_FirstPageOfPackagesDisplayed() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddThreeFakePackages(); |
|
viewModel.PageSize = 2; |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.ShowPreviousPageCommand.Execute(null); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new List<FakePackage>(); |
|
expectedPackages.Add(viewModel.FakePackages[0]); |
|
expectedPackages.Add(viewModel.FakePackages[1]); |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void ShowPageCommand_PageNumberOneToBeShownWhenCurrentlySelectedPageIsTwo_PageOneIsSelected() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
int pageNumber = 1; |
|
viewModel.ShowPageCommand.Execute(pageNumber); |
|
|
|
int selectedPage = viewModel.SelectedPageNumber; |
|
|
|
Assert.AreEqual(1, selectedPage); |
|
} |
|
|
|
[Test] |
|
public void Pages_ReadPackagesAndIsPagedCalled_PackagesReadFromRepositoryOnlyOnce() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
bool result = viewModel.IsPaged; |
|
int count = viewModel.Pages.Count; |
|
|
|
Assert.AreEqual(1, viewModel.GetAllPackagesCallCount); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_CalledThreeTimesAndThenSelectedPageChanged_ViewModelPropertiesChangedEventFiresOnceWhenSelectedPageChanged() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 3; |
|
viewModel.AddSixFakePackages(); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
int count = 0; |
|
viewModel.PropertyChanged += (sender, e) => count++; |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.AreEqual(1, count); |
|
} |
|
|
|
[Test] |
|
public void IsSearchable_ByDefault_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
|
|
Assert.IsFalse(viewModel.IsSearchable); |
|
} |
|
|
|
[Test] |
|
public void SearchCommand_SearchTextEntered_PackageViewModelsFilteredBySearchCriteria() |
|
{ |
|
CreateViewModel(); |
|
viewModel.IsSearchable = true; |
|
viewModel.AddSixFakePackages(); |
|
|
|
var package = new FakePackage() { |
|
Id = "SearchedForId", |
|
Description = "Test" |
|
}; |
|
viewModel.FakePackages.Add(package); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.SearchTerms = "SearchedForId"; |
|
viewModel.SearchCommand.Execute(null); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new FakePackage[] { |
|
package |
|
}; |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void PackageExtensionsFind_TwoPackagesInCollection_FindsOnePackageId() |
|
{ |
|
List<IPackage> packages = new List<IPackage>(); |
|
var package1 = new FakePackage() { |
|
Id = "Test" |
|
}; |
|
var package2 = new FakePackage() { |
|
Id = "Another" |
|
}; |
|
packages.Add(package1); |
|
packages.Add(package2); |
|
|
|
IQueryable<IPackage> query = packages.AsQueryable(); |
|
|
|
IQueryable<IPackage> filteredResults = query.Find("Test"); |
|
|
|
IPackage foundPackage = filteredResults.First(); |
|
|
|
Assert.AreEqual("Test", foundPackage.Id); |
|
} |
|
|
|
[Test] |
|
public void PackageExtensionsFind_TwoPackagesInCollectionAndQueryableResultsPutInBufferedEnumerable_OnePackageInBufferedEnumerable() |
|
{ |
|
List<IPackage> packages = new List<IPackage>(); |
|
|
|
// Need to add descriptiosn otherwise we get a null reference when enumerating results |
|
// in BufferedEnumerable |
|
var package1 = new FakePackage() { |
|
Id = "Test", Description = "b" |
|
}; |
|
var package2 = new FakePackage() { |
|
Id = "Another", Description = "a" |
|
}; |
|
packages.Add(package1); |
|
packages.Add(package2); |
|
|
|
IQueryable<IPackage> query = packages.AsQueryable(); |
|
|
|
IQueryable<IPackage> filteredResults = query.Find("Test"); |
|
|
|
var collection = new BufferedEnumerable<IPackage>(filteredResults, 10); |
|
IPackage foundPackage = collection.First(); |
|
|
|
Assert.AreEqual("Test", foundPackage.Id); |
|
} |
|
|
|
[Test] |
|
public void Search_SearchTextChangedAndPackagesWerePagedBeforeSearch_PagesUpdatedAfterFilteringBySearchCriteria() |
|
{ |
|
CreateViewModel(); |
|
viewModel.IsSearchable = true; |
|
viewModel.PageSize = 2; |
|
viewModel.MaximumSelectablePages = 5; |
|
viewModel.AddSixFakePackages(); |
|
|
|
var package = new FakePackage() { |
|
Id = "SearchedForId", |
|
Description = "Test" |
|
}; |
|
viewModel.FakePackages.Add(package); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
ObservableCollection<Page> pages = viewModel.Pages; |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.SearchTerms = "SearchedForId"; |
|
viewModel.Search(); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true } |
|
}; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, pages); |
|
} |
|
|
|
[Test] |
|
public void Pages_SixPackagesButPackagesNotRead_HasNoPages() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
Assert.AreEqual(0, viewModel.Pages.Count); |
|
} |
|
|
|
[Test] |
|
public void HasPreviousPage_SixPackagesAndSecondPageSelectedButPackagesNotRead_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.SelectedPageNumber = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
Assert.IsFalse(viewModel.HasPreviousPage); |
|
} |
|
|
|
[Test] |
|
public void HasNextPage_SixPackagesAndFirstPageSelectedButPackagesNotRead_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddSixFakePackages(); |
|
|
|
Assert.IsFalse(viewModel.HasNextPage); |
|
} |
|
|
|
[Test] |
|
public void IsPaged_SixPackagesAndFirstPageSelectedButPackagesNotRead_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.SelectedPageNumber = 1; |
|
viewModel.AddSixFakePackages(); |
|
|
|
Assert.IsFalse(viewModel.IsPaged); |
|
} |
|
|
|
[Test] |
|
public void Search_SelectedPageInitiallyIsPageTwoAndThenUserSearches_SelectedPageNumberIsSetToPageOne() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
var package = new FakePackage() { |
|
Id = "SearchedForId", |
|
Description = "Test" |
|
}; |
|
viewModel.FakePackages.Add(package); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.SelectedPageNumber = 2; |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.SearchTerms = "SearchedForId"; |
|
viewModel.Search(); |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.AreEqual(1, viewModel.SelectedPageNumber); |
|
} |
|
|
|
/// <summary> |
|
/// Ensures that the total number of packages is determined from all packages and not |
|
/// the filtered set. All packages will be retrieved from the repository |
|
/// if this is not done when we only want 30 retrieved in one go. |
|
/// </summary> |
|
[Test] |
|
public void ReadPackages_SixPackagesInRepository_TotalItemsSetBeforePackagesFiltered() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
int expectedTotal = 6; |
|
Assert.AreEqual(expectedTotal, viewModel.TotalItems); |
|
} |
|
|
|
[Test] |
|
public void Search_ThreePagesOfPackagesBeforeSearchReturnsNoPackages_IsPagedIsFalseWhenPropertyChangedEventFired() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.SearchTerms = "SearchedForId"; |
|
|
|
ClearReadPackagesTasks(); |
|
bool paged = true; |
|
viewModel.PropertyChanged += (sender, e) => paged = viewModel.IsPaged; |
|
viewModel.Search(); |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsFalse(paged); |
|
} |
|
|
|
[Test] |
|
public void Search_BeforeSearchFivePagesOfPackagesShownAndSearchReturnsTwoPages_TwoPagesShownAfterSearch() |
|
{ |
|
CreateViewModel(); |
|
viewModel.IsSearchable = true; |
|
viewModel.PageSize = 2; |
|
viewModel.MaximumSelectablePages = 5; |
|
viewModel.AddSixFakePackages(); |
|
|
|
viewModel.FakePackages.Add(new FakePackage("SearchedForId1")); |
|
viewModel.FakePackages.Add(new FakePackage("SearchedForId2")); |
|
viewModel.FakePackages.Add(new FakePackage("SearchedForId3")); |
|
|
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
ObservableCollection<Page> pages = viewModel.Pages; |
|
|
|
ClearReadPackagesTasks(); |
|
viewModel.SearchTerms = "SearchedForId"; |
|
viewModel.Search(); |
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPages = new Page[] { |
|
new Page() { Number = 1, IsSelected = true }, |
|
new Page() { Number = 2 } |
|
}; |
|
|
|
PageCollectionAssert.AreEqual(expectedPages, pages); |
|
} |
|
|
|
[Test] |
|
public void ShowPackageSources_ByDefault_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
|
|
Assert.IsFalse(viewModel.ShowPackageSources); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_OnePackageInRepository_CreatesTask() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
Assert.IsTrue(taskFactory.IsCreateTaskCalled); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_OnePackageInRepository_TaskStartMethodCalled() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
Assert.IsTrue(taskFactory.FirstFakeTaskCreated.IsStartCalled); |
|
} |
|
|
|
[Test] |
|
public void IsReadingPackages_ReadPackagesNotCalled_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
|
|
Assert.IsFalse(viewModel.IsReadingPackages); |
|
} |
|
|
|
[Test] |
|
public void IsReadingPackages_ReadPackagesCalled_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.ReadPackages(); |
|
|
|
Assert.IsTrue(viewModel.IsReadingPackages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_OnePackageInRepositoryWhenBackgroundTaskExecuted_ReadsOnePackage() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
PackagesForSelectedPageResult result = taskFactory.FirstFakeTaskCreated.ExecuteTaskButNotContinueWith(); |
|
|
|
CollectionAssert.AreEqual(viewModel.FakePackages, result.Packages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_OnePackageInRepositoryWhenFirstPartOfBackgroundTaskExecuted_PackageCountReadInBackgroundTask() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
PackagesForSelectedPageResult result = taskFactory.FirstFakeTaskCreated.ExecuteTaskButNotContinueWith(); |
|
|
|
Assert.AreEqual(1, result.TotalPackagesOnPage); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_OnePackageInRepositoryWhenBackgroundTaskExecutedAndResultsReturned_PackagesUpdatedInViewModel() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
CompleteReadPackagesTask(); |
|
|
|
PackageCollectionAssert.AreEqual(viewModel.FakePackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void IsReadingPackages_OnePackageInRepositoryWhenBackgroundTaskExecutedAndResultsReturned_SetToFalseAfterPackagesRead() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsFalse(viewModel.IsReadingPackages); |
|
} |
|
|
|
[Test] |
|
public void IsReadingPackages_OnePackageInRepositoryWhenBackgroundTaskExecutedAndResultsReturned_NotifyPropertyChangedFiredAfterIsReadingPackagesSetToFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
bool readingPackages = true; |
|
viewModel.PropertyChanged += (sender, e) => readingPackages = viewModel.IsReadingPackages; |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsFalse(readingPackages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_SixPackagesInRepositoryAndPageSizeIsTwoWhenFirstPartOfBackgroundTaskExecuted_PackageCountReadInBackgroundTask() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
PackagesForSelectedPageResult result = taskFactory.FirstFakeTaskCreated.ExecuteTaskButNotContinueWith(); |
|
|
|
Assert.AreEqual(6, result.TotalPackages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_SixPackagesInRepositoryAndPageSizeIsTwoWhenFirstPartOfBackgroundTaskExecuted_PageSizeNotChangedDuringBackgroundTaskExecution() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
PackagesForSelectedPageResult result = taskFactory.FirstFakeTaskCreated.ExecuteTaskButNotContinueWith(); |
|
|
|
Assert.IsFalse(viewModel.IsPaged); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_SixPackagesInRepositoryAndPageSizeIsTwoWhenBackgroundTaskExecutedAndResultsReturned_ResultsArePaged() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsTrue(viewModel.IsPaged); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_CalledSecondTimeBeforeFirstReadPackagesTaskCompletes_FirstReadPackagesTaskIsCancelled() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
viewModel.ReadPackages(); |
|
|
|
Assert.IsTrue(taskFactory.FirstFakeTaskCreated.IsCancelCalled); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_FirstReadPackagesTaskCompletesAfterBeingCancelled_PackagesNotUpdated() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddOneFakePackage(); |
|
|
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.IsCancelled = true; |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.ExecuteTaskCompletely(); |
|
|
|
Assert.AreEqual(0, viewModel.PackageViewModels.Count); |
|
} |
|
|
|
[Test] |
|
public void SelectedPage_ChangedTwoPageTwo_IsReadingPackagesReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.IsTrue(viewModel.IsReadingPackages); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_SixPackagesDisplayedWhenReadPackagesCalledAgain_DisplayedPackagesAreRemoved() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.ReadPackages(); |
|
|
|
Assert.AreEqual(0, viewModel.PackageViewModels.Count); |
|
} |
|
|
|
[Test] |
|
public void SelectedPage_ChangedTwoPageTwo_DisplayedPackagesAreRemoved() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.AreEqual(0, viewModel.PackageViewModels.Count); |
|
} |
|
|
|
[Test] |
|
public void HasError_BackgroundTaskHasExceptionWhenItFinishes_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsTrue(viewModel.HasError); |
|
} |
|
|
|
[Test] |
|
public void HasError_ByDefault_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
|
|
Assert.IsFalse(viewModel.HasError); |
|
} |
|
|
|
[Test] |
|
public void IsReadingPackages_BackgroundTaskHasExceptionWhenItFinishes_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.IsFalse(viewModel.IsReadingPackages); |
|
} |
|
|
|
[Test] |
|
public void PropertyChanged_BackgroundTaskHasExceptionWhenItFinishes_PropertyChangedEventFiredWhenTaskCompletes() |
|
{ |
|
CreateViewModel(); |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
taskFactory.FirstFakeTaskCreated.ExecuteTaskButNotContinueWith(); |
|
|
|
string propertyName = "Nothing"; |
|
viewModel.PropertyChanged += (sender, e) => propertyName = e.PropertyName; |
|
taskFactory.FirstFakeTaskCreated.ExecuteContinueWith(); |
|
|
|
Assert.IsNull(propertyName); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_BackgroundTaskHasExceptionWhenItFinishes_PackagesNotUpdated() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.Result = new PackagesForSelectedPageResult(viewModel.FakePackages, 6); |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.AreEqual(0, viewModel.PackageViewModels.Count); |
|
} |
|
|
|
[Test] |
|
public void ErrorMessage_BackgroundTaskHasExceptionWhenItFinishes_ErrorMessageTakenFromException() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
|
|
Exception ex = new Exception("Test"); |
|
AggregateException aggregateEx = new AggregateException(ex); |
|
taskFactory.FirstFakeTaskCreated.Exception = aggregateEx; |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
Assert.AreEqual("Test", viewModel.ErrorMessage); |
|
} |
|
|
|
[Test] |
|
public void ErrorMessage_BackgroundTaskHasAggregateExceptionWithNestedInnerAggregateException_ErrorMessageTakenFromInnerException() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
|
|
Exception innerEx1 = new Exception("Test1"); |
|
Exception innerEx2 = new Exception("Test2"); |
|
AggregateException innerAggregateEx = new AggregateException(innerEx1, innerEx2); |
|
AggregateException aggregateEx = new AggregateException(innerAggregateEx); |
|
taskFactory.FirstFakeTaskCreated.Exception = aggregateEx; |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
string expectedErrorMessage = |
|
"Test1\r\n" + |
|
"Test2"; |
|
|
|
Assert.AreEqual(expectedErrorMessage, viewModel.ErrorMessage); |
|
} |
|
|
|
[Test] |
|
public void ErrorMessage_BackgroundTaskHasAggregateExceptionWithTwoInnerExceptionsWhenItFinishes_ErrorMessageTakenFromAllInnerExceptions() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
|
|
Exception innerEx1 = new Exception("Test1"); |
|
Exception innerEx2 = new Exception("Test2"); |
|
Exception innerEx3 = new Exception("Test3"); |
|
AggregateException aggregateEx = new AggregateException(innerEx1, innerEx2, innerEx3); |
|
taskFactory.FirstFakeTaskCreated.Exception = aggregateEx; |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
string expectedErrorMessage = |
|
"Test1\r\n" + |
|
"Test2\r\n" + |
|
"Test3"; |
|
|
|
Assert.AreEqual(expectedErrorMessage, viewModel.ErrorMessage); |
|
} |
|
|
|
[Test] |
|
public void HasError_ErrorMessageDisplayedAndReadPackagesRetriedAfterFailure_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.ReadPackages(); |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
viewModel.ReadPackages(); |
|
|
|
Assert.IsFalse(viewModel.HasError); |
|
} |
|
|
|
[Test] |
|
public void HasError_ErrorMessageDisplayedAndSelectedPageChangedAfterFailure_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SelectedPageNumber = 2; |
|
taskFactory.FirstFakeTaskCreated.IsFaulted = true; |
|
CompleteReadPackagesTask(); |
|
|
|
viewModel.SelectedPageNumber = 3; |
|
|
|
Assert.IsFalse(viewModel.HasError); |
|
} |
|
|
|
[Test] |
|
public void ReadPackages_PackagesReturnedNotSortedFromRepository_PackagesDisplayedSortedById() |
|
{ |
|
CreateViewModel(); |
|
viewModel.AddFakePackage("Z"); |
|
viewModel.AddFakePackage("C"); |
|
viewModel.AddFakePackage("A"); |
|
viewModel.AddFakePackage("B"); |
|
viewModel.ReadPackages(); |
|
|
|
CompleteReadPackagesTask(); |
|
|
|
var expectedPackages = new FakePackage[] { |
|
viewModel.FakePackages[2], |
|
viewModel.FakePackages[3], |
|
viewModel.FakePackages[1], |
|
viewModel.FakePackages[0] |
|
}; |
|
|
|
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); |
|
} |
|
|
|
[Test] |
|
public void SelectedPageNumber_SixPackagesAndPageSizeIsFiveAndSelectedPageNumberIsChangedToTwo_OneReadPackagesTaskCreated() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.AreEqual(1, taskFactory.FakeTasksCreated.Count); |
|
} |
|
|
|
[Test] |
|
public void SelectedPageNumber_SixPackagesAndSelectedPageNumberIsSetToPageOneButUnchanged_NoReadPackagesTaskCreated() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SelectedPageNumber = 1; |
|
|
|
Assert.AreEqual(0, taskFactory.FakeTasksCreated.Count); |
|
} |
|
|
|
[Test] |
|
public void SelectedPageNumber_SixPackagesAndPageSizeIsFiveAndSelectedPageNumberIsChangedToTwo_PropertyChangedEventFiredAfterSelectedPageNumberChanged() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
int selectedPageNumber = 0; |
|
viewModel.PropertyChanged += (source, e) => selectedPageNumber = viewModel.SelectedPageNumber; |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.AreEqual(2, selectedPageNumber); |
|
} |
|
|
|
[Test] |
|
public void SelectedPageNumber_SixPackagesAndPageSizeIsFiveAndSelectedPageNumberIsChangedToTwo_SelectedPageNumberChangedBeforeReadPackagesTaskStarted() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 5; |
|
viewModel.AddSixFakePackages(); |
|
viewModel.ReadPackages(); |
|
CompleteReadPackagesTask(); |
|
ClearReadPackagesTasks(); |
|
|
|
taskFactory.RunTasksSynchronously = true; |
|
viewModel.SelectedPageNumber = 2; |
|
|
|
Assert.AreEqual(1, viewModel.PackageViewModels.Count); |
|
} |
|
|
|
[Test] |
|
public void Search_RepositoryHasPackageWithIdOfEmptyString_SearchCriteriaUsedIsNull() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.FakePackages.Add(new FakePackage() { |
|
Id = "", |
|
Description = "abc" |
|
}); |
|
taskFactory.RunTasksSynchronously = true; |
|
viewModel.ReadPackages(); |
|
|
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SearchTerms = ""; |
|
viewModel.Search(); |
|
|
|
Assert.IsNull(viewModel.SearchCriteriaPassedToFilterPackagesBySearchCriteria); |
|
} |
|
|
|
[Test] |
|
public void Search_RepositoryHasPackageWithIdOfWhitespaceString_SearchCriteriaUsedIsNull() |
|
{ |
|
CreateViewModel(); |
|
viewModel.PageSize = 2; |
|
viewModel.FakePackages.Add(new FakePackage() { |
|
Id = "", |
|
Description = "abc" |
|
}); |
|
taskFactory.RunTasksSynchronously = true; |
|
viewModel.ReadPackages(); |
|
|
|
ClearReadPackagesTasks(); |
|
|
|
viewModel.SearchTerms = " "; |
|
viewModel.Search(); |
|
|
|
Assert.IsNull(viewModel.SearchCriteriaPassedToFilterPackagesBySearchCriteria); |
|
} |
|
|
|
[Test] |
|
public void IsDisposed_DisposeMethodCalled_ReturnsTrue() |
|
{ |
|
CreateViewModel(); |
|
viewModel.Dispose(); |
|
|
|
Assert.IsTrue(viewModel.IsDisposed); |
|
} |
|
|
|
[Test] |
|
public void IsDisposed_DisposeMethodNotCalled_ReturnsFalse() |
|
{ |
|
CreateViewModel(); |
|
|
|
Assert.IsFalse(viewModel.IsDisposed); |
|
} |
|
} |
|
}
|
|
|