public void SaveState() { // Arrange var viewModel = GetViewModel(); var expectedFeedItem = new FeedItem(); var wasCleanupCalled = false; this.ShareManager.CleanupDelegate = () => { wasCleanupCalled = true; }; // Act viewModel.SaveState(null); // Assert Assert.IsTrue(wasCleanupCalled, "Share Manager Initialize"); }
public void LoadState() { // Arrange var viewModel = GetViewModel(); var expectedFeedItem = new FeedItem(); var wasInitializeCalled = false; this.ShareManager.InitializeDelegate = () => { wasInitializeCalled = true; }; // Act viewModel.LoadState(expectedFeedItem, null); // Assert Assert.AreSame(expectedFeedItem, viewModel.FeedItem, "FeedItem"); Assert.IsTrue(wasInitializeCalled, "Share Manager Initialize"); }
public void FeedItem() { // Arrange var viewModel = GetViewModel(); var expectedFeedItem = new FeedItem(); // Act viewModel.PropertyChanged += this.OnPropertyChanged; viewModel.FeedItem = expectedFeedItem; viewModel.PropertyChanged -= this.OnPropertyChanged; // Assert Assert.IsTrue(this.PropertiesChanged.Contains("FeedItem"), "Property Changed"); Assert.AreSame(expectedFeedItem, viewModel.FeedItem, "Feed Item"); }
public async Task ShareRequested() { // Arrange var viewModel = GetViewModel(); var dataPackage = new DataPackage(); var dataPackageView = dataPackage.GetView(); var feedItem = new FeedItem { Title = Guid.NewGuid().ToString(), Author = Guid.NewGuid().ToString(), Link = new Uri("http://www.bing.com") }; viewModel.LoadState(feedItem, null); // Act this.ShareManager.OnShareRequested(dataPackage); // Assert Assert.IsFalse(string.IsNullOrEmpty(await dataPackageView.GetTextAsync()), "Text Exists"); Assert.AreEqual(feedItem.Link.ToString(), (await dataPackageView.GetUriAsync()).ToString(), "Uri"); Assert.IsTrue(!string.IsNullOrEmpty(await dataPackageView.GetHtmlFormatAsync()), "HTML Exists"); }
public async Task Pin_PinNotSucceeded() { // Arrange var viewModel = GetViewModel(); var feedItem = new FeedItem { Title = Guid.NewGuid().ToString(), Author = Guid.NewGuid().ToString(), Link = new Uri("http://www.bing.com") }; viewModel.LoadState(feedItem, null); Placement actualPlacement = Placement.Default; TileInfo actualTileInfo = null; SecondaryPinner.PinDelegate = (tileInfo) => { actualPlacement = tileInfo.RequestPlacement; actualTileInfo = tileInfo; return false; }; var wasSaveCalled = false; Storage.SaveAsyncDelegate = (key, value) => { wasSaveCalled = true; }; // Act await viewModel.Pin(null); // Assert Assert.AreEqual(Placement.Above, actualPlacement, "Placement"); Assert.AreEqual(string.Format(Constants.SecondaryIdFormat, viewModel.FeedItem.Id), actualTileInfo.TileId, "Tile Info Tile Id"); Assert.AreEqual(viewModel.FeedItem.Title, actualTileInfo.DisplayName, "Tile Info Display Name"); Assert.AreEqual(viewModel.FeedItem.Title, actualTileInfo.ShortName, "Tile Info Short Name"); Assert.AreEqual(viewModel.FeedItem.Id.ToString(), actualTileInfo.Arguments, "Tile Info Arguments"); Assert.IsFalse(wasSaveCalled, "Was Save Called"); }
public override void LoadState(FeedItem navigationParameter, System.Collections.Generic.Dictionary<string, object> pageState) { base.LoadState(navigationParameter, pageState); UpdateAppBarButtons(); }
public async Task Pin_PinSucceeded() { // Arrange var viewModel = GetViewModel(); var feedItem = new FeedItem { Title = Guid.NewGuid().ToString(), Author = Guid.NewGuid().ToString(), Link = new Uri("http://www.bing.com") }; viewModel.LoadState(feedItem, null); Placement actualPlacement = Placement.Default; TileInfo actualTileInfo = null; SecondaryPinner.PinDelegate = (tileInfo) => { actualPlacement = tileInfo.RequestPlacement; actualTileInfo = tileInfo; return true; }; string actualKey = null; List<FeedItem> actualPinnedFeedItems = null; Storage.SaveAsyncDelegate = (key, value) => { actualKey = key; actualPinnedFeedItems = (List<FeedItem>)value; }; // Act await viewModel.Pin(null); // Assert Assert.AreEqual(Placement.Above, actualPlacement, "Placement"); Assert.AreEqual(string.Format(Constants.SecondaryIdFormat, viewModel.FeedItem.Id), actualTileInfo.TileId, "Tile Info Tile Id"); Assert.AreEqual(viewModel.FeedItem.Title, actualTileInfo.DisplayName, "Tile Info Display Name"); Assert.AreEqual(viewModel.FeedItem.Id.ToString(), actualTileInfo.Arguments, "Tile Info Arguments"); Assert.AreEqual(Constants.PinnedFeedItemsKey, actualKey, "Save Key"); Assert.IsNotNull(actualPinnedFeedItems, "Pinned Feed Items"); }
protected override async Task<Models.FeedData> GetFeedAsync(string feedUriString) { var client = new SyndicationClient(); Uri feedUri; if (!Uri.TryCreate(feedUriString, UriKind.RelativeOrAbsolute, out feedUri)) { return null; } try { var feed = await client.RetrieveFeedAsync(feedUri); var feedData = new FeedData(); if (feed.Title != null && feed.Title.Text != null) { feedData.Title = feed.Title.Text; } if (feed.Subtitle != null && feed.Subtitle.Text != null) { feedData.Description = feed.Subtitle.Text; } if (feed.Items != null && feed.Items.Count > 0) { feedData.PublishedDate = feed.Items[0].PublishedDate.DateTime; foreach (var item in feed.Items) { var feedItem = new FeedItem(); if (item.Title != null && item.Title.Text != null) { feedItem.Title = item.Title.Text; } if (item.PublishedDate != null) { feedItem.PublishedDate = item.PublishedDate.DateTime; } if (item.Authors != null && item.Authors.Count > 0) { feedItem.PublishedDate = item.PublishedDate.DateTime; } if (feed.SourceFormat == SyndicationFormat.Atom10) { if (item.Content != null && item.Content.Text != null) { feedItem.Content = item.Content.Text; } if (item.Id != null) { feedItem.Link = new Uri(item.Id); } } else if (feed.SourceFormat == SyndicationFormat.Rss20) { if (item.Summary != null && item.Summary.Text != null) { feedItem.Content = item.Summary.Text; } if (item.Links != null && item.Links.Count > 0) { feedItem.Link = item.Links[0].Uri; } } feedItem.Id = Regex.Replace(feedItem.Link.ToString(), @"[^0-9a-zA-Z\.]+", string.Empty).GetHashCode(); feedData.Items.Add(feedItem); } } return feedData; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return null; } }
private async Task<Models.FeedData> GetFeedAsync(string feedUriString) { var client = new SyndicationClient(); Uri feedUri; if (!Uri.TryCreate(feedUriString, UriKind.RelativeOrAbsolute, out feedUri)) { return null; } try { var feed = await client.RetrieveFeedAsync(feedUri); var feedData = new FeedData(); if (feed.Title != null && feed.Title.Text != null) { feedData.Title = feed.Title.Text; } if (feed.Subtitle != null && feed.Subtitle.Text != null) { feedData.Description = feed.Subtitle.Text; } if (feed.Items != null && feed.Items.Count > 0) { feedData.PublishedDate = feed.Items[0].PublishedDate.DateTime; foreach (var item in feed.Items) { var feedItem = new FeedItem(); if (item.Title != null && item.Title.Text != null) { feedItem.Title = item.Title.Text; } if (item.PublishedDate != null) { feedItem.PublishedDate = item.PublishedDate.DateTime; } if (item.Authors != null && item.Authors.Count > 0) { feedItem.PublishedDate = item.PublishedDate.DateTime; } if (feed.SourceFormat == SyndicationFormat.Atom10) { if (item.Content != null && item.Content.Text != null) { feedItem.Content = item.Content.Text; } if (item.Id != null) { feedItem.Link = new Uri(item.Id); } } else if (feed.SourceFormat == SyndicationFormat.Rss20) { if (item.Summary != null && item.Summary.Text != null) { feedItem.Content = item.Summary.Text; } if (item.Links != null && item.Links.Count > 0) { feedItem.Link = item.Links[0].Uri; } } feedItem.Id = Regex.Replace(feedItem.Link.ToString(), @"[^0-9a-zA-Z\.]+", string.Empty).GetHashCode(); feedData.Items.Add(feedItem); } } return feedData; } catch (Exception ex) { //System.Diagnostics.Debug.WriteLine(ex.Message); //return null; SyndicationErrorStatus status = SyndicationError.GetStatus(ex.HResult); if (status == SyndicationErrorStatus.InvalidXml) { System.Diagnostics.Debug.WriteLine("An invalid XML exception was thrown. Please make sure to use a URI that points to a RSS or Atom feed."); } if (status == SyndicationErrorStatus.Unknown) { Windows.Web.WebErrorStatus webError = Windows.Web.WebError.GetStatus(ex.HResult); if (webError == Windows.Web.WebErrorStatus.Unknown) { // Neither a syndication nor a web error. Rethrow. throw; } } return null; } }
public void ViewFeed() { // Arrange var viewModel = this.GetViewModel(); var expectedFeedItem = new FeedItem(); Type actualViewModelType = null; FeedItem actualFeedItem = null; this.Navigator.NavigateToViewModelDelegate = (viewModelType, parameter) => { actualViewModelType = viewModelType; actualFeedItem = parameter as FeedItem; }; // Act viewModel.ViewFeed(expectedFeedItem); // Assert Assert.AreSame(expectedFeedItem, actualFeedItem, "FeedItem"); Assert.AreEqual(typeof(FeedItemViewModel), actualViewModelType, "ViewModel Type"); }
protected override Task<Models.FeedData> GetFeedAsync(string feedUriString) { var task = new TaskCompletionSource<Models.FeedData>(); var webClient = new WebClient(); webClient.DownloadStringCompleted += (sender, args) => { if (args.Error == null) { var stringReader = new StringReader(args.Result); var feedData = new FeedData(); using (var xmlReader = XmlReader.Create(stringReader)) { var feed = SyndicationFeed.Load(xmlReader); if (feed.Title != null && feed.Title.Text != null) { feedData.Title = feed.Title.Text; } if (feed.Description != null && feed.Description.Text != null) { feedData.Description = feed.Description.Text; } if (feed.Items != null && feed.Items.Any()) { feedData.PublishedDate = feed.Items.First().PublishDate.DateTime; foreach (var item in feed.Items) { var feedItem = new FeedItem(); if (item.Title != null && item.Title.Text != null) { feedItem.Title = item.Title.Text; } if (item.PublishDate != null) { feedItem.PublishedDate = item.PublishDate.DateTime; } if (item.Authors != null && item.Authors.Count > 0) { feedItem.PublishedDate = item.PublishDate.DateTime; } if (item.Content != null && ((TextSyndicationContent)item.Content).Text != null) { feedItem.Content = ((TextSyndicationContent)item.Content).Text; } else if (item.Summary != null && item.Summary.Text != null) { feedItem.Content = item.Summary.Text; } if (item.Links != null && item.Links.Count > 0) { feedItem.Link = item.Links[0].Uri; } feedItem.Id = Regex.Replace(feedItem.Link.ToString(), @"[^0-9a-zA-Z\.]+", string.Empty).GetHashCode(); feedData.Items.Add(feedItem); } } } task.TrySetResult(feedData); } else { task.TrySetException(args.Error); } }; webClient.DownloadStringAsync(new Uri(feedUriString)); return task.Task; }
public void ViewFeed(FeedItem feedItem) { this.navigator.NavigateToViewModel<FeedItemViewModel>(feedItem); }