Integration Baniere dans le backend

This commit is contained in:
mrKamoo
2026-10-02 12:45:11 +02:00
parent 1b91590cca
commit 429dd9de5e
20 changed files with 1170 additions and 84 deletions
@@ -115,4 +115,34 @@ class SignatureApiTest extends TestCase
$this->assertStringContainsString('/img/campagnes/enc.png', $html);
$this->assertStringContainsString('alt="Collecte"', $html);
}
public function test_une_seule_banniere_selon_priorite_ciblage_et_periode(): void
{
$base = ['tenant_id' => $this->tenant->id, 'alt_text' => 'x', 'starts_at' => now()->subDay(), 'ends_at' => now()->addDay()];
$group = DirectoryGroup::create(['tenant_id' => $this->tenant->id, 'entra_oid' => '33333333-3333-3333-3333-333333333333', 'display_name' => 'signature_mail_directeurs']);
Campaign::create($base + ['name' => 'Générale', 'image_path' => 'generale.png', 'priority' => 10]);
Campaign::create($base + ['name' => 'Directeurs', 'image_path' => 'directeurs.png', 'priority' => 50, 'width' => 450,
'link_url' => 'https://www.beziers-mediterranee.fr/voeux?a=1&b=2'])->groups()->attach($group->id);
// Jamais servies, malgré une priorité supérieure : inactive, pas commencée, terminée.
Campaign::create($base + ['name' => 'Inactive', 'image_path' => 'inactive.png', 'priority' => 100, 'active' => false]);
Campaign::create(['name' => 'Future', 'image_path' => 'future.png', 'priority' => 100, 'starts_at' => now()->addHour()] + $base);
Campaign::create(['name' => 'Passée', 'image_path' => 'passee.png', 'priority' => 100, 'ends_at' => now()->subHour()] + $base);
// Hors du groupe ciblé : campagne générale.
$html = $this->signature()->assertOk()->json('html');
$this->assertStringContainsString('/img/generale.png', $html);
$this->assertStringNotContainsString('directeurs.png', $html);
// Dans le groupe : la campagne ciblée, plus prioritaire, remplace la générale.
$group->members()->attach($this->agent->id);
$html = $this->signature()->json('html');
$this->assertStringContainsString('/img/directeurs.png', $html);
$this->assertStringContainsString('width="450"', $html);
$this->assertStringContainsString('<a href="https://www.beziers-mediterranee.fr/voeux?a=1&amp;b=2"', $html);
$this->assertSame(1, substr_count($html, '<img'));
// Pas de bannière dans la signature courte des réponses.
$this->signature(['context' => 'reply'])->assertJson(['html' => 'd Jean']);
}
}