public void Correctly_executes_service_agents()
		{
			MockRepository mocks = new MockRepository();

			IApplicationSettings settings = mocks.CreateMock<IApplicationSettings>();
			ITypeActivator activator = mocks.CreateMock<ITypeActivator>();
			IServiceAgentFactory factory = mocks.CreateMock<IServiceAgentFactory>();
			IServiceAgent serviceAgent1 = mocks.CreateMock<IServiceAgent>();
			IServiceAgent serviceAgent2 = mocks.CreateMock<IServiceAgent>();
			IServiceAgent[] serviceAgents = new IServiceAgent[] { serviceAgent1, serviceAgent2 };

			IServiceAgentAggregator aggregator = new ServiceAgentAggregator(settings, activator);

			using (mocks.Record())
			{
				Expect.Call(settings.GetServiceAgentFactory()).Return("serviceAgentType");
				Expect.Call(activator.ActivateType<IServiceAgentFactory>("serviceAgentType")).Return(factory);
				Expect.Call(factory.GetServiceAgents()).Return(serviceAgents);

				Expect.Call(serviceAgent1.AgentName).Return("FirstAgent").Repeat.Any();
				serviceAgent1.Run();

				Expect.Call(serviceAgent2.AgentName).Return("SecondAgent").Repeat.Any();
				serviceAgent2.Run();
			}

			using (mocks.Playback())
			{
				aggregator.ExecuteServiceAgentCycle();
			}

			mocks.VerifyAll();
		}
		public void Should_continue_with_next_agents_event_if_one_agent_fails()
		{
			ApplicationException exception = new ApplicationException("Test Exception");

			MockRepository mocks = new MockRepository();

			IApplicationSettings settings = mocks.CreateMock<IApplicationSettings>();
			ITypeActivator activator = mocks.CreateMock<ITypeActivator>();
			IServiceAgentFactory factory = mocks.CreateMock<IServiceAgentFactory>();

			IServiceAgent serviceAgent1 = mocks.CreateMock<IServiceAgent>();
			IServiceAgent serviceAgent2 = mocks.CreateMock<IServiceAgent>();

			IServiceAgent[] serviceAgents = new IServiceAgent[] { serviceAgent1, serviceAgent2 };


			IServiceAgentAggregator aggregator = new ServiceAgentAggregator(settings, activator);

			using (mocks.Record())
			{
				Expect.Call(settings.GetServiceAgentFactory()).Return("serviceAgentType");
				Expect.Call(activator.ActivateType<IServiceAgentFactory>("serviceAgentType")).Return(factory);
				Expect.Call(factory.GetServiceAgents()).Return(serviceAgents);

				Expect.Call(serviceAgent1.AgentName).Return("FirstAgent").Repeat.Any();
				serviceAgent1.Run();
				LastCall.On(serviceAgent1).Throw(exception);

				Expect.Call(serviceAgent2.AgentName).Return("SecondAgent").Repeat.Any();
				serviceAgent2.Run();
			}

			using (mocks.Playback())
			{
				aggregator.ExecuteServiceAgentCycle();
			}

			mocks.VerifyAll();
		}