public void track_outstanding()
{
var foo1 = new Foo();
var foo2 = new Foo();
var foo3 = new Foo();
MessageHistory.Record(MessageTrack.ForSent(foo1));
MessageHistory.Record(MessageTrack.ForSent(foo2));
MessageHistory.Record(MessageTrack.ForSent(foo3));
MessageHistory.Outstanding().Select(x => x.Id)
.ShouldHaveTheSameElementsAs(foo1.Id.ToString(), foo2.Id.ToString(), foo3.Id.ToString());
MessageHistory.Record(MessageTrack.ForReceived(foo2));
MessageHistory.Outstanding().Select(x => x.Id)
.ShouldHaveTheSameElementsAs(foo1.Id.ToString(), foo3.Id.ToString());
MessageHistory.Record(MessageTrack.ForReceived(foo3));
MessageHistory.Outstanding().Select(x => x.Id)
.ShouldHaveTheSameElementsAs(foo1.Id.ToString());
}