def test_socket_close(get_by_name):
    ("SocketManager().close() should unregister, pop it "
     "from the list of connected sockets and then close")

    socket = get_by_name.return_value

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)
    manager.poller = Mock(name='poller')
    manager.addresses = {
        'foobar': 'wooot'
    }
    # When I call close
    manager.close("foobar")

    # Then it should have unregistered the socket with the poller
    manager.poller.unregister.assert_called_once_with(socket)

    # And the socket should have been removed from the internal addresses
    manager.addresses.should.be.empty

    # And socket.close should have been called
    socket.close.assert_called_once_with()
def test_socket_close(get_by_name):
    ("SocketManager().close() should unregister, pop it "
     "from the list of connected sockets and then close")

    socket = get_by_name.return_value

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)
    manager.poller = Mock(name='poller')
    manager.addresses = {'foobar': 'wooot'}
    # When I call close
    manager.close("foobar")

    # Then it should have unregistered the socket with the poller
    manager.poller.unregister.assert_called_once_with(socket)

    # And the socket should have been removed from the internal addresses
    manager.addresses.should.be.empty

    # And socket.close should have been called
    socket.close.assert_called_once_with()
def test_socket_close_no_socket(get_by_name):
    ("SocketManager().close() should do nothing if a socket "
     "with that given name does not exist")

    # Background: no sockets will be returned by get_by_name
    get_by_name.return_value = None

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)
    manager.poller = Mock(name='poller')
    # When I call close
    manager.close("foobar")

    # Then it should not have called unregister
    manager.poller.unregister.called.should.be.false
def test_socket_close_no_socket(get_by_name):
    ("SocketManager().close() should do nothing if a socket "
     "with that given name does not exist")

    # Background: no sockets will be returned by get_by_name
    get_by_name.return_value = None

    # Given a zmq mock
    zmq = Mock()

    # And a context
    context = Mock()

    # And a socket manager
    manager = SocketManager(zmq, context)
    manager.poller = Mock(name='poller')
    # When I call close
    manager.close("foobar")

    # Then it should not have called unregister
    manager.poller.unregister.called.should.be.false