main
1using System;
2using Machine.Specifications;
3using Rhino.Mocks;
4using solidware.financials.infrastructure;
5using solidware.financials.messages;
6using solidware.financials.windows.ui;
7using solidware.financials.windows.ui.presenters;
8
9namespace specs.unit.ui.presenters
10{
11 public class AddFamilyMemberPresenterSpecs
12 {
13 public abstract class concern
14 {
15 Establish context = () =>
16 {
17 command_builder = Create.dependency<UICommandBuilder>();
18 sut = new AddFamilyMemberPresenter(command_builder);
19 };
20
21 static protected UICommandBuilder command_builder;
22 static protected AddFamilyMemberPresenter sut;
23 }
24
25 public class when_clicking_the_cancel_button : concern
26 {
27 It should_invoke_the_cancel_command = () =>
28 {
29 cancel.received(x => x.Execute(sut));
30 };
31
32 Establish context = () =>
33 {
34 cancel = Create.an<ObservableCommand>();
35 command_builder.Stub(x => x.build<CancelCommand>(sut)).Return(cancel);
36 };
37
38 Because of = () =>
39 {
40 sut.present();
41 sut.Cancel.Execute(sut);
42 };
43
44 static ObservableCommand cancel;
45 }
46
47 public class when_clicking_the_save_button : concern
48 {
49 It should_invoke_the_save_command = () =>
50 {
51 save.received(x => x.Execute(sut));
52 };
53
54 Establish context = () =>
55 {
56 save = Create.an<ObservableCommand>();
57 command_builder.Stub(x => x.build<AddFamilyMemberPresenter.SaveCommand>(sut)).Return(save);
58 };
59
60 Because of = () =>
61 {
62 sut.present();
63 sut.Save.Execute(sut);
64 };
65
66 static ObservableCommand save;
67 }
68
69 public class SaveCommandSpecs
70 {
71 public class when_clicked
72 {
73 It should_publish_a_message_on_the_bus = () =>
74 {
75 bus.received(x => x.publish(new FamilyMemberToAdd
76 {
77 first_name = "mo",
78 last_name = "khan",
79 date_of_birth = new DateTime(1984, 04, 28),
80 }));
81 };
82
83 It should_close_the_dialog = () =>
84 {
85 closed.ShouldBeTrue();
86 };
87
88 Establish context = () =>
89 {
90 bus = Create.dependency<ServiceBus>();
91 presenter = Create.an<AddFamilyMemberPresenter>();
92 presenter.Stub(x => x.first_name).Return("mo");
93 presenter.Stub(x => x.last_name).Return("khan");
94 presenter.Stub(x => x.date_of_birth).Return(new DateTime(1984, 04, 28));
95 presenter.Stub(x => x.close).Return(() => { closed = true; });
96 sut = new AddFamilyMemberPresenter.SaveCommand(bus);
97 };
98
99 Because of = () =>
100 {
101 sut.run(presenter);
102 };
103
104 static ServiceBus bus;
105 static AddFamilyMemberPresenter.SaveCommand sut;
106 static AddFamilyMemberPresenter presenter;
107 static bool closed;
108 }
109 }
110 }
111}