コード例 #1
0
        public async Task CommandEnabledIsUpdatedOnSavingEntityTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            await viewModel.InitializeAsync();

            Assert.IsFalse(viewModel.PracticeDeckCommand.IsEnabled);
            Assert.IsFalse(viewModel.ShowStatisticsCommand.IsEnabled);
            Assert.IsFalse(viewModel.DeleteCommand.IsEnabled);
            Assert.IsFalse(viewModel.EditCardCommand.IsEnabled);
            Assert.IsFalse(viewModel.DeleteCardCommand.IsEnabled);
            Assert.IsFalse(viewModel.NewCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.SaveChangesCommand.IsEnabled);
            Assert.IsTrue(viewModel.CloseCommand.IsEnabled);

            Deck deck = new Deck();

            deck.Cards.Add(new Card());
            viewModel.SaveChangesCommand.OnSavedAction.Invoke(deck);
            Assert.IsTrue(viewModel.PracticeDeckCommand.IsEnabled);
            Assert.IsTrue(viewModel.ShowStatisticsCommand.IsEnabled);
            Assert.IsTrue(viewModel.DeleteCommand.IsEnabled);
            Assert.IsTrue(viewModel.EditCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.DeleteCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.NewCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.SaveChangesCommand.IsEnabled);
            Assert.IsTrue(viewModel.CloseCommand.IsEnabled);
        }
コード例 #2
0
        public async Task CommandsAreInitializedCorrectlyTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 1
            };

            deck.Cards.Add(new Card()
            {
                CardId = 1
            });
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(true, true, deck, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            await viewModel.InitializeAsync();

            Assert.IsNotNull(viewModel.ShowStatisticsCommand.CommandText);
            Assert.IsNotNull(viewModel.ShowStatisticsCommand.ToolTip);
            Assert.AreEqual("/Statistics", viewModel.ShowStatisticsCommand.TargetUri);
            Assert.IsTrue(viewModel.ShowStatisticsCommand.IsRelative);

            Assert.IsNotNull(viewModel.EditCardCommand.CommandText);
            Assert.IsNotNull(viewModel.EditCardCommand.ToolTip);
            Assert.AreEqual("/Cards/1", viewModel.EditCardCommand.TargetUriFactory.Invoke(deck.Cards[0]));
            Assert.IsTrue(viewModel.EditCardCommand.IsRelative);

            Assert.IsNotNull(viewModel.NewCardCommand.CommandText);
            Assert.IsNotNull(viewModel.NewCardCommand.ToolTip);
            Assert.AreEqual("/Cards/New", viewModel.NewCardCommand.TargetUri);
            Assert.IsTrue(viewModel.NewCardCommand.IsRelative);

            Assert.IsNotNull(viewModel.PracticeDeckCommand.CommandText);
            Assert.IsNotNull(viewModel.PracticeDeckCommand.ToolTip);
            Assert.AreEqual("/Practice", viewModel.PracticeDeckCommand.TargetUri);
            Assert.IsTrue(viewModel.PracticeDeckCommand.IsRelative);

            Assert.IsNotNull(viewModel.DeleteCommand.CommandText);
            Assert.IsNotNull(viewModel.DeleteCommand.ToolTip);

            Assert.IsNotNull(viewModel.DeleteCardCommand.CommandText);
            Assert.IsNotNull(viewModel.DeleteCardCommand.ToolTip);

            Assert.IsNotNull(viewModel.SaveChangesCommand.CommandText);
            Assert.IsNotNull(viewModel.SaveChangesCommand.ToolTip);
        }
コード例 #3
0
        public async Task LoadsAvailableCardTemplatesOnInitializeTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreEqual(1, viewModel.AvailableCardTemplates.Count);
            Assert.AreEqual("test", viewModel.AvailableCardTemplates[0]);
        }
コード例 #4
0
        public async Task LoadsAvailableCardTemplatesOnInitializeErrorTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, false, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            bool result = await viewModel.InitializeAsync();

            Assert.IsFalse(result);
            Assert.AreEqual(0, viewModel.AvailableCardTemplates.Count);
            Assert.AreEqual(NotificationKind.ErrorNotification, notificationProviderMock.NotificationKind);
            Assert.AreEqual("test-error", notificationProviderMock.Message);
        }
コード例 #5
0
        public async Task CreateNewDeckOnInitializeTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.IsNotNull(viewModel.Entity);
            //Load default template
            Assert.AreEqual(1, viewModel.CardTemplateId);
            Assert.AreEqual(1, viewModel.Entity.DefaultCardTemplateId);
            Assert.AreEqual("test", viewModel.CardTemplateTitle);
        }
コード例 #6
0
        public async Task DoesValidateTitlePropertyTest()
        {
            EntityChangeValidator <Deck> validator = new EntityChangeValidator <Deck>();

            validator.Register(nameof(Deck.Title), new DeckTitleValidator());
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, validator);
            await viewModel.InitializeAsync();

            viewModel.TitleProperty.Value = null;
            Assert.IsFalse(string.IsNullOrEmpty(viewModel.TitleProperty.ErrorText));
            viewModel.TitleProperty.Value = "test";
            Assert.IsTrue(string.IsNullOrEmpty(viewModel.TitleProperty.ErrorText));
        }
コード例 #7
0
        public async Task CommandsEnabledTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };

            //New Entity
            ApiConnectorMock mock = CreateMockForInitialize(false, true, null, new List <CardTemplate>()
            {
                template
            });
            DeckEditViewModel viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>());
            await viewModel.InitializeAsync();

            Assert.IsFalse(viewModel.PracticeDeckCommand.IsEnabled);
            Assert.IsFalse(viewModel.ShowStatisticsCommand.IsEnabled);
            Assert.IsFalse(viewModel.DeleteCommand.IsEnabled);
            Assert.IsFalse(viewModel.EditCardCommand.IsEnabled);
            Assert.IsFalse(viewModel.DeleteCardCommand.IsEnabled);
            Assert.IsFalse(viewModel.NewCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.SaveChangesCommand.IsEnabled);
            Assert.IsTrue(viewModel.CloseCommand.IsEnabled);

            //Existing entity
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 1
            };

            mock = CreateMockForInitialize(true, true, deck, new List <CardTemplate>()
            {
                template
            });
            viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>())
            {
                Id = 1
            };
            await viewModel.InitializeAsync();

            Assert.IsFalse(viewModel.PracticeDeckCommand.IsEnabled);
            Assert.IsTrue(viewModel.ShowStatisticsCommand.IsEnabled);
            Assert.IsTrue(viewModel.DeleteCommand.IsEnabled);
            Assert.IsTrue(viewModel.EditCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.DeleteCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.NewCardCommand.IsEnabled);
            Assert.IsTrue(viewModel.SaveChangesCommand.IsEnabled);
            Assert.IsTrue(viewModel.CloseCommand.IsEnabled);

            //Existing entity with cards
            deck.Cards.Add(new Card());
            mock = CreateMockForInitialize(true, true, deck, new List <CardTemplate>()
            {
                template
            });
            viewModel = new DeckEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Deck>())
            {
                Id = 1
            };
            await viewModel.InitializeAsync();

            Assert.IsTrue(viewModel.PracticeDeckCommand.IsEnabled);
        }