-
Notifications
You must be signed in to change notification settings - Fork 0
/
TimeTrackerPresenterFixtures.cs
executable file
·181 lines (151 loc) · 6.05 KB
/
TimeTrackerPresenterFixtures.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
// ReSharper disable InconsistentNaming
using System;
using System.Windows.Forms;
using NUnit.Framework;
using Rhino.Mocks;
using TimeTracker.Domain;
using TimeTracker.DomainLayer;
using TimeTracker.PresentationLayer;
namespace TimeTracker.Tests.PresentationLayer
{
[TestFixture]
public class TimeEntryPresenterFixture
{
[SetUp]
public virtual void SetUp()
{
CreateSUT();
}
protected IRepository Repository{get; set;}
protected ITaskEntryView View { get; set; }
protected virtual void CreateSUT()
{
Repository = MockRepository.GenerateStub<IRepository>();
View = MockRepository.GenerateMock<ITaskEntryView>();
new TaskEntryPresenter(View, Repository);
}
}
public class When_time_tracker_presenter_is_constructed : TimeEntryPresenterFixture
{
[Test]
public void should_subscribe_to_views_key_down_event()
{
View.AssertWasCalled(view => view.KeyDown += Arg<KeyEventHandler>.Is.Anything);
}
[Test]
public void should_subscribe_to_views_time_text_changed_event()
{
View.AssertWasCalled(view => view.DurationTextChanged += Arg<EventHandler>.Is.Anything);
}
}
public class When_view_is_visible_and_escape_is_pressed : TimeEntryPresenterFixture
{
[Test]
public void should_hide_view()
{
View.Raise(view => view.KeyDown += null, this, new KeyEventArgs(Keys.Escape));
View.AssertWasCalled(view => view.Hide());
}
}
public class When_view_is_visible_time_is_empty_and_enter_is_pressed : TimeEntryPresenterFixture
{
[Test]
public void should_set_focus_to_time()
{
View.Raise(view => view.KeyDown += null, this, new KeyEventArgs(Keys.Enter));
View.AssertWasCalled(view => view.DurationSetFocus());
}
}
public class When_view_is_visible_time_is_not_empty_task_is_empty_and_enter_is_pressed : TimeEntryPresenterFixture
{
[Test]
public void should_set_focus_to_task()
{
View.Stub(view => view.Duration).Return(DateTime.Now.ToShortTimeString());
View.Raise(view => view.KeyDown += null, this, new KeyEventArgs(Keys.Enter));
View.AssertWasCalled(view => view.ActivitySetFocus());
}
}
public class When_view_is_visible_time_and_task_are_not_null_and_enter_is_pressed : TimeEntryPresenterFixture
{
const string ACTIVITY = "Some Activity";
const string NOTES = "Notes";
const string DURATION = ".5";
public override void SetUp()
{
base.SetUp();
View.Stub(view => view.Duration).Return(DURATION);
View.Stub(view => view.Activity).Return(ACTIVITY);
View.Stub(view => view.Note).Return(NOTES);
View.Raise(view => view.KeyDown += null, this, new KeyEventArgs(Keys.Enter));
}
[Test]
public void should_set_view_recent_activities()
{
//View.AssertWasCalled(view => view.SetRecentActivities(RecentActivities));
}
[Test]
public void should_update_recent_activities()
{
//RecentActivities.AssertWasCalled(recentActivities => recentActivities.Update(ACTIVITY));
}
[Test]
public void should_update_timesheet()
{
//Timesheet.AssertWasCalled(timesheet => timesheet.Update(Arg<Task>.Is.Anything));
}
}
public class When_time_changes_to_a_valid_time : TimeEntryPresenterFixture
{
[Test]
public void should_do_nothing()
{
View.Stub(view => view.Duration).Return("0");
View.Raise(view=>view.DurationTextChanged += null, this, EventArgs.Empty);
}
protected override void CreateSUT()
{
Repository = MockRepository.GenerateStub<IRepository>();
View = MockRepository.GenerateStrictMock<ITaskEntryView>();
View.Stub(view => view.KeyDown += Arg<KeyEventHandler>.Is.Anything);
View.Stub(view => view.DurationTextChanged += Arg<EventHandler>.Is.Anything);
new TaskEntryPresenter(View, Repository);
}
}
public class When_time_changes_and_time_is_time_is_empty : TimeEntryPresenterFixture
{
[Test]
public void should_set_time_text_to_empty_string()
{
View.Stub(view => view.Duration).Return("");
View.Stub(view => view.Duration = string.Empty);
View.Raise(view=>view.DurationTextChanged += null, this, EventArgs.Empty);
}
protected override void CreateSUT()
{
Repository = MockRepository.GenerateStub<IRepository>();
View = MockRepository.GenerateStrictMock<ITaskEntryView>();
View.Stub(view => view.KeyDown += Arg<KeyEventHandler>.Is.Anything);
View.Stub(view => view.DurationTextChanged += Arg<EventHandler>.Is.Anything);
new TaskEntryPresenter(View, Repository);
}
}
public class When_time_changes_and_valid_time_becomes_invalid : TimeEntryPresenterFixture
{
[Test]
public void should_set_time_text_to_previously_valid_time()
{
View.Stub(view => view.Duration).Return("10A");
View.Stub(view => view.Duration = "10");
View.Raise(view=>view.DurationTextChanged += null, this, EventArgs.Empty);
}
protected override void CreateSUT()
{
Repository = MockRepository.GenerateStub<IRepository>();
View = MockRepository.GenerateStrictMock<ITaskEntryView>();
View.Stub(view => view.KeyDown += Arg<KeyEventHandler>.Is.Anything);
View.Stub(view => view.DurationTextChanged += Arg<EventHandler>.Is.Anything);
new TaskEntryPresenter(View, Repository);
}
}
}