import os
import unittest
import tempfile
from unittest.mock import patch

import config
from database import Database


class ConfigTest(unittest.TestCase):
    def test_list_url_has_a_valid_separator_and_a_date_range(self):
        with patch.object(config, "SEAO_LIST_URL", "https://example.test/list"):
            url = config.build_list_url()
        self.assertIn("?DtePubCcFrm=", url)
        self.assertIn("DtePubCcTo=", url)

    def test_empty_list_url_is_rejected(self):
        with patch.object(config, "SEAO_LIST_URL", ""):
            with self.assertRaises(ValueError):
                config.build_list_url()

    def test_existing_contract_is_refreshed_without_losing_detail_data(self):
        with tempfile.TemporaryDirectory() as directory:
            db = Database(os.path.join(directory, 'seao.db'))
            db.insert_contract({'item_id': 'one', 'status': 'Ouvert', 'winning_bidder': '', 'contract_price': ''})
            db.insert_contract({'item_id': 'one', 'status': 'Contrat conclu', 'winning_bidder': 'Atelier Test', 'contract_price': '10,00'})
            contract = db.get_recent_contracts(1)[0]
            self.assertEqual('Contrat conclu', contract['status'])
            self.assertEqual('Atelier Test', contract['winning_bidder'])
