public void ShouldReadBothUsersAndAttemptConnectionBetweenThemThenUpdateConector()
        {
            //GIVEN
            var connectionInProgress = Any.Instance <IConnectionInProgress>();
            var user1Id     = Any.String();
            var user2Id     = Any.String();
            var lookup      = Substitute.For <IUserLookup>();
            var destination = Substitute.For <IConnectorDestination>();
            var connector   = Substitute.For <IConnector>();
            var connectee   = Any.Instance <IConnectee>();
            var command     = new ConnectionUseCase(connectionInProgress, user1Id, user2Id, lookup, destination);

            lookup.LookupConnector(user1Id).Returns(connector);
            lookup.LookupConnectee(user2Id).Returns(connectee);

            //WHEN
            command.Execute();

            //THEN
            Received.InOrder(() =>
            {
                connector.AttemptConnectionWith(connectee, connectionInProgress);
                connector.WriteTo(destination);
            });
        }
        public void ShouldReportInvalidOtherUserIdWhenInvalidConnecteeIdExceptionIsThrownFromLookup()
        {
            //GIVEN
            var connectionInProgress = Substitute.For <IConnectionInProgress>();
            var user1Id     = Any.String();
            var user2Id     = Any.String();
            var lookup      = Substitute.For <IUserLookup>();
            var destination = Substitute.For <IConnectorDestination>();
            var command     = new ConnectionUseCase(connectionInProgress, user1Id, user2Id, lookup, destination);

            lookup.LookupConnector(user1Id).Throws(Any.Instance <InvalidConnecteeIdException>());

            //WHEN
            command.Execute();

            //THEN
            XReceived.Only(() => connectionInProgress.Received(1).InvalidOtherUserId());
        }