public void should_call_initializer_methods_in_right_order()
{
var counter = new Counter();
var bus = new TestBus();
bus.Starting += () => counter.Increment();
bus.Started += () => counter.Increment();
bus.Stopping += () => counter.Increment();
bus.Stopped += () => counter.Increment();
var testHostInitializer = new TestHostInitializer(counter);
var host = new Host();
var container = host.ContainerFactory.Invoke();
host.ContainerFactory = () =>
{
container.Configure(x =>
{
x.ForSingletonOf<IBus>().Use(bus);
x.ForSingletonOf<HostInitializer>().Add(testHostInitializer);
});
return container;
};
host.Start();
host.Stop();
testHostInitializer.CapturedContainer.ShouldEqual(container);
testHostInitializer.ConfigureContainerCounterValue.ShouldEqual(0);
testHostInitializer.BeforeStartCounterValue.ShouldEqual(0);
testHostInitializer.AfterStartCounterValue.ShouldEqual(2);
testHostInitializer.BeforeStopCounterValue.ShouldEqual(2);
testHostInitializer.AfterStopCounterValue.ShouldEqual(4);
}