def setUp(self):
     self.receiver = Mock(spec=IStreamReceiver)
     self.stream = Stream(None, None)
     self.protocol = TwitterStreamingProtocol(self.receiver, self.stream)
class TwitterStreamingProtocolTests(unittest.TestCase):
    def setUp(self):
        self.receiver = Mock(spec=IStreamReceiver)
        self.stream = Stream(None, None)
        self.protocol = TwitterStreamingProtocol(self.receiver, self.stream)

    def test_deletion_notice(self):
        line = '{"delete":{"status":{"id":1234,"id_str":"1234","user_id":3,"user_id_str":"3"}}}'
        self.protocol.lineReceived(line)
        self.assertTrue(self.receiver.status_deletion.called)

    def test_status(self):
        self.protocol.lineReceived(SAMPLE_STATUS)
        self.assertTrue(self.receiver.status.called)

    def test_location_deletion(self):
        line = '{"scrub_geo":{"user_id":14090452,"user_id_str":"14090452","up_to_status_id":23260136625,"up_to_status_id_str":"23260136625"}}'
        self.protocol.lineReceived(line)
        self.assertTrue(self.receiver.location_deletion.called)

    def test_rate_limitation(self):
        line = '{"limit":{"track":1234}}'
        self.protocol.lineReceived(line)
        self.assertTrue(self.receiver.rate_limitation.called)

    def test_json_object(self):
        line = '{"object":{"something":1234}}'
        self.protocol.lineReceived(line)
        self.assertTrue(self.receiver.json.called)

    def test_invalid(self):
        line = '{"object":{"something":'
        self.protocol.lineReceived(line)
        self.assertTrue(self.receiver.invalid.called)

    def test_disconnected(self):
        self.stream.state = CONNECTED
        self.protocol.connectionLost(None)
        self.assertTrue(self.receiver.disconnected.called)
        self.assertEquals(FINISHED, self.stream.state)

    def test_timeout(self):
        self.stream.state = CONNECTED
        self.protocol.timeoutConnection()
        self.assertTrue(self.receiver.disconnected.called)