Exemplo n.º 1
0
        public void RootIdTest()
        {
            //Arrange
            int questId = 42;

            Quest parent = new FakeQuest()
            {
                Id = questId
            };

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(mo => mo.Parent).
            Repeat.Once().
            Return(parent);



            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();
            ITreeCommandsFactory  repoCommands  = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            QuestListViewModel viewModel = new QuestListViewModel(model, stateCommands, repoCommands);

            //Act
            int id = viewModel.RootId;

            //Assert
            Assert.AreEqual(questId, id);
            model.VerifyAllExpectations();
        }
Exemplo n.º 2
0
        public void NullOrWhiteSpaceDescriptionTest(string description)
        {
            //Arrange
            Quest quest = new FakeQuest()
            {
                Description = description
            };

            int nullOrWhitespace     = 0;
            int nullOtWhitespaceClar = 1;

            DescriptionQuestValidator <int> validator = new DescriptionQuestValidator <int>(nullOrWhitespace,
                                                                                            nullOtWhitespaceClar);

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);

            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(nullOrWhitespace, error.Error);
            Assert.AreEqual(nullOtWhitespaceClar, error.Clarification);
        }
        public void OnlyStartTimeDefaultDeadlineBeforeNowTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);
            Quest quest = new FakeQuest()
            {
                StartTime = null,
                Deadline  = DateTime.Now - new TimeSpan(1, 1, 1)
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);
            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(deadlineLessThanNow, error.Error);
            Assert.AreEqual(deadlineLessThanNowClar, error.Clarification);
        }
        public void OrderQuestsDescendingTest()
        {
            //Arrange
            DateTime current = DateTime.Now;

            Quest q1 = new FakeQuest()
            {
                Deadline = current + new TimeSpan(1, 0, 0)
            };
            Quest q2 = new FakeQuest()
            {
                Deadline = current + new TimeSpan(3, 10, 0)
            };

            List <Quest> quests = new List <Quest> {
                q2, q1
            };

            TimeLeftOrderStrategy strategy = new TimeLeftOrderStrategy()
            {
                Descending = true
            };

            //Act
            IList <Quest> orderedList = strategy.Order(quests).ToList();

            //Assert
            Assert.IsNotNull(orderedList);
            Assert.AreEqual(2, orderedList.Count);
            Assert.AreEqual(q2, orderedList[0]);
            Assert.AreEqual(q1, orderedList[1]);
        }
        public void DeadlineMoreThanStartTimeTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);

            DateTime current = DateTime.Now;

            Quest quest = new FakeQuest()
            {
                StartTime = current,
                Deadline  = current + new TimeSpan(1, 1, 1)
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessful);
            Assert.IsEmpty(response.Errors);
        }
        public void OnlyDeadlineDefaultTest()
        {
            //Arrange
            int startTimeMoreThanDeadline     = 0;
            int startTimeMoreThanDeadlineClar = 1;
            int deadlineLessThanNow           = 2;
            int deadlineLessThanNowClar       = 3;

            StartTimeDeadlineQuestValidator <int> validator = new StartTimeDeadlineQuestValidator <int>(
                startTimeMoreThanDeadline,
                startTimeMoreThanDeadlineClar,
                deadlineLessThanNow,
                deadlineLessThanNowClar);
            Quest quest = new FakeQuest()
            {
                StartTime = DateTime.Now,
                Deadline  = null
            };

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessful);
            Assert.IsEmpty(response.Errors);
        }
Exemplo n.º 7
0
        public void UseStartTimeChangingTest()
        {
            //Arrange
            DateTime?expectedStartTime = DateTime.Now;

            Quest model = new FakeQuest
            {
                StartTime = expectedStartTime
            };

            QuestViewModel viewModel = new QuestViewModel
            {
                Model = model
            };

            //Act
            DateTime?startBeforeAnyChanges = viewModel.StartTime;

            viewModel.UseStartTime = false;
            DateTime?startAfterUseFalse      = viewModel.StartTime;
            DateTime?modelStartAfterUseFalse = viewModel.Model.StartTime;

            viewModel.UseStartTime = true;
            DateTime?startAfterUseTrue      = viewModel.StartTime;
            DateTime?modelStartAfterUseTrue = viewModel.Model.StartTime;

            //Assert
            Assert.AreEqual(expectedStartTime, startBeforeAnyChanges);

            Assert.AreEqual(expectedStartTime, startAfterUseFalse);
            Assert.AreEqual(null, modelStartAfterUseFalse);

            Assert.AreEqual(expectedStartTime, startAfterUseTrue);
            Assert.AreEqual(expectedStartTime, modelStartAfterUseTrue);
        }
Exemplo n.º 8
0
        public void ModelNotNullSettersTest()
        {
            //Arrange
            string   title       = "title";
            string   description = "description";
            bool     isImportant = true;
            DateTime startTime   = DateTime.Now;
            DateTime deadline    = DateTime.Now;

            Quest model = new FakeQuest()
            {
            };

            QuestViewModel viewModel = new QuestViewModel
            {
                Model       = model,
                Title       = title,
                Description = description,
                IsImportant = isImportant,
                StartTime   = startTime,
                Deadline    = deadline
            };

            //Act

            Quest innerModel = viewModel.Model;

            //Assert
            Assert.AreEqual(title, innerModel.Title);
            Assert.AreEqual(description, innerModel.Description);
            Assert.AreEqual(isImportant, innerModel.IsImportant);
            Assert.AreEqual(startTime, innerModel.StartTime);
            Assert.AreEqual(deadline, innerModel.Deadline);
        }
Exemplo n.º 9
0
        public void ActionTestWithStartTimeDeadlineTest(bool useStartTime, bool useDeadLine)
        {
            //Arrange
            Quest quest  = new FakeQuest();
            Quest parent = new FakeQuest();

            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            Repeat.Once().
            Return(quest);

            ICommand addCommand = MockRepository.GenerateStrictMock <ICommand>();

            addCommand.Expect(ac => ac.Execute()).
            Return(true).
            Repeat.Once();
            addCommand.Expect(ac => ac.Commit()).
            Return(true).
            Repeat.Once();

            IQuestTree questRepository = MockRepository.GenerateStrictMock <IQuestTree>();

            questRepository.Expect(qt => qt.Get(Arg <Predicate <Quest> > .Is.NotNull)).
            Repeat.Once().
            Return(parent);

            ITreeCommandsFactory factory = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            factory.Expect(f => f.AddQuest(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(quest)))
            .Return(addCommand)
            .Repeat.Once();

            IQuestValidator <ClarifiedResponse <int> > questValidator =
                MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >();

            IQuestViewModelFactory questViewModelFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>();

            questViewModelFactory.Expect(qc => qc.CreateQuestViewModel()).
            Repeat.Once().
            Return(questViewModel);

            QuestCreateViewModel viewModel = new QuestCreateViewModel(
                questViewModelFactory,
                questValidator,
                questRepository,
                factory);

            //Act
            viewModel.Initialize();
            viewModel.Action();

            //Assert
            questViewModel.VerifyAllExpectations();
            addCommand.VerifyAllExpectations();
            questRepository.VerifyAllExpectations();
            factory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            questViewModelFactory.VerifyAllExpectations();
        }
Exemplo n.º 10
0
        public void ValidateTest()
        {
            //Act
            Quest        quest    = new FakeQuest();
            StubResponse response = new StubResponse();

            IQuestValidator <StubResponse> firstValidator = MockRepository.GenerateStrictMock <IQuestValidator <StubResponse> >();

            firstValidator.
            Expect(v => v.Validate(Arg <Quest> .Is.Equal(quest))).
            Repeat.Once().
            Return(response);

            IQuestValidator <StubResponse> secondValidator = MockRepository.GenerateStrictMock <IQuestValidator <StubResponse> >();

            secondValidator.
            Expect(v => v.Validate(Arg <Quest> .Is.Equal(quest))).
            Repeat.Once().
            Return(response);

            CompositeQuestValidator <StubResponse> validator = new CompositeQuestValidator <StubResponse>(new [] { firstValidator, secondValidator });

            //Arrange
            StubResponse returnedResponse = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(returnedResponse);

            firstValidator.VerifyAllExpectations();
            secondValidator.VerifyAllExpectations();
        }
Exemplo n.º 11
0
        public void UseStartTimeDeadlineNotNullModelSetterTest()
        {
            //Arrange
            DateTime expectedStartTime = DateTime.Now;
            DateTime expectedDeadline  = DateTime.Now + new TimeSpan(1);

            Quest model = new FakeQuest()
            {
                StartTime = expectedStartTime,
                Deadline  = expectedDeadline
            };

            QuestViewModel viewModel = new QuestViewModel
            {
                Model = model
            };

            //Act
            bool useStartTime = viewModel.UseStartTime;
            bool useDeadline  = viewModel.UseDeadline;

            //Assert
            Assert.IsTrue(useStartTime);
            Assert.IsTrue(useDeadline);
        }
Exemplo n.º 12
0
        public void RestartQuestValidPositionTest()
        {
            //Arrange
            int   position  = 0;
            Quest toRestart = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toRestart
            };

            ICommand startCommand = MockRepository.GenerateStrictMock <ICommand>();

            startCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            startCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            ICommand cancelCommand = MockRepository.GenerateStrictMock <ICommand>();

            cancelCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            cancelCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(rep => rep.Leaves).
            Repeat.Once().
            Return(leaves);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            stateCommands.Expect(sc => sc.CancelQuest(Arg <Quest> .Is.Equal(toRestart))).
            Repeat.Once().
            Return(cancelCommand);
            stateCommands.Expect(sc => sc.StartQuest(Arg <Quest> .Is.Equal(toRestart))).
            Repeat.Once().
            Return(startCommand);

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            ResultsQuestListViewModel viewModel = new ResultsQuestListViewModel(model, stateCommands, repoCommands);

            //Act
            Task startTask = viewModel.RestartQuest(position);

            //Assert
            Assert.IsNotNull(startTask);
            startTask.Wait();

            cancelCommand.VerifyAllExpectations();
            startCommand.VerifyAllExpectations();
            model.VerifyAllExpectations();
            stateCommands.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
        }
Exemplo n.º 13
0
        public void UndoWithParentsTest()
        {
            //Arrange
            Quest root    = new FakeQuest();
            Quest parent0 = new FakeQuest();
            Quest parent1 = new FakeQuest();
            Quest parent2 = new FakeQuest();

            root.Parent    = null;
            parent0.Parent = root;
            parent1.Parent = parent0;
            parent2.Parent = parent1;

            IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>();

            tree.Expect(tr => tr.Root).Return(root).Repeat.Times(4);

            IQuestCommand innerCommand = MockRepository.GenerateStrictMock <IQuestCommand>();

            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent2))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent1))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent0))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(root))).Repeat.Never();

            UpToRootQuestCommand command = new UpToRootQuestCommand(parent2, tree, innerCommand);


            //Act
            bool result = command.Undo();

            //Assert
            Assert.IsTrue(result);

            innerCommand.VerifyAllExpectations();
        }
        public void ExecuteWithParentsOneReturnsFalseTest()
        {
            //Arrange
            Quest root    = new FakeQuest();
            Quest parent0 = new FakeQuest();
            Quest parent1 = new FakeQuest();
            Quest parent2 = new FakeQuest();

            root.Parent    = null;
            parent0.Parent = root;
            parent1.Parent = parent0;
            parent2.Parent = parent1;

            IQuestCommand innerCommand = MockRepository.GenerateStrictMock <IQuestCommand>();

            innerCommand.Expect(ic => ic.Execute(Arg <Quest> .Is.Equal(parent2))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Execute(Arg <Quest> .Is.Equal(parent1))).Repeat.Once().Return(false);
            innerCommand.Expect(ic => ic.Execute(Arg <Quest> .Is.Equal(parent0))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Execute(Arg <Quest> .Is.Equal(root))).Repeat.Once().Return(true);

            UpHierarchyQuestCommandMock command = new UpHierarchyQuestCommandMock(parent2, innerCommand);


            //Act
            bool result = command.Execute();

            //Assert
            Assert.IsTrue(result);

            innerCommand.VerifyAllExpectations();
        }
Exemplo n.º 15
0
        public void TitleTooLongTest()
        {
            //Arrange

            string title = new string('h', 26);

            Quest quest = new FakeQuest()
            {
                Title = title
            };

            int nullOrWhitespace     = 0;
            int nullOtWhitespaceClar = 1;
            int tooLong     = 2;
            int tooLongClar = 3;

            TitleQuestValidator <int> validator = new TitleQuestValidator <int>(nullOrWhitespace, nullOtWhitespaceClar, tooLong, tooLongClar);

            //Act
            ClarifiedResponse <int> response = validator.Validate(quest);

            //Assert
            Assert.IsNotNull(response);
            Assert.IsFalse(response.IsSuccessful);
            Assert.AreEqual(1, response.Errors.Count);

            ClarifiedError <int> error = response.Errors[0];

            Assert.AreEqual(tooLong, error.Error);
            Assert.AreEqual(tooLongClar, error.Clarification);
        }
Exemplo n.º 16
0
        public void InitializeRetrieveQuestWithoutStartDeadlineFromTreeByIdTest()
        {
            int questId = 42;

            Quest model = new FakeQuest()
            {
                StartTime = null,
                Deadline  = null
            };

            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            SetPropertyWithArgument(model).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.UseStartTime).
            SetPropertyWithArgument(false).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.UseDeadline).
            SetPropertyWithArgument(false).
            Repeat.Once();

            IQuestTree questTree = MockRepository.GenerateStrictMock <IQuestTree>();

            questTree.Expect(qt => qt.Get(Arg <Predicate <Quest> > .Is.NotNull)).
            Repeat.Once().
            Return(model);

            IQuestViewModelFactory questFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>();

            questFactory.Expect(qf => qf.CreateQuestViewModel()).
            Repeat.Once().
            Return(questViewModel);

            IQuestValidator <ClarifiedResponse <int> > questValidator =
                MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >();
            ITreeCommandsFactory treeCommands =
                MockRepository.GenerateStrictMock <ITreeCommandsFactory>();


            QuestEditViewModel vm = new QuestEditViewModel(questFactory, questValidator, questTree, treeCommands)
            {
                QuestId = questId
            };

            //Act
            vm.Initialize();

            //Assert
            questViewModel.VerifyAllExpectations();
            questTree.VerifyAllExpectations();
            questFactory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            treeCommands.VerifyAllExpectations();
        }
        public void UndoOnQuestWithChildrenTest()
        {
            //Arrange
            Quest child = new FakeQuest();
            Quest quest = new FakeQuest()
            {
                Children = new List <Quest>()
                {
                    child, null
                }
            };

            int undoOnParentCount = 0;
            int undoOnChildCount  = 0;

            int undoAfterTraverseParentCount = 0;
            int undoAfterTraverseChildCount  = 0;

            MockDownHierarchyQuestCommand command = new MockDownHierarchyQuestCommand(quest);

            command.OnUndoOnQuest += (q) =>
            {
                if (q == quest)
                {
                    undoOnParentCount++;
                }
                if (q == child)
                {
                    undoOnChildCount++;
                }
            };
            command.OnUndoOnQuestAfterTraverse += (q) =>
            {
                if (q == quest)
                {
                    undoAfterTraverseParentCount++;
                }
                if (q == child)
                {
                    undoAfterTraverseChildCount++;
                }
            };

            //Act
            command.Execute();
            command.Undo();

            //Assert
            Assert.AreEqual(1, undoOnParentCount);
            Assert.AreEqual(1, undoOnChildCount);

            Assert.AreEqual(1, undoAfterTraverseParentCount);
            Assert.AreEqual(0, undoAfterTraverseChildCount);
        }
Exemplo n.º 18
0
        public void UpdateRevertUpdateQuestAndSaveTest()
        {
            //Arrange
            int updatedId = 42;

            Quest savedRoot = new FakeQuest()
            {
                Id = TopRootId
            };

            List <Quest> rootChildren = new List <Quest>()
            {
                new FakeQuest()
                {
                    Id = updatedId
                }
            };

            Quest toUpdate = rootChildren[0];

            IQuestFactory factory = MockRepository.GenerateStrictMock <IQuestFactory>();

            IQuestDataLayer dataLayer = MockRepository.GenerateStrictMock <IQuestDataLayer>();

            dataLayer.Expect(dl => dl.Open()).
            Repeat.Once();
            dataLayer.Expect(dl => dl.Get(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(savedRoot);
            dataLayer.Expect(dl => dl.IsClosed()).
            Repeat.Once().
            Return(false);
            dataLayer.Expect(dl => dl.GetAll(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(rootChildren);
            dataLayer.Expect(dl => dl.Dispose()).
            Repeat.Once();

            dataLayer.Expect(dl => dl.UpdateAll(Arg <IEnumerable <Quest> > .Is.Anything)).
            IgnoreArguments().
            Repeat.Never();

            QuestTreeInMemory tree = new QuestTreeInMemory(dataLayer, factory);

            //Act
            tree.Initialize();
            tree.Update(toUpdate);
            tree.RevertUpdate(toUpdate);
            tree.Save();

            //Assert
            dataLayer.VerifyAllExpectations();
            factory.VerifyAllExpectations();
        }
        public void TraverseToRoot()
        {
            //Arrange
            int position = 0;

            List <Quest> children = new List <Quest>()
            {
                new FakeQuest(),
            };

            Quest parent = new FakeQuest {
                Children = children
            };


            Quest childToTraverse = children[position];

            childToTraverse.Parent = parent;


            IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>();

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Times(7).
            Return(parent);
            tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(childToTraverse))).
            Repeat.Once();
            tree.Expect(tr => tr.UnloadChildren(Arg <Quest> .Is.Equal(childToTraverse))).
            Repeat.Once();

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => true);

            //Act
            list.Initialize();
            bool traverseResult       = list.TraverseToLeaf(position);
            bool traverseToRootResult = list.TraverseToRoot();

            Quest        listParent   = list.Parent;
            List <Quest> listChildren = list.Leaves;

            //Assert
            Assert.AreEqual(parent, listParent);
            Assert.AreEqual(children, listChildren);

            Assert.IsTrue(traverseResult);
            Assert.IsTrue(traverseToRootResult);

            tree.VerifyAllExpectations();
        }
Exemplo n.º 20
0
        public void CtorTest()
        {
            //Arrange
            Quest quest = new FakeQuest();
            MockAbstractQuestCommand command = null;

            //Act
            Assert.DoesNotThrow(() => command = new MockAbstractQuestCommand(quest));

            //Assert
            Assert.AreEqual(quest, command.GetQuestRef);
        }
Exemplo n.º 21
0
        public void CancelQuestTest()
        {
            //Arrange
            int position = 0;

            Quest toFail = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toFail
            };

            ICommand returnedCommand = MockRepository.GenerateStrictMock <ICommand>();

            returnedCommand.Expect(rc => rc.Execute()).
            Repeat.Once().
            Return(true);
            returnedCommand.Expect(rc => rc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(m => m.Leaves).
            Repeat.Once().
            Return(leaves);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            stateCommands.Expect(sc => sc.CancelQuest(Arg <Quest> .Is.Equal(toFail))).
            Repeat.Once().
            Return(returnedCommand);

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();


            ActiveQuestListViewModel viewModel = new ActiveQuestListViewModel(model, stateCommands, repoCommands);


            //Act
            Task cancelTask = viewModel.CancelQuest(position);

            //Assert
            Assert.IsNotNull(cancelTask);
            cancelTask.Wait();

            returnedCommand.VerifyAllExpectations();
            stateCommands.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
            model.VerifyAllExpectations();
        }
        public void ExecuteWithParentsTest()
        {
            //Arrange
            Quest root    = new FakeQuest();
            Quest parent0 = new FakeQuest();
            Quest parent1 = new FakeQuest();
            Quest parent2 = new FakeQuest();

            root.Parent    = null;
            parent0.Parent = root;
            parent1.Parent = parent0;
            parent2.Parent = parent1;

            bool hasExecutedOnRoot    = false;
            bool hasExecutedOnParent0 = false;
            bool hasExecutedOnParent1 = false;
            bool hasExecutedOnParent2 = false;


            MockUpHierarchyQuestCommand command = new MockUpHierarchyQuestCommand(parent2);

            command.OnExecuteOnQuest += (q) =>
            {
                if (q == root)
                {
                    hasExecutedOnRoot = true;
                }
                else if (q == parent0)
                {
                    hasExecutedOnParent0 = true;
                }
                else if (q == parent1)
                {
                    hasExecutedOnParent1 = true;
                }
                else if (q == parent2)
                {
                    hasExecutedOnParent2 = true;
                }
            };

            //Act
            command.Execute();

            //Assert
            Assert.IsFalse(hasExecutedOnRoot);
            Assert.IsTrue(hasExecutedOnParent0);
            Assert.IsTrue(hasExecutedOnParent1);
            Assert.IsTrue(hasExecutedOnParent2);
        }
Exemplo n.º 23
0
        public void DeleteQuestValidPositionTest()
        {
            //Arrange
            int   position = 0;
            Quest parent   = new FakeQuest();
            Quest toDelete = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toDelete
            };

            ICommand deleteCommand = MockRepository.GenerateStrictMock <ICommand>();

            deleteCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            deleteCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(rep => rep.Leaves).
            Repeat.Once().
            Return(leaves);
            model.Expect(m => m.Parent).
            Repeat.Once().
            Return(parent);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            repoCommands.Expect(rc => rc.DeleteQuest(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).
            Repeat.Once().
            Return(deleteCommand);

            QuestListViewModel viewModel = new QuestListViewModel(model, stateCommands, repoCommands);

            //Act
            Task deleteTask = viewModel.DeleteQuest(position);

            //Assert
            Assert.IsNotNull(deleteTask);
            deleteTask.Wait();

            model.VerifyAllExpectations();
            deleteCommand.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
        }
Exemplo n.º 24
0
        public void InitializeBindRootAndChildren()
        {
            //Arrange
            Quest savedRoot = new FakeQuest()
            {
                Id = TopRootId
            };

            List <Quest> children = new List <Quest>()
            {
                new FakeQuest()
            };

            IQuestFactory factory = MockRepository.GenerateStrictMock <IQuestFactory>();

            IQuestDataLayer dataLayer = MockRepository.GenerateStrictMock <IQuestDataLayer>();

            dataLayer.Expect(dl => dl.Get(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(savedRoot);
            dataLayer.Expect(dl => dl.Open()).
            Repeat.Once();
            dataLayer.Expect(dl => dl.IsClosed()).
            Repeat.Once().
            Return(false);

            dataLayer.Expect(dl => dl.Dispose()).
            Repeat.Once();

            dataLayer.Expect(dl => dl.GetAll(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(children);

            QuestTreeInMemory tree = new QuestTreeInMemory(dataLayer, factory);

            //Act
            tree.Initialize();
            Quest root = tree.Root;

            //Assert
            Assert.AreEqual(1, root.Children.Count);
            Quest child = root.Children[0];

            Assert.IsTrue(root.Children.Any(q => q == child));
            Assert.AreEqual(root, child.Parent);
            Assert.AreEqual(root.Id, child.ParentId);

            dataLayer.VerifyAllExpectations();
            factory.VerifyAllExpectations();
        }
Exemplo n.º 25
0
        public void UpdateCommandTest()
        {
            //Arrange
            ITreeCommandsFactory factory = new DefaultTreeCommandsFactory(
                MockRepository.GenerateStrictMock <IQuestTree>());

            Quest quest = new FakeQuest();

            //Act
            ICommand addCommand = factory.UpdateQuest(quest);

            //Assert
            Assert.IsNotNull(addCommand);
            Assert.IsTrue(addCommand is CurrentQuestCommand);
        }
Exemplo n.º 26
0
        public void InitializeWithSavedRootWithChildrenTest()
        {
            //Arrange
            Quest savedRoot = new FakeQuest()
            {
                Id = TopRootId
            };

            List <Quest> children = new List <Quest>()
            {
                new FakeQuest()
            };

            IQuestFactory factory = MockRepository.GenerateStrictMock <IQuestFactory>();

            IQuestDataLayer dataLayer = MockRepository.GenerateStrictMock <IQuestDataLayer>();

            dataLayer.Expect(dl => dl.Get(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(savedRoot);
            dataLayer.Expect(dl => dl.Open()).
            Repeat.Once();
            dataLayer.Expect(dl => dl.IsClosed()).
            Repeat.Once().
            Return(false);

            dataLayer.Expect(dl => dl.Dispose()).
            Repeat.Once();

            dataLayer.Expect(dl => dl.GetAll(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(children);

            QuestTreeInMemory tree = new QuestTreeInMemory(dataLayer, factory);

            //Act
            tree.Initialize();
            Quest root = tree.Root;

            //Assert
            Assert.IsNotNull(root);
            Assert.AreEqual(savedRoot, root);
            Assert.IsNotEmpty(root.Children);
            Assert.AreEqual(children, root.Children);

            dataLayer.VerifyAllExpectations();
            factory.VerifyAllExpectations();
        }
Exemplo n.º 27
0
        public void InitializeNoSavedRootTest()
        {
            //Arrange
            Quest createdRoot = new FakeQuest();

            IQuestFactory factory = MockRepository.GenerateStrictMock <IQuestFactory>();

            factory.Expect(cr => cr.CreateQuest()).
            Repeat.Once().
            Return(createdRoot);

            IQuestDataLayer dataLayer = MockRepository.GenerateStrictMock <IQuestDataLayer>();

            dataLayer.Expect(dl => dl.Get(Arg <int> .Is.Equal(TopRootId))).
            Repeat.Once().
            Return(null);
            dataLayer.Expect(dl => dl.Open()).
            Repeat.Once();
            dataLayer.Expect(dl => dl.Dispose()).
            Repeat.Once();
            dataLayer.Expect(dl => dl.Insert(Arg <Quest> .Is.Anything)).
            Repeat.Once();

            QuestTreeInMemory tree = new QuestTreeInMemory(dataLayer, factory);

            //Act
            tree.Initialize();
            bool  isInitialized = tree.IsInitialized();
            Quest root          = tree.Root;

            //Assert
            Assert.IsTrue(isInitialized);
            Assert.IsNotNull(root);

            Assert.AreEqual(createdRoot, root);
            Assert.AreEqual(null, root.ParentId);

            Quest savedRoot =
                dataLayer.GetArgumentsForCallsMadeOn(dl => dl.Insert(Arg <Quest> .Is.Anything))[0][0] as Quest;

            Assert.IsNotNull(savedRoot);

            Assert.AreEqual(root, savedRoot);
            Assert.AreEqual(TopRootId, savedRoot.Id);

            dataLayer.VerifyAllExpectations();
            factory.VerifyAllExpectations();
        }
Exemplo n.º 28
0
        public void ExecuteUndoTest()
        {
            //Arrange
            Quest quest = new FakeQuest();

            MockThisQuestCommand command = new MockThisQuestCommand(quest);

            command.OnExecuteOnQuest += (q) => { Assert.AreEqual(quest, q); };
            command.OnUndoOnQuest    += (q) => { Assert.AreEqual(quest, q); };

            //Act
            command.Execute();
            command.Undo();

            //Assert
        }
Exemplo n.º 29
0
        public void DeleteCommandTest()
        {
            //Arrange
            Quest quest  = new FakeQuest();
            Quest parent = new FakeQuest();

            ITreeCommandsFactory factory = new DefaultTreeCommandsFactory(
                MockRepository.GenerateStrictMock <IQuestTree>());


            //Act
            ICommand addCommand = factory.DeleteQuest(parent, quest);

            //Assert
            Assert.IsNotNull(addCommand);
            Assert.IsTrue(addCommand is CompositeCommand);
        }
        public void ExecuteOnQuestWithoutChildrenTest()
        {
            //Arrange
            Quest quest = new FakeQuest();

            MockDownHierarchyQuestCommand command = new MockDownHierarchyQuestCommand(quest);

            command.OnExecuteOnQuest += (q) =>
            {
                Assert.AreEqual(quest, q);
            };

            //Act
            command.Execute();

            //Assert
        }