def _test_no_db_amqp(self):
        db_mamanger = DBManagerMock()
        heap = Heap()
        cfg = Config('test')
        worker = Worker(db_mamanger, heap, cfg, poll_interval=100500,
                        default_timeout=10050, pending=tuple())
        worker._amqp_channel_source = AMQPChannelMock()
        worker._amqp_channel_trigger = AMQPChannelMock()
        date = datetime.now(pytz.utc)
        date -= timedelta(microseconds=date.microsecond % 1000)

        def make_msg_bytes(msg):
            return json.dumps(msg, default=json_util.default).encode("utf-8")

        msg = {"action": "enqueue", "due_date": date, "data": "hello"}
        msg_data = make_msg_bytes(msg)
        yield from worker._amqp_callback_source(
            msg_data, EnvelopeMock(), PropertiesMock())
        self.assertEqual(1, worker._heap.size())
        self.assertEqual(date, worker._heap.min()[0])
        self.assertEqual("", worker._heap.min()[1][0])
        self.assertEqual(1, worker._heap.min()[1][1])
        self.assertIsNone(worker._heap.min()[1][2])
        self.assertEqual("hello", worker._heap.min()[1][4])
        date -= timedelta(days=10)
        msg = {"action": "enqueue", "due_date": date, "data": "world",
               "id": "unique"}
        msg_data = make_msg_bytes(msg)
        yield from worker._amqp_callback_source(
            msg_data, EnvelopeMock(), PropertiesMock())
        self.assertEqual(2, worker._heap.size())
        self.assertEqual(date, worker._heap.min()[0])
        self.assertEqual("unique", worker._heap.min()[1][0])
        self.assertEqual(2, worker._heap.min()[1][1])
        self.assertIsNone(worker._heap.min()[1][2])
        self.assertEqual("world", worker._heap.min()[1][4])
        date += timedelta(days=5)
        msg = {"action": "enqueue", "due_date": date, "data": "other",
               "expire_in": 1}
        msg_data = make_msg_bytes(msg)
        yield from worker._amqp_callback_source(
            msg_data, EnvelopeMock(), PropertiesMock())
        self.assertEqual(3, worker._heap.size())
        self.assertEqual("world", worker._heap.min()[1][4])
        self.assertEqual(date, worker._heap._list[2][0])
        self.assertEqual("", worker._heap._list[2][1][0])
        self.assertEqual(3, worker._heap._list[2][1][1])
        self.assertEqual(1, worker._heap._list[2][1][2])
        self.assertEqual("other", worker._heap._list[2][1][4])
        tasks = worker._poll()
        for task in tasks:
            yield from task
        self.assertEqual(0, worker._heap.size())
        self.assertEqual(2, len(worker._amqp_channel_trigger.published))
        self.assertEqual(2, len(worker._pending_tasks))

        msg = {"action": "enqueue", "due_date": date, "data": "hello"}
        msg_data = make_msg_bytes(msg)
        yield from worker._amqp_callback_source(
            msg_data, EnvelopeMock(), PropertiesMock())
        self.assertEqual(1, worker._heap.size())
        msg = {"action": "cancel", "id": 4}
        msg_data = make_msg_bytes(msg)
        yield from worker._amqp_callback_source(
            msg_data, EnvelopeMock(), PropertiesMock())
        self.assertEqual(1, worker._heap.size())
        self.assertIn(4, worker._cancelled_tasks)
        tasks = worker._poll()
        self.assertEqual(0, len(tasks))