using System.Collections.Generic; using Calculator.Domain; using Calculator.Infrastructure; using Calculator.Presentation.Commands; using MbUnit.Framework; using Rhino.Mocks; namespace Calculator.Test.presentation.commands { [TestFixture] public class StartupCommandTest { [SetUp] public void SetUp() { _mockery = new MockRepository( ); _initializeKeyPadCommand = _mockery.DynamicMock< IInitializeKeyPadCommand >( ); _registry = _mockery.DynamicMock< IComponentRegistry >( ); _resolver = _mockery.DynamicMock< IDependencyResolver >( ); } public IStartupCommand CreateSUT() { return new StartupCommand( _initializeKeyPadCommand, _registry, _resolver ); } [Test] public void should_execute_the_initialize_keypad_command() { using ( _mockery.Record( ) ) { using ( _mockery.Ordered() ) { Expect.Call(_registry.AllComponents()).Return(new List()); _initializeKeyPadCommand.Execute( ); } } using ( _mockery.Playback( ) ) { CreateSUT( ).Execute( ); } } [Test] public void should_register_each_component_in_the_component_registry_with_the_dependency_resolver() { var registeredComponent = new RegisteredComponent< ICalculator, StandardCalculator >( ); var registeredComponents = new List< IRegisteredComponent >{registeredComponent}; using ( _mockery.Record( ) ) { SetupResult.For( _registry.AllComponents( ) ).Return( registeredComponents ); _resolver.Register( registeredComponent ); } using ( _mockery.Playback( ) ) { CreateSUT( ).Execute( ); } } private IInitializeKeyPadCommand _initializeKeyPadCommand; private MockRepository _mockery; private IComponentRegistry _registry; private IDependencyResolver _resolver; } }