Commit 42503d5
Changed files (7)
product
client
client.ui
bootstrappers
presenters
support
unit
product/client/client.ui/bootstrappers/Bootstrapper.cs
@@ -62,11 +62,12 @@ namespace presentation.windows.bootstrappers
builder.Register<AccountPresenter>();
builder.Register<AccountPresenter.AddNewAccountCommand>();
builder.Register<CancelCommand>();
+ builder.Register<AddNewAccountPresenter>();
// commanding
builder.Register<AsynchronousCommandProcessor>().As<CommandProcessor>().SingletonScoped();
//builder.Register<SynchronousCommandProcessor>().As<CommandProcessor>().SingletonScoped();
- builder.Register<WpfCommandBuilder>().As<UICommandBuilder>();
+ builder.Register<WPFCommandBuilder>().As<UICommandBuilder>();
// queries
product/client/client.ui/bootstrappers/ComposeShell.cs
@@ -1,4 +1,3 @@
-using System.Windows.Controls;
using presentation.windows.common;
using presentation.windows.presenters;
using presentation.windows.views;
@@ -20,12 +19,12 @@ namespace presentation.windows.bootstrappers
{
controller.add_tab<CompensationPresenter, CompensationTab>();
controller.add_tab<AccountPresenter, AccountTab>();
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Expenses"}));
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "RRSP"}));
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Party"}));
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Assets"}));
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Liabilities"}));
- region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Budget"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Expenses"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "RRSP"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Party"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Assets"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Liabilities"}));
+ //region_manager.region<TabControl>(x => x.Items.Add(new TabItem {Header = "Budget"}));
region_manager.region<MainMenu>(x =>
{
@@ -33,6 +32,9 @@ namespace presentation.windows.bootstrappers
{
controller.launch_dialog<AddFamilyMemberPresenter, AddFamilyMemberDialog>();
});
+ x.add("_Accounts").add("_Add Detail Account", () => {
+ controller.launch_dialog<AddNewAccountPresenter, AddNewAccountDialog>();
+ });
});
controller.load_region<StatusBarPresenter, StatusBarRegion>();
product/client/client.ui/presenters/WpfCommandBuilder.cs
@@ -2,11 +2,11 @@ using Autofac;
namespace presentation.windows.presenters
{
- public class WpfCommandBuilder : UICommandBuilder
+ public class WPFCommandBuilder : UICommandBuilder
{
IContainer container;
- public WpfCommandBuilder(IContainer container)
+ public WPFCommandBuilder(IContainer container)
{
this.container = container;
}
product/support/unit/client/presenters/AddFamilyMemberPresenterSpecs.cs
@@ -25,7 +25,7 @@ namespace unit.client.presenters
{
It should_invoke_the_save_command = () =>
{
- save_command.Verify(x => x.Execute(null));
+ save_command.received(x => x.Execute(null));
};
Establish context = () =>
product/support/unit/client/presenters/WpfCommandBuilderSpecs.cs
@@ -0,0 +1,52 @@
+using Autofac;
+using Machine.Specifications;
+using Moq;
+using presentation.windows;
+using presentation.windows.presenters;
+using It = Machine.Specifications.It;
+
+namespace unit.client.presenters
+{
+ public class WPFCommandBuilderSpecs
+ {
+ public class concern
+ {
+ Establish context = () =>
+ {
+ container = new Mock<IContainer>();
+ sut = new WPFCommandBuilder(container.Object);
+ };
+
+ static protected WPFCommandBuilder sut;
+ static protected Mock<IContainer> container;
+ }
+
+ public class when_building_a_command_to_bind_to_a_presenter : concern
+ {
+ It should_return_a_command_that_executes_the_command_when_run = () =>
+ {
+ command.received(x => x.run(presenter.Object));
+ };
+
+ Establish context = () =>
+ {
+ presenter = a<Presenter>();
+ command = a<UICommand>();
+ container.Setup(x => x.Resolve<UICommand>()).Returns(command.Object);
+ };
+
+ static Mock<T> a<T>() where T : class
+ {
+ return new Mock<T>();
+ }
+
+ Because b = () =>
+ {
+ sut.build<UICommand>(presenter.Object).Execute(null);
+ };
+
+ static Mock<Presenter> presenter;
+ static Mock<UICommand> command;
+ }
+ }
+}
\ No newline at end of file
product/support/unit/Mocking.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Linq.Expressions;
+using Moq;
+
+namespace unit
+{
+ public static class Mocking
+ {
+ public static void received<T>(this Mock<T> mock, Expression<Action<T>> action) where T : class
+ {
+ mock.Verify(action);
+ }
+
+ }
+}
\ No newline at end of file
product/support/unit/unit.csproj
@@ -31,6 +31,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Autofac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL" />
<Reference Include="Machine.Specifications">
<HintPath>..\..\..\thirdparty\mspec\Machine.Specifications.dll</HintPath>
</Reference>
@@ -48,6 +49,8 @@
</ItemGroup>
<ItemGroup>
<Compile Include="client\presenters\AddFamilyMemberPresenterSpecs.cs" />
+ <Compile Include="client\presenters\WpfCommandBuilderSpecs.cs" />
+ <Compile Include="Mocking.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\client\client.ui\client.csproj">