|
using CodeProject.VisualStudio.QualityTools.UnitTestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TaskList.DataModel;
using TaskList.ViewModel;
namespace Test.TaskList.ViewModel
{
[TestClass]
public class TaskListPageViewModelTest
{
private class TaskListPageView : ITaskListPageView
{
public bool CreateNewTaskCalled { get; set; }
public bool EditTaskCalled { get; set; }
#region ITaskListPageView Members
public Task CreateNewTask()
{
CreateNewTaskCalled = true;
return null;
}
public void EditTask(Task task)
{
EditTaskCalled = true;
}
#endregion
}
public TaskListPageViewModelTest()
{
}
private TestContext testContextInstance;
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private TaskListPageView view;
private TaskListTestApplication application;
private TaskListPageViewModel viewModel;
#region Additional test attributes
//
// You can use the following additional attributes as you write your tests:
//
// Use ClassInitialize to run code before running the first test in the class
// [ClassInitialize()]
// public static void MyClassInitialize(TestContext testContext) { }
//
// Use ClassCleanup to run code after all tests in a class have run
// [ClassCleanup()]
// public static void MyClassCleanup() { }
//
// Use TestInitialize to run code before running each test
// [TestInitialize()]
// public void MyTestInitialize() { }
//
// Use TestCleanup to run code after each test has run
// [TestCleanup()]
// public void MyTestCleanup() { }
//
[TestInitialize]
public void TestInitialize()
{
view = new TaskListPageView();
viewModel = new TaskListPageViewModel(view);
viewModel.TaskListApplication = application = new TaskListTestApplication();
}
#endregion
[TestMethod]
public void TaskListCommands_AddTask_should_be_enabled()
{
CommandTester tester = new CommandTester(viewModel, TaskListCommands.AddTask);
Specify.That(tester.CanExecute()).ShouldBeTrue();
}
[TestMethod]
public void AddTask_should_add_task()
{
CommandTester tester = new CommandTester(viewModel, TaskListCommands.AddTask);
Task item = new Task() { Title = "xyzzy" };
tester.Execute(item);
Specify.That(viewModel.Tasks[0]).ShouldBeSameAs(item);
}
[TestMethod]
public void AddTask_should_call_ITaskListPageView_CreateNewTask_if_no_task_supplied()
{
CommandTester tester = new CommandTester(viewModel, TaskListCommands.AddTask);
tester.Execute();
Specify.That(view.CreateNewTaskCalled).ShouldBeTrue();
}
[TestMethod]
public void TaskListCommands_RemoveTasks_should_be_enabled_when_tasks_selected()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.RemoveTasks);
Specify.That(tester.CanExecute()).ShouldBeTrue();
}
[TestMethod]
public void TaskListCommands_RemoveTasks_should_not_be_enabled_when_no_tasks_selected()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.RemoveTasks);
Specify.That(tester.CanExecute()).ShouldBeFalse();
}
[TestMethod]
public void RemoveTasks_should_remove_selected_tasks()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.RemoveTasks);
tester.Execute();
Specify.That(viewModel.Tasks).ShouldBeEmpty();
}
[TestMethod]
public void EditTask_should_be_enabled_when_one_task_selected()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.EditTask);
Specify.That(tester.CanExecute()).ShouldBeTrue();
}
[TestMethod]
public void EditTask_should_not_be_enabled_when_no_task_selected()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.EditTask);
Specify.That(tester.CanExecute()).ShouldBeFalse();
}
[TestMethod]
public void EditTask_should_not_be_enabled_when_multiple_tasks_selected()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
item = new Task() { Title = "sesame" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.EditTask);
Specify.That(tester.CanExecute()).ShouldBeFalse();
}
[TestMethod]
public void EditTask_should_call_ITaskListPageView_EditTask()
{
Task item = new Task() { Title = "xyzzy" };
viewModel.Tasks.Add(item);
viewModel.SelectedTasks.Add(item);
CommandTester tester = new CommandTester(viewModel, TaskListCommands.EditTask);
tester.Execute();
Specify.That(view.EditTaskCalled).ShouldBeTrue();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Windows developer with 10+ years experience working in the banking industry.