public async Task MobileServiceCollectionHasMoreItemsShouldBeFalseAfterRetrievingDataWhenNoPaging() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query); CancellationTokenSource tokenSource = new CancellationTokenSource(); List <string> properties = new List <string>(); List <string> expectedProperties = new List <string>() { "HasMoreItems", "Count", "Item[]", "Count", "Item[]", "TotalCount" }; List <NotifyCollectionChangedAction> actions = new List <NotifyCollectionChangedAction>(); List <NotifyCollectionChangedAction> expectedActions = new List <NotifyCollectionChangedAction>() { NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Add }; ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName); collection.CollectionChanged += (s, e) => actions.Add(e.Action); int result = await collection.LoadMoreItemsAsync(tokenSource.Token); Assert.IsFalse(collection.HasMoreItems); Assert.IsTrue(properties.SequenceEqual(expectedProperties)); Assert.IsTrue(actions.SequenceEqual(expectedActions)); }
public void MobileServiceCollectionCanClearAndNotifies() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); query.EnumerableAsyncThrowsException = true; MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query); List <string> properties = new List <string>(); List <string> expectedProperties = new List <string>() { "Count", "Item[]" }; List <NotifyCollectionChangedAction> actions = new List <NotifyCollectionChangedAction>(); List <NotifyCollectionChangedAction> expectedActions = new List <NotifyCollectionChangedAction>() { NotifyCollectionChangedAction.Reset }; Book book = new Book(); collection.Add(book); ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName); collection.CollectionChanged += (s, e) => actions.Add(e.Action); collection.Clear(); Assert.AreEqual(0, collection.Count); Assert.IsTrue(properties.SequenceEqual(expectedProperties)); Assert.IsTrue(actions.SequenceEqual(expectedActions)); }
public void MobileServiceCollectionCanCopyToAndNotNotifies() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); query.EnumerableAsyncThrowsException = true; MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query); List <string> properties = new List <string>(); List <string> expectedProperties = new List <string>() { }; List <NotifyCollectionChangedAction> actions = new List <NotifyCollectionChangedAction>(); List <NotifyCollectionChangedAction> expectedActions = new List <NotifyCollectionChangedAction>() { }; Book book = new Book(); collection.Add(book); Book[] books = new Book[1]; ((INotifyPropertyChanged)collection).PropertyChanged += (s, e) => properties.Add(e.PropertyName); collection.CollectionChanged += (s, e) => actions.Add(e.Action); collection.CopyTo(books, 0); Assert.AreEqual(1, collection.Count); Assert.AreEqual(1, books.Count()); Assert.AreEqual(collection[0], books[0]); Assert.IsTrue(properties.SequenceEqual(expectedProperties)); Assert.IsTrue(actions.SequenceEqual(expectedActions)); }
public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingCompleteEventAfterReadingData() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query); CancellationTokenSource tokenSource = new CancellationTokenSource(); Exception ex = null; int loadedEventArgsManyItemsLoaded = 0; collection.LoadingComplete += (s, e) => loadedEventArgsManyItemsLoaded = e.TotalItemsLoaded; try { int result = await collection.LoadMoreItemsAsync(tokenSource.Token); } catch (Exception e) { ex = e; } Assert.AreEqual(loadedEventArgsManyItemsLoaded, 2); Assert.IsNull(ex); }
public async Task MobileServiceCollectionLoadMoreItemsAsyncFiresLoadingItemsEventBeforeReadingData() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); MobileServiceCollection <Book, Book> collection = new MobileServiceCollection <Book, Book>(query); CancellationTokenSource tokenSource = new CancellationTokenSource(); Exception ex = null; bool firedLoading = false; collection.LoadingItems += (s, e) => firedLoading = true; try { int result = await collection.LoadMoreItemsAsync(tokenSource.Token); } catch (Exception e) { ex = e; } Assert.IsTrue(firedLoading); Assert.IsNull(ex); }
public void MobileServiceCollectionHasMoreItemsInitiallyTrue() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); query.EnumerableAsyncThrowsException = true; MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query); Assert.IsTrue(collection.HasMoreItems); }
public async Task MobileServiceCollectionMultipleLoadItemsAsyncShouldThrow() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); MobileServiceCollection <Book> collection = new MobileServiceCollection <Book>(query); CancellationTokenSource tokenSource = new CancellationTokenSource(); Exception ex = null; try { await Task.WhenAll(collection.LoadMoreItemsAsync(tokenSource.Token), collection.LoadMoreItemsAsync(tokenSource.Token)); } catch (InvalidOperationException e) { ex = e; } Assert.IsNotNull(ex); }
public async Task MobileServiceCollectionLoadMoreItemsAsyncExceptionsNotHandledByDefault() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); query.EnumerableAsyncThrowsException = true; MobileServiceIncrementalLoadingCollection <Book, Book> collection = new MobileServiceIncrementalLoadingCollection <Book, Book>(query); Exception ex = null; try { await((ISupportIncrementalLoading)collection).LoadMoreItemsAsync(10); } catch (Exception e) { ex = e; } Assert.IsNotNull(ex); }
public async Task MobileServiceCollectionLoadMoreItemsAsyncExceptionsCanBeHandled() { // Get the Books table MobileServiceTableQueryMock <Book> query = new MobileServiceTableQueryMock <Book>(); query.EnumerableAsyncThrowsException = true; ExceptionHandlingdMobileServiceIncrementalLoadingCollection collection = new ExceptionHandlingdMobileServiceIncrementalLoadingCollection(query); CancellationTokenSource tokenSource = new CancellationTokenSource(); Exception ex = null; try { await((ISupportIncrementalLoading)collection).LoadMoreItemsAsync(10); } catch (Exception e) { ex = e; } Assert.IsNull(ex); }