public async Task CommandsAreInitializedCorrectlyTest()
        {
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 2
            };
            ApiConnectorMock            mock      = CreateMockForInitialize(new List <CardTemplate>());
            CardTemplateSearchViewModel viewModel = new CardTemplateSearchViewModel(navigationManagerMock, mock)
            {
                SelectedEntity = template
            };
            await viewModel.InitializeAsync();

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

            Assert.IsNotNull(viewModel.EditCommand.CommandText);
            Assert.IsNotNull(viewModel.EditCommand.ToolTip);
            Assert.AreEqual("/2", viewModel.EditCommand.TargetUriFactory.Invoke(template));
            Assert.IsTrue(viewModel.EditCommand.IsRelative);

            Assert.IsNotNull(viewModel.DeleteCommand.CommandText);
            Assert.IsNotNull(viewModel.DeleteCommand.ToolTip);
        }
Exemple #2
0
        public async Task GetProblemWordsOnInitializeTest()
        {
            Deck deck = new Deck()
            {
                Title = "test", DeckId = 1
            };
            PracticeHistoryEntry entry = new PracticeHistoryEntry()
            {
                DeckId = deck.DeckId
            };
            ApiConnectorMock mock = IntializeApiConnectorMock(new List <Deck>(), new List <PracticeHistoryEntry>()
            {
                entry
            }, deck);
            HomeViewModel viewModel = new HomeViewModel(navigationManagerMock, mock);
            await viewModel.InitializeAsync();

            Assert.AreEqual(1, viewModel.ProblemWords.Count);
            Assert.AreSame(entry, viewModel.ProblemWords[0]);
            Assert.AreEqual(1, viewModel.ProblemWordDecks.Count);
            Assert.AreSame(deck, viewModel.ProblemWordDecks[1]);
            Assert.AreEqual(1, (long)mock.Parameters.Pop());
            Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop());
            Dictionary <string, object> parameters = mock.Parameters.Pop() as Dictionary <string, object>;

            Assert.IsTrue(parameters.ContainsKey(nameof(HomeViewModel.ProblemWords)));
            Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop());
        }
Exemple #3
0
        public void LoginAsGuestUserCommandTest()
        {
            User user = new User()
            {
                Email = "*****@*****.**", Password = "******"
            };
            ApiConnectorMock mock = new ApiConnectorMock();

            mock.Replies.Push(new ApiReply <User>()
            {
                WasSuccessful = true,
                Result        = User.GuestUser,
            });
            LocalStorageServiceMock           localStorageServiceMock = new LocalStorageServiceMock();
            CustomAuthenticationStateProvider authenticationStateProvider
                = new CustomAuthenticationStateProvider(localStorageServiceMock, mock, navigationManagerMock);
            LoginViewModel viewModel = new LoginViewModel(navigationManagerMock, authenticationStateProvider, mock, new EntityChangeValidator <User>())
            {
                User = user
            };

            viewModel.LoginAsGuestUserCommand.ExecuteCommand();

            Assert.AreSame(User.GuestUser, mock.Parameters.Pop());
            Assert.AreEqual("Users/Login", mock.Routes.Pop());
            Assert.AreEqual(HttpMethod.Post, mock.Methods.Pop());
        }
Exemple #4
0
        public async Task InitializeAsyncTest()
        {
            ApiConnectorMock                  mock = new ApiConnectorMock();
            LocalStorageServiceMock           localStorageServiceMock = new LocalStorageServiceMock();
            CustomAuthenticationStateProvider authenticationStateProvider
                = new CustomAuthenticationStateProvider(localStorageServiceMock, mock, navigationManagerMock);

            //Not Authenticated
            LoginViewModel viewModel = new LoginViewModel(navigationManagerMock, authenticationStateProvider, mock, new EntityChangeValidator <User>())
            {
                AuthenticationStateTask = Task.FromResult(new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity())))
            };
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.IsNotNull(viewModel.User);

            //Authenticated
            ClaimsIdentity identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, "test") }, "apiauth_type");

            viewModel.AuthenticationStateTask = Task.FromResult(new AuthenticationState(new ClaimsPrincipal(identity)));
            result = await viewModel.InitializeAsync();

            Assert.IsFalse(result);
        }
 public void TestInitialize()
 {
     notificationProviderMock = new NotificationProviderMock();
     NotificationMessageProvider.Initialize(notificationProviderMock, 1000000);
     apiConnectorMock      = new ApiConnectorMock();
     navigationManagerMock = new NavigationManagerMock();
 }
Exemple #6
0
        public void EntityController_Update_WithNoFieldsAltered_Succeeds()
        {
            var controllerMock = new ApiConnectionEntityControllerMock();
            var connector      = new ApiConnectorMock();
            var controllerList = new ControllerList(connector, "https://start.exactonline.nl/api/v1/");

            var invoice = new SalesInvoice {
                Description = "New Description"
            };
            var line = new SalesInvoiceLine {
                Description = "Invoice Line"
            };

            invoice.SalesInvoiceLines = new List <SalesInvoiceLine> {
                line
            };

            var controller       = (Controller <SalesInvoice>)controllerList.GetController <SalesInvoice>();
            var entityController = new EntityController(invoice, "ID", invoice.InvoiceID.ToString(), controllerMock, controller.GetEntityController);
            var returnValue      = controller.AddEntityToManagedEntitiesCollection(invoice);

            Assert.IsTrue(returnValue);

            entityController.Update(invoice);
            string data = controllerMock.Data;

            Assert.AreEqual("", data);
        }
Exemple #7
0
        public async Task LoadDataOnInitializeTest()
        {
            card1.Fields.Add(new CardField()
            {
                DueDate = DateTime.Today, FieldName = "FieldWithoutValue"
            });
            ApiConnectorMock      mock      = CreateMockForInitialize(true, deck);
            PracticeDeckViewModel viewModel = new PracticeDeckViewModel(navigationManagerMock, mock);
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreSame(deck, viewModel.Entity);
            Assert.AreEqual(3, viewModel.PracticeFields.Count); //Only fields that are due and have a value
            Assert.IsTrue(viewModel.PracticeFields.Contains(field1));
            Assert.IsTrue(viewModel.PracticeFields.Contains(field2));
            Assert.IsTrue(viewModel.PracticeFields.Contains(field3));
            Assert.AreSame(viewModel.PracticeFields[0], viewModel.Current);
            Assert.AreEqual(viewModel.Current.FieldName, viewModel.CurrentFieldName);
            CardField expectedDisplayField = viewModel.Current.Card.Fields
                                             .Single(field => field.Value != null && field != viewModel.Current);

            Assert.AreSame(expectedDisplayField, viewModel.DisplayedCardField);
            Assert.IsFalse(viewModel.IsSummary);
            Assert.IsFalse(viewModel.IsShowingSolution);
        }
Exemple #8
0
        public async Task CommandsAreInitializedCorrectlyTest()
        {
            Card card = new Card()
            {
                CardId = 1, DeckId = 2
            };
            ApiConnectorMock mock = CreateMockForInitialize(true, true, new List <Card>()
            {
                card
            }, new List <Deck>());
            CardSearchViewModel viewModel = new CardSearchViewModel(navigationManagerMock, mock)
            {
                SelectedEntity = card
            };
            await viewModel.InitializeAsync();

            Assert.IsNotNull(viewModel.NewCommand.CommandText);
            Assert.IsNotNull(viewModel.NewCommand.ToolTip);
            Assert.AreEqual("/Decks/2/Cards/New", viewModel.NewCommand.TargetUriFactory.Invoke(null));

            Assert.IsNotNull(viewModel.EditCommand.CommandText);
            Assert.IsNotNull(viewModel.EditCommand.ToolTip);
            Assert.AreEqual("/Decks/2/Cards/1", viewModel.EditCommand.TargetUriFactory.Invoke(card));

            Assert.IsNotNull(viewModel.ShowStatisticsCommand.CommandText);
            Assert.IsNotNull(viewModel.ShowStatisticsCommand.ToolTip);
            Assert.AreEqual("/Decks/2/Cards/1/Statistics", viewModel.ShowStatisticsCommand.TargetUriFactory.Invoke(card));

            Assert.IsNotNull(viewModel.DeleteCommand.CommandText);
            Assert.IsNotNull(viewModel.DeleteCommand.ToolTip);
        }
        public async Task CreateNewCardOnInitializeTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 2
            };
            CardTemplate template1 = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test1"
            };
            CardTemplate template2 = new CardTemplate()
            {
                CardTemplateId = 2, Title = "test2"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template1, template2
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>());
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.IsNotNull(viewModel.Entity);
            //Load default template
            Assert.AreEqual(2, viewModel.CardTemplateId);
            Assert.AreEqual(2, viewModel.Entity.CardTemplateId);
            Assert.AreEqual("test2", viewModel.CardTemplateTitle);
        }
        public async Task InitializeFailsForWrongDeckIdTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 2
            };
            CardTemplate template1 = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(true, true, deck, new Card()
            {
                DeckId = 1
            }, new List <CardTemplate>()
            {
                template1
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>())
            {
                Id = 1, DeckId = 2
            };
            bool result = await viewModel.InitializeAsync();

            Assert.IsFalse(result);
            Assert.AreEqual(NotificationKind.ErrorNotification, notificationProviderMock.NotificationKind);
            Assert.IsFalse(string.IsNullOrEmpty(notificationProviderMock.Message));
        }
        private ApiConnectorMock CreateMockForInitialize(bool loadEntity, bool loadTemplatesSuccessful, Deck deck, Card card, List <CardTemplate> templates)
        {
            ApiConnectorMock mock = new ApiConnectorMock();

            mock.Replies.Push(new ApiReply <Deck>()
            {
                WasSuccessful = true,
                Result        = deck
            });
            if (loadEntity)
            {
                mock.Replies.Push(new ApiReply <Card>()
                {
                    WasSuccessful = true,
                    Result        = card
                });
            }
            mock.Replies.Push(new ApiReply <List <CardTemplate> >()
            {
                ResultMessage = loadTemplatesSuccessful ? null : "test-error",
                WasSuccessful = loadTemplatesSuccessful,
                Result        = templates,
            });
            return(mock);
        }
Exemple #12
0
        public void EntityController_Update_WithOnlyLinkedEntityFieldsAltered_Succeeds()
        {
            var controllerMock = new ApiConnectionEntityControllerMock();
            var connector      = new ApiConnectorMock();
            var controllerList = new ControllerList(connector, "https://start.exactonline.nl/api/v1/");

            var invoice = new SalesInvoice {
                Description = "New Description"
            };
            var line = new SalesInvoiceLine {
                Description = "InvoiceLine"
            };

            invoice.SalesInvoiceLines = new List <SalesInvoiceLine> {
                line
            };

            var controller = (Controller <SalesInvoice>)controllerList.GetController <SalesInvoice>();
            var ec         = new EntityController(invoice, "ID", invoice.InvoiceID.ToString(), controllerMock, controller.GetEntityController);

            Assert.IsTrue(controller.AddEntityToManagedEntitiesCollection(invoice));

            // Change State
            line.Description = "InvoiceLine2";
            ec.Update(invoice);

            string       result   = controllerMock.Data;
            const string expected = "{\"SalesInvoiceLines\":[{\"Description\":\"InvoiceLine2\"}]}";

            Assert.AreEqual(expected, result);
        }
        public async Task DoesValidateFieldValuePropertiesTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 1
            };
            CardFieldDefinition field = new CardFieldDefinition()
            {
                CardTemplateId = 1, FieldId = 1, FieldName = "Field 1", IsRequired = true
            };
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test1"
            };

            template.FieldDefinitions.Add(field);
            EntityChangeValidator <CardField> fieldChangeValidator = new EntityChangeValidator <CardField>();

            fieldChangeValidator.Register(nameof(CardField.Value), new CardFieldValueValidator());
            CardChangeValidator validator = new CardChangeValidator(fieldChangeValidator);
            ApiConnectorMock    mock      = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, validator);
            await viewModel.InitializeAsync();

            viewModel.FieldValueProperties[0].Value = null;
            Assert.IsFalse(string.IsNullOrEmpty(viewModel.FieldValueProperties[0].ErrorText));
            viewModel.FieldValueProperties[0].Value = "test";
            Assert.IsTrue(string.IsNullOrEmpty(viewModel.FieldValueProperties[0].ErrorText));
        }
        public async Task DoesValidateCardTemplateTitlePropertyTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 2
            };
            CardTemplate template1 = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template1
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>());
            await viewModel.InitializeAsync();

            viewModel.CardTemplateTitleProperty.Value = null;
            Assert.IsFalse(string.IsNullOrEmpty(viewModel.CardTemplateTitleProperty.ErrorText));

            mock = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template1
            });
            viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>());
            await viewModel.InitializeAsync();

            viewModel.CardTemplateTitleProperty.Value = "test";
            Assert.IsTrue(string.IsNullOrEmpty(viewModel.CardTemplateTitleProperty.ErrorText));
        }
Exemple #15
0
        public async Task CommandsAreInitializedCorrectlyTest()
        {
            ApiConnectorMock      mock      = CreateMockForInitialize(true, deck);
            PracticeDeckViewModel viewModel = new PracticeDeckViewModel(navigationManagerMock, mock);
            await viewModel.InitializeAsync();

            Assert.IsNotNull(viewModel.CloseCommand.ToolTip);

            Assert.IsNotNull(viewModel.CloseSummaryCommand.CommandText);
            Assert.IsNotNull(viewModel.CloseSummaryCommand.ToolTip);
            Assert.AreEqual("/", viewModel.CloseSummaryCommand.TargetUri);

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

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

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

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

            Assert.IsNotNull(viewModel.NextCommand.CommandText);
            Assert.IsNotNull(viewModel.NextCommand.ToolTip);
        }
        public async Task LoadsAvailableCardTemplatesOnInitializeTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 1
            };
            CardFieldDefinition field = new CardFieldDefinition()
            {
                CardTemplateId = 1, FieldId = 1, FieldName = "Field 1"
            };
            CardTemplate template = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test1"
            };

            template.FieldDefinitions.Add(field);

            ApiConnectorMock mock = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>());
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreEqual(1, viewModel.AvailableCardTemplates.Count);
            Assert.AreEqual("test1", viewModel.AvailableCardTemplates[0]);
            Assert.AreEqual(1, viewModel.CardTemplateId);
            Assert.AreEqual("test1", viewModel.CardTemplateTitle);
            Assert.AreEqual(1, viewModel.Entity.Fields.Count);
            Assert.AreEqual(1, viewModel.FieldValueProperties.Count);
        }
Exemple #17
0
        public void EntityController_Update_WithExistingLinkedEntity_Succeeds()
        {
            var controllerMock = new ApiConnectionEntityControllerMock();
            var connector      = new ApiConnectorMock();
            var controllerList = new ControllerList(connector, "https://start.exactonline.nl/api/v1/");

            var invoice = new SalesInvoice {
                Description = "New Description"
            };
            var line = new SalesInvoiceLine {
                Description = "InvoiceLine"
            };

            invoice.SalesInvoiceLines = new List <SalesInvoiceLine> {
                line
            };

            var controller       = (Controller <SalesInvoice>)controllerList.GetController <SalesInvoice>();
            var entityController = new EntityController(invoice, "ID", invoice.InvoiceID.ToString(), controllerMock, controller.GetEntityController);

            Assert.IsTrue(controller.AddEntityToManagedEntitiesCollection(invoice));

            // Change State
            invoice.Description = "Description2";
            line.Description    = "InvoiceLine2";

            entityController.Update(invoice);
            string data = controllerMock.Data;

            Assert.AreEqual(@"{""Description"":""Description2"",""SalesInvoiceLines"":[{""Description"":""InvoiceLine2""}]}", data);
        }
        public async Task UpdateTagsTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 1
            };
            CardTemplate template1 = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test1"
            };
            Card card = new Card()
            {
                CardId = 1, CardTemplateId = 1, DeckId = 1
            };
            ApiConnectorMock mock = CreateMockForInitialize(true, true, deck, card, new List <CardTemplate>()
            {
                template1
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>())
            {
                Id = 1, DeckId = 1
            };
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreEqual(0, viewModel.Tags.Count);
            viewModel.Tags.Add("tag1");
            Assert.AreEqual("tag1", viewModel.Entity.Tags);
            viewModel.Tags.Add("tag2");
            Assert.AreEqual("tag1,tag2", viewModel.Entity.Tags);
            viewModel.Tags.RemoveAt(0);
            Assert.AreEqual("tag2", viewModel.Entity.Tags);
        }
Exemple #19
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);
        }
        public async Task ValidatesConfirmPasswordTest()
        {
            User user = new User()
            {
                Email = "*****@*****.**", Password = "******"
            };
            ApiConnectorMock                  mock = new ApiConnectorMock();
            LocalStorageServiceMock           localStorageServiceMock = new LocalStorageServiceMock();
            CustomAuthenticationStateProvider authenticationStateProvider
                = new CustomAuthenticationStateProvider(localStorageServiceMock, mock, navigationManagerMock);
            SignupViewModel viewModel = new SignupViewModel(navigationManagerMock, authenticationStateProvider, mock, new EntityChangeValidator <User>())
            {
                User            = user,
                ConfirmPassword = "******"
            };

            await viewModel.SubmitAsync();

            Assert.IsTrue(viewModel.HasConfirmPasswordError);
            Assert.IsFalse(string.IsNullOrEmpty(viewModel.ErrorMessage));

            viewModel.ConfirmPassword = "******";
            mock.Replies.Push(new ApiReply <User>()
            {
                WasSuccessful = true,
                Result        = user
            });
            await viewModel.SubmitAsync();

            Assert.IsFalse(viewModel.HasConfirmPasswordError);
            Assert.IsTrue(string.IsNullOrEmpty(viewModel.ErrorMessage));
        }
Exemple #21
0
        private void TestReportedResult(PracticeDeckViewModel viewModel, PracticeResultKind expectedResult,
                                        ApiConnectorMock mock, long cardId, int fieldId)
        {
            PracticeHistoryEntry entry = mock.Parameters.Pop() as PracticeHistoryEntry;

            Assert.AreEqual(HttpMethod.Post, mock.Methods.Pop());
            Assert.AreEqual(DateTime.Today, entry.PracticeDate);
            Assert.AreEqual(cardId, entry.CardId);
            Assert.AreEqual(fieldId, entry.FieldId);
            Assert.AreEqual(deck.DeckId, entry.DeckId);

            int correct = expectedResult == PracticeResultKind.Easy ? 1 : 0;
            int hard    = expectedResult == PracticeResultKind.Hard ? 1 : 0;
            int wrong   = expectedResult == PracticeResultKind.Wrong ? 1 : 0;

            Assert.AreEqual(correct, entry.CorrectCount);
            Assert.AreEqual(hard, entry.HardCount);
            Assert.AreEqual(wrong, entry.WrongCount);
            Assert.AreEqual(correct, viewModel.PracticeResults[cardId].Correct);
            Assert.AreEqual(hard, viewModel.PracticeResults[cardId].Difficult);
            Assert.AreEqual(wrong, viewModel.PracticeResults[cardId].Wrong);
            Assert.AreEqual(correct, viewModel.PracticeResults[cardId].FieldResults[fieldId].Correct);
            Assert.AreEqual(hard, viewModel.PracticeResults[cardId].FieldResults[fieldId].Difficult);
            Assert.AreEqual(wrong, viewModel.PracticeResults[cardId].FieldResults[fieldId].Wrong);
        }
Exemple #22
0
        public async Task NextCommandTest()
        {
            ApiConnectorMock      mock      = CreateMockForInitialize(true, deck);
            PracticeDeckViewModel viewModel = new PracticeDeckViewModel(navigationManagerMock, mock)
            {
                InputText         = "test123",
                IsShowingSolution = true,
                WasInputCorrect   = true
            };
            await viewModel.InitializeAsync();

            CardField previous = viewModel.Current;

            viewModel.NextCommand.ExecuteCommand();

            Assert.IsTrue(string.IsNullOrEmpty(viewModel.InputText));
            Assert.IsNull(viewModel.WasInputCorrect);
            Assert.IsFalse(viewModel.IsShowingSolution);
            Assert.AreNotSame(previous, viewModel.Current);
            Assert.IsFalse(viewModel.IsSummary);

            viewModel.NextCommand.ExecuteCommand();
            viewModel.NextCommand.ExecuteCommand();
            Assert.IsTrue(viewModel.IsSummary);
        }
Exemple #23
0
        public async Task DoesNotReportResultWhenNotActivePracticeTest()
        {
            Deck deck = new Deck()
            {
                Title = "test", DeckId = 1
            };
            Card card = new Card()
            {
                CardId = 1, DeckId = 1
            };

            deck.Cards.Add(card);
            card.Fields.Add(new CardField()
            {
                FieldId = 1, Value = "test 1", FieldName = "test1", DueDate = DateTime.Today.AddDays(1)
            });
            card.Fields.Add(new CardField()
            {
                FieldId = 2, Value = "test 2", FieldName = "test2", DueDate = DateTime.Today.AddDays(1)
            });
            ApiConnectorMock      mock      = CreateMockForInitialize(true, deck);
            PracticeDeckViewModel viewModel = new PracticeDeckViewModel(navigationManagerMock, mock)
            {
                IsShowingSolution = true
            };
            await viewModel.InitializeAsync();

            mock.Methods.Clear();
            mock.Parameters.Clear();
            viewModel.EasyResultCommand.ExecuteCommand();

            Assert.AreEqual(0, mock.Methods.Count);
            Assert.AreEqual(0, mock.Parameters.Count);
        }
Exemple #24
0
        public void EntityController_Update_WithNewLinkedEntity_Succeeds()
        {
            var controllerMock   = new ApiConnectionEntityControllerMock();
            var apiConnectorMock = new ApiConnectorMock();
            var controllerList   = new ControllerList(apiConnectorMock, "https://start.exactonline.nl/api/v1/");

            var controller = (Controller <SalesInvoice>)controllerList.GetController <SalesInvoice>();
            var invoice    = new SalesInvoice {
                Description = "New Description"
            };
            var entityController = new EntityController(invoice, "ID", invoice.InvoiceID.ToString(), controllerMock, controller.GetEntityController);

            // Change State
            invoice.Description = "Description2";
            var line = new SalesInvoiceLine {
                Description = "InvoiceLine2"
            };

            invoice.SalesInvoiceLines = new List <SalesInvoiceLine> {
                line
            };

            entityController.Update(invoice);

            string data = controllerMock.Data;

            Assert.IsTrue(data.Contains(@"""Description"":""Description2"""));
            Assert.IsTrue(data.Contains(@"""Description"":""InvoiceLine2"""));
        }
        public async Task CommandsAreInitializedCorrectlyTest()
        {
            Deck deck = new Deck()
            {
                DeckId = 1, Title = "test", DefaultCardTemplateId = 2
            };
            CardTemplate template1 = new CardTemplate()
            {
                CardTemplateId = 1, Title = "test"
            };
            ApiConnectorMock mock = CreateMockForInitialize(false, true, deck, null, new List <CardTemplate>()
            {
                template1
            });
            CardEditViewModel viewModel = new CardEditViewModel(navigationManagerMock, mock, new EntityChangeValidator <Card>());
            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.DeleteCommand.CommandText);
            Assert.IsNotNull(viewModel.DeleteCommand.ToolTip);

            Assert.IsNotNull(viewModel.SaveChangesCommand.CommandText);
            Assert.IsNotNull(viewModel.SaveChangesCommand.ToolTip);
        }
        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"));
        }
Exemple #27
0
        public async Task InitializeFailsOnErrorWhenLoadingDeckTest()
        {
            ApiConnectorMock      mock      = CreateMockForInitialize(false, null);
            PracticeDeckViewModel viewModel = new PracticeDeckViewModel(navigationManagerMock, mock);
            bool result = await viewModel.InitializeAsync();

            Assert.IsFalse(result);
            Assert.AreEqual(NotificationKind.ErrorNotification, notificationProviderMock.NotificationKind);
            Assert.AreEqual("test-error", notificationProviderMock.Message);
        }
Exemple #28
0
        public async Task NewCommandEnabledTest()
        {
            ApiConnectorMock    mock      = CreateMockForInitialize(true, true, new List <Card>(), new List <Deck>());
            CardSearchViewModel viewModel = new CardSearchViewModel(navigationManagerMock, mock);
            await viewModel.InitializeAsync();

            Assert.IsFalse(viewModel.NewCommand.IsEnabled);
            viewModel.SelectedEntity = new Card();
            Assert.IsTrue(viewModel.NewCommand.IsEnabled);
        }
 public void TestInitialize()
 {
     notificationProviderMock = new NotificationProviderMock();
     NotificationMessageProvider.Initialize(notificationProviderMock, 1000000);
     mock        = new ApiConnectorMock();
     saveCommand = new EntitySaveCommand <Card>(mock)
     {
         Entity = card
     };
 }
Exemple #30
0
 public void TestInitialize()
 {
     notificationProviderMock = new NotificationProviderMock();
     NotificationMessageProvider.Initialize(notificationProviderMock, 1000000);
     apiConnectorMock      = new ApiConnectorMock();
     navigationManagerMock = new NavigationManagerMock();
     viewModel             = new TestViewModel(navigationManagerMock, apiConnectorMock)
     {
         Id = 12
     };
 }