public void Should_show_that_the_specified_type_was_received()
        {
            var consumer = new PingPongConsumer();

            using (IUnsubscribeAction unsubscribe = consumer.Subscribe(LocalBus).Disposable())
            {
                var pingMessage = new PingMessage();
                LocalBus.Publish(pingMessage);
                LocalBus.Publish(new PongMessage(pingMessage.CorrelationId));

                consumer.Received.Any <PingMessage>().ShouldBeTrue();
                consumer.Received.Any <PongMessage>(
                    (received, message) => message.CorrelationId == pingMessage.CorrelationId).ShouldBeTrue();
            }
        }
        public void Should_distinguish_multiple_events()
        {
            var consumer = new PingPongConsumer();

            using (IUnsubscribeAction unsubscribe = consumer.Subscribe(LocalBus).Disposable())
            {
                var pingMessage  = new PingMessage();
                var pingMessage2 = new PingMessage();
                LocalBus.Publish(pingMessage);
                LocalBus.Publish(pingMessage2);

                consumer.Received.Any <PingMessage>(
                    (received, message) => message.CorrelationId == pingMessage.CorrelationId).ShouldBeTrue();
                consumer.Received.Any <PingMessage>(
                    (received, message) => message.CorrelationId == pingMessage2.CorrelationId).ShouldBeTrue();
            }
        }
        public void The_user_should_be_pending()
        {
            Stopwatch timer = Stopwatch.StartNew();

            var controller = new RegisterUserController(LocalBus);

            using (IUnsubscribeAction unsubscribe = LocalBus.SubscribeInstance(controller).Disposable())
            {
                RemoteBus.ShouldHaveSubscriptionFor <UserRegistrationPending>();
                RemoteBus.ShouldHaveSubscriptionFor <UserRegistrationComplete>();

                bool complete = controller.RegisterUser("username", "password", "Display Name", "*****@*****.**");

                complete.ShouldBeTrue("The user should be pending");

                timer.Stop();
                Debug.WriteLine(string.Format("Time to handle message: {0}ms", timer.ElapsedMilliseconds));

                complete = controller.ValidateUser();

                complete.ShouldBeTrue("The user should be complete");
            }
        }