CoolFace
Apppublic

Steph680/ormuz

sourceHugging Faceupdated 3d agoView on Hugging Face
0likes
test_stratcom.py66 linesDownload Raw Back to tests
1"""Tests de l'annuaire STRATCOM embarqué."""2 3import asyncio4 5from app import api6 7 8def test_annuaire_stratcom_charge_et_coherent():9    data = asyncio.run(api.stratcom())10    assert data["rubriques"] == ["belligerants", "golfe", "m3soh",11                                 "organisations", "monde"]12    canaux = data["canaux"]13    assert len(canaux) == 9614    # Chaque canal est complet et rattaché à une rubrique connue.15    for c in canaux:16        assert c["url"].startswith("http")17        assert c["rubrique"] in data["rubriques"]18        assert c["acteur"] and c["canal"]19    # Les ordres imposés : belligérants et tête des organisations.20    def acteurs(rubrique):21        vus, ordre = set(), []22        for c in sorted((c for c in canaux if c["rubrique"] == rubrique),23                        key=lambda c: c["rang"]):24            if c["acteur"] not in vus:25                vus.add(c["acteur"])26                ordre.append(c["acteur"])27        return ordre28 29    assert acteurs("belligerants") == ["Iran", "États-Unis", "Oman"]30    assert acteurs("organisations")[0] == "Organisation maritime internationale (IMO)"31    assert acteurs("m3soh")[:2] == ["Royaume-Uni", "France"]32 33 34def test_articles_stratcom_par_source(tmp_path, monkeypatch):35    import asyncio as _asyncio36 37    from app import db38    monkeypatch.setenv("DB_PATH", str(tmp_path / "t.db"))39 40    async def scenario():41        await db.init_db()42        async with db.connect() as conn:43            await conn.execute(44                "INSERT INTO news_events (url, published_at, title, title_fr,"45                " title_en, source, lang, category, relevance, classified_at)"46                " VALUES ('u1', ?, 'Original', 'Titre FR', 'Title EN', 'IRNA',"47                " 'en', 'declaration_iran', 70, '2026-08-21')",48                ((__import__('app.state', fromlist=['utc_now']).utc_now().isoformat()),))49            await conn.execute(50                "INSERT INTO news_events (url, published_at, title, source, lang,"51                " category, relevance, classified_at)"52                " VALUES ('u2', '2026-08-20T10:00:00', 'Presse ordinaire',"53                " 'Reuters', 'en', 'declaration_usa', 70, '2026-08-21')")54            await conn.commit()55        data = await api.stratcom_articles(days=60)56        # Seules les sources de la veille STRATCOM sont retournées.57        assert [a["url"] for a in data["articles"]] == ["u1"]58        assert data["articles"][0]["title_fr"] == "Titre FR"59        # Rattachement au classement client : IRNA -> belligérants.60        assert data["articles"][0]["rubrique"] == "belligerants"61        assert data["rubriques"] == ["belligerants", "golfe", "m3soh",62                                     "organisations", "autres"]63        assert "IRNA" in data["sources"] and "WAM (EAU)" in data["sources"]64 65    _asyncio.run(scenario())66