public void A_new_client_can_be_registered_Observer()
{
// here we use the observer pattern to register an action (the subscriber) to
// handle an event of type ClientRegistered which will be raised by the entity (the publisher)
var eventHelper = new EventHandlerStub();
DomainEvent.Current.Subscribe<ClientRegistered>(eventHelper.Handle);
var idNumber = new IdentityNumber("5008035176089");
var telephoneNumber = new TelephoneNumber("0125552222");
var clientName = new PersonName("Adrian", "Freemantle");
new Client(idNumber, clientName, telephoneNumber);
eventHelper.RaisedEvents.Count.ShouldBe(1);
eventHelper.RaisedEvents.First().ShouldBeTypeOf<ClientRegistered>();
((ClientRegistered)eventHelper.RaisedEvents.First()).ClientId.ShouldBe(idNumber.Number);
((ClientRegistered)eventHelper.RaisedEvents.First()).FirstName.ShouldBe(clientName.FirstName);
((ClientRegistered)eventHelper.RaisedEvents.First()).Surname.ShouldBe(clientName.Surname);
((ClientRegistered)eventHelper.RaisedEvents.First()).TelephoneNumber.ShouldBe(telephoneNumber.Number);
}