/tags/build-1.0.0.29307/src/test/ScrumSprintMonitor.WorkItemMonitor.Test/TeamMembersListViewModelSpecs.cs
C# | 455 lines | 327 code | 119 blank | 9 comment | 2 complexity | 4954b1f5b261c475fb3bee4524ce5d69 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, CC-BY-3.0
- // ReSharper disable InconsistentNaming
- namespace ScrumSprintMonitor.WorkItemMonitor.Test
- {
- #region #using Directives
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
-
- using Design;
-
- using Implementation;
-
- using Infrastructure;
- using Infrastructure.Configuration;
-
- using MbUnit.Framework;
-
- using Microsoft.Practices.ServiceLocation;
-
- using Modules.WorkItemMonitor.ViewModels;
-
- using Ninject.Core;
-
- using Rhino.Mocks;
- using Rhino.Mocks.Interfaces;
-
- using UI.Wpf.ViewModels;
-
- using UnitTest.Base;
-
- #endregion
-
- public class TeamMembersListViewModelSpecs
- {
- #region Nested type: base_team_members_list_viewmodel_context_spec
-
- public abstract class base_team_members_list_viewmodel_context_spec : ContextInstanceSpecification<TeamMembersListViewModel>
- {
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- private IKernel kernel;
- private IPresentationConfiguration presentationConfiguration;
- private IRemainingWorkStatusEvaluator remainingWorkStatusEvaluator;
- protected IServiceLocator serviceLocator;
- protected ISprint sprint;
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- SystemTime.Now = () => new DateTime(2009, 1, 29, 11, 0, 0, DateTimeKind.Utc);
-
- NinjectTestContainerAbstraction.AssignModules(typeof(NinjectTestModule));
- this.serviceLocator = NinjectTestContainerAbstraction.EnsureContainerIsSetUp();
- this.kernel = ((NinjectTestContainerAbstraction) this.serviceLocator).Instance;
- this.sprint = this.serviceLocator.GetInstance<ISprint>();
- this.remainingWorkStatusEvaluator = MockRepository.GenerateStub<IRemainingWorkStatusEvaluator>();
- this.presentationConfiguration = MockRepository.GenerateStub<IPresentationConfiguration>();
-
- TestAssetLibrary.ConfigureSprintWithMockData(this.sprint, this.serviceLocator);
- }
-
- protected override TeamMembersListViewModel Create_subject_under_test()
- {
- return new TeamMembersListViewModel(this.serviceLocator, this.kernel, this.remainingWorkStatusEvaluator, this.presentationConfiguration);
- }
-
- protected override void Dispose_context()
- {
- base.Dispose_context();
-
- var disposable = this.serviceLocator as IDisposable;
- if (disposable != null)
- {
- disposable.Dispose();
- }
- }
-
- #endregion
- }
-
- #endregion
-
- #region Nested type: when_accessing_view_model_after_disposed
-
- [TestFixture]
- public class when_accessing_view_model_after_disposed : base_team_members_list_viewmodel_context_spec
- {
- private Action call;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Because()
- {
- base.Because();
-
- SUT.Dispose();
-
- ITeamMemberViewModel unassignedWork;
- this.call = () => unassignedWork = SUT.UnassignedWork;
- }
-
- #endregion
-
- [Test]
- [ExpectedException(typeof(ObjectDisposedException))]
- public void then_exception_should_be_raised()
- {
- this.call();
- }
- }
-
- #endregion
-
- #region Nested type: when_new_team_members_are_added
-
- [TestFixture]
- public class when_new_team_members_are_added : base_team_members_list_viewmodel_context_spec
- {
- private ITeamMemberInfoProvider teamMemberInfoProvider;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.teamMemberInfoProvider = TestAssetLibrary.CreateTeamMemberInfoProvider();
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(this.teamMemberInfoProvider, this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- }
-
- protected override void Because()
- {
- AddTeamMember("Jesse");
- AddTeamMember("Matt");
- AddTeamMember("Samuel");
- AddTeamMember("Robert");
- AddTeamMember("Surya");
- AddTeamMember("Rolando");
- AddTeamMember("Rohanna");
- }
-
- private void AddTeamMember(string name)
- {
- this.sprint.TeamMembers.Add(new TeamMember(this.teamMemberInfoProvider.GetTeamMemberInformation(name), new IWorkItemAdapter[] {},
- new TeamMemberRemainingWorkload()));
- }
-
- #endregion
-
- [Test]
- //[WorkItem(3857)]
- public void then_NumberOfColumnsInGridView_should_be_3()
- {
- Assert.AreEqual(3, SUT.NumberOfColumnsInGridView);
- }
- }
-
- #endregion
-
- #region Nested type: when_processed_work_items_near_sprint_end
-
- [TestFixture]
- public class when_processed_work_items_near_sprint_end : base_team_members_list_viewmodel_context_spec
- {
- private IEventRaiser sprintEventRaiser;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.sprintEventRaiser = this.sprint.GetEventRaiser(x => x.PropertyChanged += null);
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(TestAssetLibrary.CreateTeamMemberInfoProvider(), this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- }
-
- protected override void Initialize_subject_under_test()
- {
- base.Initialize_subject_under_test();
-
- // Initialize SUT by accessing a property
- int count = SUT.TeamMembersIncludingUnassigned.Count;
- }
-
- protected override void Because()
- {
- this.sprint.TeamMembers[0].RemainingWorkload.PotentialSprintHours = 1.0;
- this.sprint.TeamMembers[1].RemainingWorkload.PotentialSprintHours = 4.0;
- this.sprint.Stub(s => s.AvailableTime).Return(TimeSpan.FromHours(5.0)).Repeat.Any();
- this.sprintEventRaiser.Raise(this.sprint, new PropertyChangedEventArgs("AvailableTime"));
- }
-
- #endregion
-
- [Test]
- public void then_1st_team_member_should_be_roger()
- {
- Assert.AreEqual("Roger", SUT.TeamMembersIncludingUnassigned[0].DisplayName);
- }
-
- [Test]
- public void then_2nd_team_member_should_be_pedro()
- {
- Assert.AreEqual("Pedro", SUT.TeamMembersIncludingUnassigned[1].DisplayName);
- }
- }
-
- #endregion
-
- #region Nested type: when_team_member_has_no_more_work
-
- [TestFixture]
- public class when_team_member_has_no_more_work : base_team_members_list_viewmodel_context_spec
- {
- private int teamMembersCount;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(TestAssetLibrary.CreateTeamMemberInfoProvider(), this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- }
-
- protected override void Initialize_subject_under_test()
- {
- base.Initialize_subject_under_test();
-
- // Initialize SUT by accessing a property
- this.teamMembersCount = SUT.TeamMembersIncludingUnassigned.Count;
- }
-
- protected override void Because()
- {
- this.sprint.TeamMembers[0].AssignedWorkItems = new IWorkItemAdapter[0];
- }
-
- #endregion
-
- [Test]
- public void then_one_team_member_disappears()
- {
- Assert.AreEqual(this.teamMembersCount - 1, SUT.TeamMembersIncludingUnassigned.Count);
- }
- }
-
- #endregion
-
- #region Nested type: when_team_members_are_cleared
-
- [TestFixture]
- public class when_team_members_are_cleared : base_team_members_list_viewmodel_context_spec
- {
- private ITeamMemberInfoProvider teamMemberInfoProvider;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.teamMemberInfoProvider = TestAssetLibrary.CreateTeamMemberInfoProvider();
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(this.teamMemberInfoProvider, this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- }
-
- protected override void Because()
- {
- this.sprint.TeamMembers.Clear();
- }
-
- #endregion
-
- [Test]
- //[WorkItem(3857)]
- public void then_NumberOfColumnsInGridView_should_be_1()
- {
- Assert.AreEqual(1, SUT.NumberOfColumnsInGridView);
- }
-
- [Test]
- public void then_TeamMembersIncludingUnassigned_should_be_empty()
- {
- Assert.IsFalse(SUT.TeamMembersIncludingUnassigned.Any());
- }
- }
-
- #endregion
-
- #region Nested type: when_unassigned_workitem_is_added
-
- [TestFixture]
- public class when_unassigned_workitem_is_added : base_team_members_list_viewmodel_context_spec
- {
- private IEventRaiser sprintEventRaiser;
- private ITeamMemberInfoProvider teamMemberInfoProvider;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.teamMemberInfoProvider = TestAssetLibrary.CreateTeamMemberInfoProvider();
- this.sprintEventRaiser = this.sprint.GetEventRaiser(x => x.PropertyChanged += null);
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(this.teamMemberInfoProvider, this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- }
-
- protected override void Initialize_subject_under_test()
- {
- base.Initialize_subject_under_test();
-
- // Initialize SUT by accessing a property
- int count = SUT.TeamMembersIncludingUnassigned.Count;
- }
-
- protected override void Because()
- {
- this.sprint.WorkItemStore.WorkItems.Add(TestAssetLibrary.CreateWorkItem(10, null, 10.0));
-
- this.sprint.Stub(s => s.UnassignedWork).Return(new TeamMember(this.teamMemberInfoProvider.GetTeamMemberInformation(null),
- this.sprint.WorkItemStore.WorkItems.Where(x => string.IsNullOrEmpty(x.AssignedTo)),
- new TeamMemberRemainingWorkload()));
- this.sprintEventRaiser.Raise(this.sprint, new PropertyChangedEventArgs("UnassignedWork"));
- }
-
- #endregion
-
- [Test]
- public void then_1st_team_member_should_be_unassigned()
- {
- Assert.AreEqual(null, SUT.TeamMembersIncludingUnassigned[0].DisplayName);
- }
- }
-
- #endregion
-
- #region Nested type: when_unassigned_workitem_is_added
-
- [TestFixture]
- public class when_unassigned_workitem_is_removed : base_team_members_list_viewmodel_context_spec
- {
- private IEventRaiser sprintEventRaiser;
- private ITeamMemberInfoProvider teamMemberInfoProvider;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.teamMemberInfoProvider = TestAssetLibrary.CreateTeamMemberInfoProvider();
- this.sprintEventRaiser = this.sprint.GetEventRaiser(x => x.PropertyChanged += null);
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(this.teamMemberInfoProvider, this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- this.sprint.Stub(s => s.UnassignedWork).Return(new TeamMember(this.teamMemberInfoProvider.GetTeamMemberInformation(null),
- this.sprint.WorkItemStore.WorkItems.Where(x => string.IsNullOrEmpty(x.AssignedTo)),
- new TeamMemberRemainingWorkload()));
- }
-
- protected override void Initialize_subject_under_test()
- {
- base.Initialize_subject_under_test();
-
- // Initialize SUT by accessing a property
- int count = SUT.TeamMembersIncludingUnassigned.Count;
- }
-
- protected override void Because()
- {
- this.sprint.Stub(s => s.UnassignedWork).Return(null).Repeat.Any();
- this.sprintEventRaiser.Raise(this.sprint, new PropertyChangedEventArgs("UnassignedWork"));
- }
-
- #endregion
-
- [Test]
- public void then_unassigned_team_member_should_be_gone()
- {
- Assert.IsFalse(SUT.TeamMembersIncludingUnassigned.Any(x => string.IsNullOrEmpty(x.DisplayName)));
- }
- }
-
- #endregion
-
- #region Nested type: when_team_members_are_added
-
- [TestFixture]
- public class when_team_members_are_added : base_team_members_list_viewmodel_context_spec
- {
- private IEventRaiser sprintEventRaiser;
- private ITeamMemberInfoProvider teamMemberInfoProvider;
- private int teamMemberCount;
-
- #region Overrides of ContextInstanceSpecification<TeamMembersListViewModel>
-
- protected override void Establish_context()
- {
- base.Establish_context();
-
- this.teamMemberInfoProvider = TestAssetLibrary.CreateTeamMemberInfoProvider();
- this.sprintEventRaiser = this.sprint.GetEventRaiser(x => x.PropertyChanged += null);
-
- var teamMembers = TestAssetLibrary.CreateTeamMembers(this.teamMemberInfoProvider, this.sprint.WorkItemStore.WorkItems);
- this.sprint.Stub(s => s.TeamMembers).Return(teamMembers);
- this.sprint.Stub(s => s.UnassignedWork).Return(new TeamMember(this.teamMemberInfoProvider.GetTeamMemberInformation(null),
- this.sprint.WorkItemStore.WorkItems.Where(x => string.IsNullOrEmpty(x.AssignedTo)),
- new TeamMemberRemainingWorkload()));
- }
-
- protected override void Initialize_subject_under_test()
- {
- base.Initialize_subject_under_test();
-
- // Initialize SUT by accessing a property
- this.teamMemberCount = SUT.TeamMembersIncludingUnassigned.Count;
- }
-
- protected override void Because()
- {
- var teamMembersCopy = new List<ITeamMember>(this.sprint.TeamMembers);
-
- this.sprint.TeamMembers.Clear();
- teamMembersCopy.ForEach(x => this.sprint.TeamMembers.Add(new TeamMember(x.Information, x.AssignedWorkItems, new TeamMemberRemainingWorkload())));
-
- this.sprintEventRaiser.Raise(this.sprint, new PropertyChangedEventArgs("UnassignedWork"));
- }
-
- #endregion
-
- [Test]
- public void then_team_member_count_should_be_the_same()
- {
- Assert.AreEqual(this.teamMemberCount, SUT.TeamMembersIncludingUnassigned.Count);
- }
- }
-
- #endregion
- }
- }
-
- // ReSharper restore InconsistentNaming