Commit ee2ff71
Changed files (6)
product
desktop.ui
Properties
messages
specs
unit
ui
presenters
product/desktop.ui/presenters/AddFamilyMemberPresenter.cs
@@ -21,12 +21,12 @@ namespace solidware.financials.windows.ui.presenters
date_of_birth = Clock.today();
}
- public string first_name { get; set; }
- public string last_name { get; set; }
- public DateTime date_of_birth { get; set; }
+ public virtual string first_name { get; set; }
+ public virtual string last_name { get; set; }
+ public virtual DateTime date_of_birth { get; set; }
public IObservableCommand Save { get; set; }
public IObservableCommand Cancel { get; set; }
- public Action close { get; set; }
+ public virtual Action close { get; set; }
public class SaveCommand : UICommand<AddFamilyMemberPresenter>
{
@@ -39,11 +39,11 @@ namespace solidware.financials.windows.ui.presenters
public override void run(AddFamilyMemberPresenter presenter)
{
- bus.publish<FamilyMemberToAdd>(x =>
+ bus.publish(new FamilyMemberToAdd
{
- x.first_name = presenter.first_name;
- x.last_name = presenter.last_name;
- x.date_of_birth = presenter.date_of_birth;
+ first_name = presenter.first_name,
+ last_name = presenter.last_name,
+ date_of_birth = presenter.date_of_birth,
});
presenter.close();
}
product/desktop.ui/presenters/AddNewIncomeViewModel.cs
@@ -8,7 +8,6 @@ namespace solidware.financials.windows.ui.presenters
public class AddNewIncomeViewModel : DialogPresenter
{
UICommandBuilder builder;
- ApplicationState state;
public AddNewIncomeViewModel(UICommandBuilder builder)
{
product/desktop.ui/Properties/AssemblyInfo.cs
@@ -49,5 +49,5 @@ using System.Windows;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2011.3.18.1253")]
-[assembly: AssemblyFileVersion("2011.3.18.1253")]
+[assembly: AssemblyVersion("2011.3.18.1329")]
+[assembly: AssemblyFileVersion("2011.3.18.1329")]
product/messages/FamilyMemberToAdd.cs
@@ -1,8 +1,9 @@
using System;
+using gorilla.utility;
namespace solidware.financials.messages
{
- public class FamilyMemberToAdd
+ public class FamilyMemberToAdd : ValueType<FamilyMemberToAdd>
{
public string first_name { get; set; }
public string last_name { get; set; }
product/specs/unit/ui/presenters/AddFamilyMemberPresenterSpecs.cs
@@ -0,0 +1,111 @@
+using System;
+using Machine.Specifications;
+using Rhino.Mocks;
+using solidware.financials.infrastructure;
+using solidware.financials.messages;
+using solidware.financials.windows.ui;
+using solidware.financials.windows.ui.presenters;
+
+namespace specs.unit.ui.presenters
+{
+ public class AddFamilyMemberPresenterSpecs
+ {
+ public abstract class concern
+ {
+ Establish context = () =>
+ {
+ command_builder = Create.dependency<UICommandBuilder>();
+ sut = new AddFamilyMemberPresenter(command_builder);
+ };
+
+ static protected UICommandBuilder command_builder;
+ static protected AddFamilyMemberPresenter sut;
+ }
+
+ public class when_clicking_the_cancel_button : concern
+ {
+ It should_invoke_the_cancel_command = () =>
+ {
+ cancel.received(x => x.Execute(sut));
+ };
+
+ Establish context = () =>
+ {
+ cancel = Create.an<IObservableCommand>();
+ command_builder.Stub(x => x.build<CancelCommand>(sut)).Return(cancel);
+ };
+
+ Because of = () =>
+ {
+ sut.present();
+ sut.Cancel.Execute(sut);
+ };
+
+ static IObservableCommand cancel;
+ }
+
+ public class when_clicking_the_save_button : concern
+ {
+ It should_invoke_the_save_command = () =>
+ {
+ save.received(x => x.Execute(sut));
+ };
+
+ Establish context = () =>
+ {
+ save = Create.an<IObservableCommand>();
+ command_builder.Stub(x => x.build<AddFamilyMemberPresenter.SaveCommand>(sut)).Return(save);
+ };
+
+ Because of = () =>
+ {
+ sut.present();
+ sut.Save.Execute(sut);
+ };
+
+ static IObservableCommand save;
+ }
+
+ public class SaveCommandSpecs
+ {
+ public class when_clicked
+ {
+ It should_publish_a_message_on_the_bus = () =>
+ {
+ bus.received(x => x.publish(new FamilyMemberToAdd
+ {
+ first_name = "mo",
+ last_name = "khan",
+ date_of_birth = new DateTime(1984, 04, 28),
+ }));
+ };
+
+ It should_close_the_dialog = () =>
+ {
+ closed.ShouldBeTrue();
+ };
+
+ Establish context = () =>
+ {
+ bus = Create.dependency<ServiceBus>();
+ presenter = Create.an<AddFamilyMemberPresenter>();
+ presenter.Stub(x => x.first_name).Return("mo");
+ presenter.Stub(x => x.last_name).Return("khan");
+ presenter.Stub(x => x.date_of_birth).Return(new DateTime(1984, 04, 28));
+ presenter.Stub(x => x.close).Return(() => { closed = true; });
+ sut = new AddFamilyMemberPresenter.SaveCommand(bus);
+ };
+
+ Because of = () =>
+ {
+ sut.run(presenter);
+ };
+
+ static ServiceBus bus;
+ static AddFamilyMemberPresenter.SaveCommand sut;
+ static AddFamilyMemberPresenter presenter;
+ static bool closed;
+ }
+ }
+ }
+}
\ No newline at end of file
product/specs/specs.csproj
@@ -55,6 +55,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Create.cs" />
<Compile Include="unit\ui\InMemoryApplicationStateSpecs.cs" />
+ <Compile Include="unit\ui\presenters\AddFamilyMemberPresenterSpecs.cs" />
<Compile Include="unit\ui\presenters\AddNewIncomeViewModelSpecs.cs" />
</ItemGroup>
<ItemGroup>