feat: report the source export timestamp on every travel export page
This commit is contained in:
1 parent
c2c55bc8b2
commit
272c811f4f
6 files changed
+49
-5
No files matched your search
@@ -30,7 +30,7 @@ class ExportControllerTest extends TestCase
|
||||
$first = $this->call(new TravelExportQuery(1, 5))['meta'];
|
||||
$last = $this->call(new TravelExportQuery(3, 5))['meta'];
|
||||
|
||||
foreach (['total', 'totalPages', 'skipped', 'pickupsWithoutMasterData', 'generatedAt'] as $key) {
|
||||
foreach (['total', 'totalPages', 'skipped', 'pickupsWithoutMasterData', 'sourceGeneratedAt', 'generatedAt'] as $key) {
|
||||
self::assertSame($first[$key], $last[$key], $key.' must not vary by page');
|
||||
}
|
||||
}
|
||||
@@ -78,6 +78,18 @@ class ExportControllerTest extends TestCase
|
||||
self::assertSame(7, $meta['skipped']);
|
||||
self::assertSame(21, $meta['pickupsWithoutMasterData']);
|
||||
self::assertSame('2026-09-29T03:20:00+02:00', $meta['generatedAt']);
|
||||
self::assertSame('2026-09-28T23:10:15+02:00', $meta['sourceGeneratedAt']);
|
||||
}
|
||||
|
||||
public function testAnUnknownSourceExportIsNullRatherThanOmitted(): void
|
||||
{
|
||||
$builder = $this->createStub(TravelExportBuilder::class);
|
||||
$builder->method('build')->willReturn(new TravelExport([], 0, 0, new \DateTimeImmutable()));
|
||||
|
||||
$meta = json_decode((string) $this->controller($builder)->travels(new TravelExportQuery())->getContent(), true)['meta'];
|
||||
|
||||
self::assertArrayHasKey('sourceGeneratedAt', $meta);
|
||||
self::assertNull($meta['sourceGeneratedAt']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,6 +122,7 @@ class ExportControllerTest extends TestCase
|
||||
$skipped,
|
||||
$withoutMasterData,
|
||||
new \DateTimeImmutable('2026-09-29 03:20:00', new \DateTimeZone('Europe/Berlin')),
|
||||
new \DateTimeImmutable('2026-09-28 23:10:15', new \DateTimeZone('Europe/Berlin')),
|
||||
));
|
||||
|
||||
$response = $this->controller($builder)->travels($query ?? new TravelExportQuery());
|
||||
|
||||
@@ -156,6 +156,18 @@ class TravelExportBuilderTest extends TestCase
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function testCarriesTheSourceExportTimestamp(): void
|
||||
{
|
||||
$export = $this->build(null, ['Ziel_1.xml'], "22.09.2026 11:10:15\r\nLetzte \xDCbertragung\r\nAnzahl \xDCbertragene Dateien: 177\r\nVollexport\r\n");
|
||||
|
||||
self::assertSame('2026-09-22T11:10:15+02:00', $export->sourceGeneratedAt?->format('c'));
|
||||
}
|
||||
|
||||
public function testTheSourceExportTimestampIsNullWithoutAMarker(): void
|
||||
{
|
||||
self::assertNull($this->build()->sourceGeneratedAt);
|
||||
}
|
||||
|
||||
private function rowFor(string $key): array
|
||||
{
|
||||
foreach ($this->build()->rows as $row) {
|
||||
@@ -170,7 +182,7 @@ class TravelExportBuilderTest extends TestCase
|
||||
/**
|
||||
* @param list<string> $files
|
||||
*/
|
||||
private function build(?string $xml = null, array $files = ['Ziel_1.xml']): TravelExport
|
||||
private function build(?string $xml = null, array $files = ['Ziel_1.xml'], ?string $marker = null): TravelExport
|
||||
{
|
||||
$contents = [
|
||||
'Ziel_1.xml' => $xml ?? (string) file_get_contents(__DIR__.'/../Resources/travel_export_data.xml'),
|
||||
@@ -183,7 +195,10 @@ class TravelExportBuilderTest extends TestCase
|
||||
$files,
|
||||
)));
|
||||
$filesystem->method('read')->willReturnCallback(
|
||||
static fn (string $path): string => $contents[$path] ?? ''
|
||||
static fn (string $path): string => 'uebertragung.info' === $path ? (string) $marker : $contents[$path] ?? ''
|
||||
);
|
||||
$filesystem->method('fileExists')->willReturnCallback(
|
||||
static fn (string $path): bool => 'uebertragung.info' === $path && null !== $marker
|
||||
);
|
||||
|
||||
$hotelLoader = $this->createStub(HotelLoader::class);
|
||||
|
||||
Reference in new issue
Block a user