public void QuestIdTest() { //Arrange int questId = 42; IQuestTree questTree = MockRepository.GenerateStrictMock <IQuestTree>(); IQuestViewModelFactory questFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>(); 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 int expectedQuestId = vm.QuestId; //Assert Assert.AreEqual(questId, expectedQuestId); questTree.VerifyAllExpectations(); questFactory.VerifyAllExpectations(); questValidator.VerifyAllExpectations(); treeCommands.VerifyAllExpectations(); }
/// <summary> /// Receives IQuestTree dependency through this constructor. /// </summary> /// <param name="questTree"></param> /// <param name="topChildrenPredicate"></param> public QuestListModelTopChildrenPredicate(IQuestTree questTree, Func <Quest, bool> topChildrenPredicate) { questTree.ThrowIfNull(nameof(questTree)); topChildrenPredicate.ThrowIfNull(nameof(topChildrenPredicate)); _questTree = questTree; _topChildrenPredicate = topChildrenPredicate; }
public UpToRootQuestCommand(IQuestTree questTree, IQuestCommand innerCommand) { questTree.ThrowIfNull(nameof(questTree)); innerCommand.ThrowIfNull(nameof(innerCommand)); _questTree = questTree; _innerCommand = innerCommand; }
public void ParentIdTest() { //Arrange int parentId = 42; IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>(); IQuestTree questRepository = MockRepository.GenerateStrictMock <IQuestTree>(); ITreeCommandsFactory factory = MockRepository.GenerateStrictMock <ITreeCommandsFactory>(); IQuestValidator <ClarifiedResponse <int> > questValidator = MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >(); IQuestViewModelFactory questViewModelFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>(); QuestCreateViewModel viewModel = new QuestCreateViewModel( questViewModelFactory, questValidator, questRepository, factory); //Act viewModel.ParentId = parentId; int actualParentId = viewModel.ParentId; //Assert Assert.AreEqual(parentId, actualParentId); questViewModel.VerifyAllExpectations(); questRepository.VerifyAllExpectations(); factory.VerifyAllExpectations(); questValidator.VerifyAllExpectations(); questViewModelFactory.VerifyAllExpectations(); }
public void CtorNullTest() { //Arrange IQuestTree questTree = MockRepository.GenerateStrictMock <IQuestTree>(); IQuestViewModelFactory questFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>(); IQuestValidator <ClarifiedResponse <int> > questValidator = MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >(); ITreeCommandsFactory treeCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>(); //Act ArgumentNullException treeEx = Assert.Throws <ArgumentNullException>( () => new QuestCreateViewModel(questFactory, questValidator, null, treeCommands)); ArgumentNullException treeCommandsEx = Assert.Throws <ArgumentNullException>( () => new QuestCreateViewModel(questFactory, questValidator, questTree, null)); //Assert Assert.IsNotNull(treeEx); Assert.IsNotNull(treeCommandsEx); Assert.AreEqual("questTree", treeEx.ParamName); Assert.AreEqual("treeCommands", treeCommandsEx.ParamName); questFactory.VerifyAllExpectations(); questTree.VerifyAllExpectations(); questValidator.VerifyAllExpectations(); treeCommands.VerifyAllExpectations(); }
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(); }
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(); }
/// <summary> /// Receives references to questTree and quest to delete. /// </summary> /// <param name="questTree"></param> /// <param name="parent"></param> /// <param name="questToDelete"></param> public DeleteQuestCommand(IQuestTree questTree, Quest parent, Quest questToDelete) : base(questTree) { parent.ThrowIfNull(nameof(parent)); questToDelete.ThrowIfNull(nameof(questToDelete)); _parent = parent; _toDelete = questToDelete; }
/// <summary> /// Receives reference to tree, parent and new child. /// </summary> /// <param name="tree"></param> /// <param name="parent"></param> /// <param name="childToAdd"></param> public AddQuestCommand(IQuestTree tree, Quest parent, Quest childToAdd) : base(tree) { parent.ThrowIfNull(nameof(parent)); childToAdd.ThrowIfNull(nameof(childToAdd)); Parent = parent; ChildToAdd = childToAdd; }
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(); }
/// <summary> /// Receives quest model, quest validator and reference to repository command. /// </summary> /// <param name="questTree"></param> /// <param name="questViewModelFactory"></param> /// <param name="questValidator"></param> /// <param name="treeCommands"></param> public QuestEditViewModel( IQuestViewModelFactory questViewModelFactory, IQuestValidator <ClarifiedResponse <int> > questValidator, IQuestTree questTree, ITreeCommandsFactory treeCommands) : base(questViewModelFactory, questValidator) { questTree.ThrowIfNull(nameof(questTree)); treeCommands.ThrowIfNull(nameof(treeCommands)); _questTree = questTree; _commandsFactory = treeCommands; }
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(); }
public void CtorNullTest() { //Arrange IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); //Act ArgumentNullException ex = Assert.Throws <ArgumentNullException>(() => new MockCommand(null, tree)); //Assert Assert.IsNotNull(ex); Assert.AreEqual("quest", ex.ParamName); }
public void CancelFailTest() { //Arrange IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); IStateCommandsFactory factory = new DefaultStateCommandsFactory(repository); //Act ArgumentNullException ex = Assert.Throws <ArgumentNullException>(() => factory.CancelQuest(null)); //Assert Assert.IsNotNull(ex); Assert.AreEqual("quest", ex.ParamName); }
public void DoneQuestCommandTest() { //Arrange IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); Quest quest = MockRepository.GeneratePartialMock <Quest>(); IStateCommandsFactory factory = new DefaultStateCommandsFactory(repository); //Act ICommand command = factory.DoneQuest(quest); //Assert Assert.AreEqual(typeof(UpToRootQuestCommand), command.GetType()); }
public void ActionWithModelNullTest() { //Arrange IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>(); questViewModel.Expect(qvm => qvm.Model). Repeat.Once(). Return(null); questViewModel.Expect(qvm => qvm.UseStartTime). Repeat.Never(); questViewModel.Expect(qvm => qvm.UseDeadline). Repeat.Never(); IQuestTree questRepository = MockRepository.GenerateStrictMock <IQuestTree>(); questRepository.Expect(qt => qt.Get(Arg <Predicate <Quest> > .Is.NotNull)). Repeat.Never(); ITreeCommandsFactory factory = MockRepository.GenerateStrictMock <ITreeCommandsFactory>(); factory.Expect(f => f.AddQuest(Arg <Quest> .Is.Anything, Arg <Quest> .Is.Anything)) .Repeat.Never(); 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(); questRepository.VerifyAllExpectations(); factory.VerifyAllExpectations(); questValidator.VerifyAllExpectations(); questViewModelFactory.VerifyAllExpectations(); }
public void IsValidTest() { //Arrange IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); AbstractTreeMock mock = new AbstractTreeMock(tree); //Act bool isValidResult = mock.IsValid(); //Assert Assert.IsTrue(isValidResult); tree.VerifyAllExpectations(); }
public void CommitTest() { //Arrange IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); UnloadChildrenQuestCommand command = new UnloadChildrenQuestCommand(tree); //Act bool result = command.Commit(); //Assert Assert.IsTrue(result); tree.VerifyAllExpectations(); }
public void AddCommandTest() { //Arrange Quest quest = new FakeQuest(); Quest parent = new FakeQuest(); IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); ITreeCommandsFactory factory = new DefaultTreeCommandsFactory(repository); //Act ICommand addCommand = factory.AddQuest(parent, quest); //Assert Assert.IsNotNull(addCommand); Assert.IsTrue(addCommand is CompositeCommand); }
public void CommitTest() { //Arrange IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); tree.Expect(tr => tr.Save()).Repeat.Once(); AbstractTreeMock mock = new AbstractTreeMock(tree); //Act bool commitResult = mock.Commit(); //Assert Assert.IsTrue(commitResult); tree.VerifyAllExpectations(); }
public void CommitTest() { //Arrange IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); tree.Expect(tr => tr.Save()).Repeat.Once(); UpdateQuestCommand command = new UpdateQuestCommand(tree); //Act bool result = command.Commit(); //Assert Assert.IsTrue(result); tree.VerifyAllExpectations(); }
public void RefreshAfterInitializeTest() { //Arrange List <Quest> children = new List <Quest>() { new FakeQuest(), new FakeQuest(), new FakeQuest(), new FakeQuest() }; Quest parent = new FakeQuest { Children = children }; 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(3). Return(parent); IQuestOrderStrategy strategy = MockRepository.GenerateStrictMock <IQuestOrderStrategy>(); strategy.Expect(str => str.Order(Arg <IEnumerable <Quest> > .Is.Anything)). Repeat.Twice(). Return(children.OrderBy(q => q.IsImportant)); QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => true) { OrderStrategy = strategy }; //Act list.Initialize(); list.Refresh(); //Assert tree.VerifyAllExpectations(); strategy.VerifyAllExpectations(); }
public void InitializeFailQuestNullTest() { //Arrange Quest toDelete = new Quest(); Quest parent = new Quest(); IQuestTree repository = MockRepository.GenerateMock <IQuestTree>(); //Act ArgumentNullException parentEx = Assert.Throws <ArgumentNullException>(() => new DeleteQuestCommand(repository, null, toDelete)); ArgumentNullException childEx = Assert.Throws <ArgumentNullException>(() => new DeleteQuestCommand(repository, parent, null)); //Assert Assert.IsNotNull(parentEx); Assert.AreEqual("parent", parentEx.ParamName); Assert.IsNotNull(childEx); Assert.AreEqual("questToDelete", childEx.ParamName); }
public void CtorNullTest() { //Arrange IQuestTree questTree = MockRepository.GenerateStrictMock <IQuestTree>(); Func <Quest, bool> predicate = quest => true; //Act ArgumentNullException treeEx = Assert.Throws <ArgumentNullException>(() => new QuestListModelTopChildrenPredicate(null, predicate)); ArgumentNullException predicateEx = Assert.Throws <ArgumentNullException>(() => new QuestListModelTopChildrenPredicate(questTree, null)); //Assert Assert.IsNotNull(treeEx); Assert.IsNotNull(predicateEx); Assert.AreEqual("questTree", treeEx.ParamName); Assert.AreEqual("topChildrenPredicate", predicateEx.ParamName); }
public void ExecuteTest() { //Arrange Quest quest = QuestHelper.CreateQuest(); IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(quest))).Repeat.Once(); LoadChildrenQuestCommand command = new LoadChildrenQuestCommand(tree); //Act bool result = command.Execute(quest); //Assert Assert.IsTrue(result); tree.VerifyAllExpectations(); }
public void UndoTest() { //Arrange Quest quest = QuestHelper.CreateQuest(); IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); tree.Expect(tr => tr.RevertUpdate(Arg <Quest> .Is.Equal(quest))).Repeat.Once(); UpdateQuestCommand command = new UpdateQuestCommand(tree); //Act bool result = command.Undo(quest); //Assert Assert.IsTrue(result); tree.VerifyAllExpectations(); }
public void ExecuteTest() { //Arrange IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); Quest parent = new Quest(); Quest toAdd = new Quest(); repository.Expect(rep => rep.AddChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toAdd))). Repeat.Once(); ICommand command = new AddQuestCommand(repository, parent, toAdd); //Act command.Execute(); //Assert repository.VerifyAllExpectations(); }
public void InitializeWithInitializedQuestTreeWithoutChildrenTest() { //Arrange Quest parent = new FakeQuest { Children = null }; IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>(); tree.Expect(tr => tr.IsInitialized()). Repeat.Once(). Return(false); tree.Expect(tr => tr.Initialize()). Repeat.Once(); tree.Expect(tr => tr.Root). Repeat.Once(). Return(parent); tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(parent))). Repeat.Once(); QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => q.State == State.Idle || q.State == State.Done); //Act bool isInitializedBeforeInitialization = list.IsInitialized(); list.Initialize(); bool isInitializedAfterInitialization = list.IsInitialized(); //Assert Assert.IsFalse(isInitializedBeforeInitialization); Assert.IsTrue(isInitializedAfterInitialization); Quest listParent = list.Parent; Assert.AreEqual(parent, listParent); List <Quest> listChildren = list.Leaves; Assert.IsNull(listChildren); tree.VerifyAllExpectations(); }
public void UndoAfterExecutionTest() { //Arrange IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); Quest parent = new Quest(); Quest toDelete = new Quest(); repository.Expect(rep => rep.RemoveChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))). Repeat.Once(); repository.Expect(rep => rep.AddChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).Repeat.Once(); ICommand command = new DeleteQuestCommand(repository, parent, toDelete); //Act command.Execute(); command.Undo(); //Assert repository.VerifyAllExpectations(); }
public void ExecuteTest() { //Arrange IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>(); Quest parent = QuestHelper.CreateQuest(); Quest toDelete = QuestHelper.CreateQuest(42); repository.Expect(rep => rep.RemoveChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))). Repeat.Once(); ICommand command = new DeleteQuestCommand(repository, parent, toDelete); //Act bool result = command.Execute(); //Assert Assert.IsTrue(result); repository.VerifyAllExpectations(); }