Commit 42503d5

mo khan <mo@mokhan.ca>
2010-07-17 22:05:53
started writing specs around the WPFCommandBuilder.
1 parent 36102d4
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">