def test_file_bridge(self, mock_raise, mock_request):
     convoy = Convoy(self.config)
     for i in xrange(0, 2):
         convoy.documents_transfer_queue.put({
             'get_url':
             'http://fs.com/item_{}'.format(i),
             'upload_url':
             'http://fex.com/item_{}'.format(i)
         })
     convoy.auctions_client = mock.MagicMock()
     convoy.auctions_client.get_file.side_effect = [
         ('this is a file content', 'filename'),
         Exception('Something went wrong.'),
         ('this is a file content', 'filename')
     ]
     convoy.stop_transmitting = mock.MagicMock()
     convoy.stop_transmitting.__nonzero__.side_effect = [
         False, False, False, False, True, True
     ]
     self.assertEqual(convoy.documents_transfer_queue.qsize(), 2)
     convoy.file_bridge()
     self.assertEqual(convoy.documents_transfer_queue.qsize(), 0)
     self.assertEqual(convoy.auctions_client.get_file.call_count, 3)
     self.assertEqual(
         convoy.auctions_client.ds_client.document_upload_not_register.
         call_count, 2)
    def test_process_single_auction(self, mock_loki_process, mock_raise,
                                    mock_request, mock_info, mock_warning):

        auction_id = uuid4().hex
        auction_doc = munchify({
            "data": {
                'status': 'unsuccessful',
                'id': auction_id,
                'merchandisingObject': uuid4().hex,
                'procurementMethodType': 'sellout.english'
            }
        })
        convoy = Convoy(self.config)
        convoy.auctions_client = mock.MagicMock()
        convoy.auctions_client.get_auction.return_value = auction_doc

        convoy.process_single_auction(auction_id)

        mock_loki_process.assert_called_with(auction_doc['data'])
        mock_info.assert_called_with('Received auction {} in status {}'.format(
            auction_id,
            auction_doc['data'].status,
        ),
                                     extra={
                                         'MESSAGE_ID': GET_AUCTION_MESSAGE_ID,
                                         'STATUS': auction_doc['data'].status
                                     })

        # Auction can not be found
        convoy.auctions_client.get_auction.side_effect = ResourceNotFound

        convoy.process_single_auction(auction_id)

        assert mock_loki_process.call_count == 1
        mock_warning.assert_called_with(
            'Auction object {} not found'.format(auction_id))