///<inheritdoc/> public override async Task <bool> InitializeAsync() { bool result = await base.InitializeAsync(); if (!result) { return(false); } Dictionary <string, object> parameters = new Dictionary <string, object>() { { nameof(Card.DeckId), Entity.DeckId } }; ApiReply <List <PracticeHistoryEntry> > reply = await ApiConnector.GetAsync <PracticeHistoryEntry>(parameters); if (!reply.WasSuccessful) { NotificationMessageProvider.ShowErrorMessage(reply.ResultMessage); return(false); } PracticeHistoryEntries.AddRange(reply.Result); SelectableDisplayUnits.Add(EntityNameHelper.GetName <Deck>()); SelectableDisplayUnits.AddRange(Entity.Cards.Select(card => card.GetDisplayName())); foreach (Card card in Entity.Cards) { cardIdLookup.Add(card.GetDisplayName(), card.CardId); } SelectedDisplayUnit = SelectableDisplayUnits.First(); return(true); }
/// <summary> /// Constructor /// </summary> /// <param name="navigationManager">NavigationManager (Injected)</param> /// <param name="apiConnector">ApiConnector (Injected)</param> public DeckSearchViewModel(NavigationManager navigationManager, IApiConnector apiConnector) : base(navigationManager, apiConnector) { PracticeDeckCommand = new NavigationCommand(navigationManager) { CommandText = Messages.Practice, IsRelative = true, IsEnabledFunction = (parameter) => (parameter as Deck).CardCount > 0, ToolTip = Messages.PracticeCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()), TargetUriFactory = (param) => $"/{(param as Deck).DeckId}/Practice" }; AddCardCommand = new NavigationCommand(navigationManager) { CommandText = Messages.NewCard, IsRelative = true, ToolTip = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Card>()), TargetUriFactory = (param) => $"/{(param as Deck).DeckId}/Cards/New" }; ShowStatisticsCommand = new NavigationCommand(navigationManager) { CommandText = Messages.PracticeStatistics, IsRelative = true, ToolTip = Messages.ShowStatisticsCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()), TargetUriFactory = (param) => $"/{(param as Deck).DeckId}/Statistics" }; }
public async Task LoadsPracticeHistoryEntriesOnIntializeTest() { Card card = new Card() { CardId = 1 }; card.Fields.Add(new CardField() { FieldId = 1, FieldName = "Field 1" }); card.Fields.Add(new CardField() { FieldId = 2, FieldName = "Field 2" }); PracticeHistoryEntry entry1 = new PracticeHistoryEntry() { Field = new CardField() { FieldName = "Field 1" } }; PracticeHistoryEntry entry2 = new PracticeHistoryEntry() { Field = new CardField() { FieldName = "Field 2" } }; ApiConnectorMock mock = new ApiConnectorMock(); mock.Replies.Push(new ApiReply <List <PracticeHistoryEntry> >() { WasSuccessful = true, Result = new List <PracticeHistoryEntry>() { entry1, entry2 } }); mock.Replies.Push(new ApiReply <Card>() { WasSuccessful = true, Result = card }); CardStatisticsViewModel viewModel = new CardStatisticsViewModel(navigationManagerMock, mock); bool result = await viewModel.InitializeAsync(); Assert.IsTrue(result); Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop()); Dictionary <string, object> parameters = mock.Parameters.Pop() as Dictionary <string, object>; Assert.AreEqual((long)1, parameters[nameof(Card.CardId)]); Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry1)); Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry2)); Assert.AreEqual(EntityNameHelper.GetName <Card>(), viewModel.SelectableDisplayUnits[0]); Assert.AreEqual(EntityNameHelper.GetName <Card>(), viewModel.SelectedDisplayUnit); Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains("Field 1")); Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains("Field 2")); }
///<inheritdoc/> public override string Validate(Card entity, long newValue) { if (newValue == default) { return(Errors.PropertyRequired.FormatWith(EntityNameHelper.GetName <CardTemplate>())); } return(null); }
/// <summary> /// Constructor /// </summary> /// <param name="navigationManager">NavigationManager (Injected)</param> /// <param name="apiConnector">ApiConnetcor (Injected)</param> public HomeViewModel(NavigationManager navigationManager, IApiConnector apiConnector) : base(navigationManager) { this.apiConnector = apiConnector; PracticeDeckCommand = new NavigationCommand(navigationManager) { IsEnabledFunction = (parameter) => (parameter as Deck).CardCount > 0, TargetUriFactory = (param) => $"/Decks/{(param as Deck).DeckId}/Practice", CommandText = Messages.Practice, ToolTip = Messages.PracticeCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()) }; AddCardCommand = new NavigationCommand(navigationManager) { TargetUriFactory = (param) => $"/Decks/{(long)param}/Cards/New", CommandText = Messages.NewCard, ToolTip = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Card>()) }; ShowStatisticsCommand = new NavigationCommand(navigationManager) { TargetUriFactory = (param) => $"/Decks/{(long)param}/Statistics", CommandText = Messages.PracticeStatistics, ToolTip = Messages.ShowStatisticsCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()) }; NewDeckCommand = new NavigationCommand(navigationManager) { CommandText = Messages.NewDeck, TargetUri = "/Decks/New", ToolTip = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()) }; NewTemplateCommand = new NavigationCommand(navigationManager) { CommandText = Messages.NewTemplate, TargetUri = "/Templates/New", ToolTip = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <CardTemplate>()) }; SearchDecksCommand = new NavigationCommand(navigationManager) { CommandText = Messages.SearchDecks, TargetUri = "/Decks", ToolTip = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <Deck>()) }; SearchTemplatesCommand = new NavigationCommand(navigationManager) { CommandText = Messages.SearchTemplates, TargetUri = "/Templates", ToolTip = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <CardTemplate>()) }; SearchCardsCommand = new NavigationCommand(navigationManager) { CommandText = Messages.SearchCards, TargetUri = "/Cards", ToolTip = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <Card>()) }; }
public async Task LoadsPracticeHistoryEntriesOnIntializeTest() { ApiConnectorMock mock = CreateApiConnectorMock(deck, true, new List <PracticeHistoryEntry>() { entry1, entry2 }); DeckStatisticsViewModel viewModel = new DeckStatisticsViewModel(navigationManagerMock, mock); bool result = await viewModel.InitializeAsync(); Assert.IsTrue(result); Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop()); Dictionary <string, object> parameters = mock.Parameters.Pop() as Dictionary <string, object>; Assert.AreEqual((long)1, parameters[nameof(Deck.DeckId)]); Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry1)); Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry2)); Assert.AreEqual(EntityNameHelper.GetName <Deck>(), viewModel.SelectableDisplayUnits[0]); Assert.AreEqual(EntityNameHelper.GetName <Deck>(), viewModel.SelectedDisplayUnit); Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains(card1.GetDisplayName())); Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains(card2.GetDisplayName())); }
public void SelectsDisplayedEntriesCorrectlyTest() { PracticeHistoryEntry entry1 = new PracticeHistoryEntry() { Field = new CardField() { FieldName = "Field 1" } }; PracticeHistoryEntry entry2 = new PracticeHistoryEntry() { Field = new CardField() { FieldName = "Field 2" } }; CardStatisticsViewModel viewModel = new CardStatisticsViewModel(navigationManagerMock, new ApiConnectorMock()); viewModel.PracticeHistoryEntries.AddRange(new List <PracticeHistoryEntry>() { entry1, entry2 }); viewModel.SelectableDisplayUnits.Add(EntityNameHelper.GetName <Card>()); viewModel.SelectableDisplayUnits.Add("Field 1"); viewModel.SelectableDisplayUnits.Add("Field 2"); viewModel.SelectedDisplayUnit = EntityNameHelper.GetName <Card>(); Assert.AreEqual(2, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1)); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2)); viewModel.SelectedDisplayUnit = "Field 1"; Assert.AreEqual(1, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1)); viewModel.SelectedDisplayUnit = "Field 2"; Assert.AreEqual(1, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2)); }
public async Task SelectsDisplayedEntriesCorrectlyTest() { ApiConnectorMock mock = CreateApiConnectorMock(deck, true, new List <PracticeHistoryEntry>() { entry1, entry2 }); DeckStatisticsViewModel viewModel = new DeckStatisticsViewModel(navigationManagerMock, mock); await viewModel.InitializeAsync(); viewModel.SelectedDisplayUnit = EntityNameHelper.GetName <Deck>(); Assert.AreEqual(2, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1)); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2)); viewModel.SelectedDisplayUnit = card1.GetDisplayName(); Assert.AreEqual(1, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1)); viewModel.SelectedDisplayUnit = card2.GetDisplayName(); Assert.AreEqual(1, viewModel.DisplayedEntries.Count()); Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2)); }
/// <summary> /// Loads the Entity /// </summary> protected virtual async Task <bool> LoadEntityAsync() { ApiReply <TEntity> reply = await ApiConnector.GetAsync <TEntity>(Id); if (reply.WasSuccessful) { Entity = reply.Result; return(true); } else { if (reply.StatusCode == System.Net.HttpStatusCode.NotFound) { NotificationMessageProvider.ShowErrorMessage( Errors.EntityDoesNotExist.FormatWith(EntityNameHelper.GetName <TEntity>(), Id)); } else { NotificationMessageProvider.ShowErrorMessage(reply.ResultMessage); } return(false); } }
public void GetNameOfUserTest() { string name = EntityNameHelper.GetName <User>(); Assert.AreEqual("User", name); }
public void GetNameOfCardTemplateTest() { string name = EntityNameHelper.GetName <CardTemplate>(); Assert.AreEqual("Template", name); }
public void GetNameOfDeckTest() { string name = EntityNameHelper.GetName <Deck>(); Assert.AreEqual("Deck", name); }
///<inheritdoc/> ///<inheritdoc/> public string GetDisplayName() => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <CardTemplate>(), Title);
///<inheritdoc/> public string GetDisplayName() => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <Card>(), CardId);
///<inheritdoc/> public string GetDisplayName() => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <User>(), Email);