Implement asynchronous bumper rendering and add integration tests: refactor BumperAsset to support async rendering, introduce BumperRenderBackgroundService for processing, and create TeleWave.Integration.Tests with Testcontainers-Postgres for comprehensive testing of scheduling and bumper generation scenarios. Update documentation and ensure tests skip if Docker is not available.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using TeleWave.Application.Common.Interfaces;
|
||||
using TeleWave.Domain.Broadcast;
|
||||
|
||||
namespace TeleWave.Application.Broadcast.Bumpers;
|
||||
|
||||
/// <summary>
|
||||
/// Чистая сборка <see cref="BumperRenderSpec"/> из уже разрешённых входов (пути к постеру/фону/звуку,
|
||||
/// названия шоу). Общая точка для фонового рендерера заставок расписания и превью в админке.
|
||||
/// </summary>
|
||||
public static class BumperSpecFactory
|
||||
{
|
||||
public static BumperRenderSpec Build(
|
||||
BumperOptions bumper,
|
||||
BumperFont font,
|
||||
BumperTemplate template,
|
||||
BumperTextVariant variant,
|
||||
int alignedDurationSeconds,
|
||||
string fromName,
|
||||
string toName,
|
||||
string? audioPath,
|
||||
string? posterAbsolutePath,
|
||||
string? backgroundAbsolutePath
|
||||
)
|
||||
{
|
||||
var free = variant.Kind == BumperTextKind.Free;
|
||||
return new BumperRenderSpec(
|
||||
alignedDurationSeconds,
|
||||
bumper.Width,
|
||||
bumper.Height,
|
||||
template.BackgroundColor,
|
||||
template.BackgroundColor2,
|
||||
template.AccentColor,
|
||||
template.TextColor,
|
||||
font == BumperFont.Serif ? bumper.FontFileSerif : bumper.FontFileSans,
|
||||
free ? "" : variant.NowLabel,
|
||||
free ? "" : fromName,
|
||||
free ? "" : variant.NextLabel,
|
||||
free ? "" : toName,
|
||||
backgroundAbsolutePath,
|
||||
audioPath,
|
||||
posterAbsolutePath,
|
||||
free,
|
||||
variant.Line1,
|
||||
variant.Line2
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user