Skip to content

Commit 49e2f15

Browse files
committed
fix(PageRequest): Update mode to PREVIEW_MODE and add publish date validation tests
- Changed default mode from WORKING to PREVIEW_MODE in PageRequest. - Added tests for withPublishDate method to ensure correct date format and instance creation. - Updated exception messages to reflect new mode and publish date requirements.
1 parent b7bf262 commit 49e2f15

2 files changed

Lines changed: 37 additions & 9 deletions

File tree

src/Request/PageRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ public function withPublishDate(string $publishDate): self
411411
{
412412
// Regex for strict ISO 8601 UTC: YYYY-MM-DDTHH:MM:SSZ
413413
$pattern = '/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$/';
414-
if (!preg_match($pattern, $publishDate)) {
414+
if (! preg_match($pattern, $publishDate)) {
415415
throw new InvalidArgumentException(
416416
sprintf('Invalid publish date "%s". Date must be in ISO 8601 UTC format (e.g., 2025-07-01T17:30:39Z)', $publishDate)
417417
);

tests/Request/PageRequestTest.php

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ public function testConstructorAppendsIndexToPagePathEndingWithSlash(): void
8282
public function testWithModeReturnsNewInstance(): void
8383
{
8484
$request1 = new PageRequest('/test');
85-
$request2 = $request1->withMode('WORKING');
85+
$request2 = $request1->withMode('PREVIEW_MODE');
8686

8787
$this->assertNotSame($request1, $request2);
8888
$this->assertNull($request1->getMode());
89-
$this->assertEquals('WORKING', $request2->getMode());
89+
$this->assertEquals('PREVIEW_MODE', $request2->getMode());
9090
}
9191

9292
/**
@@ -97,7 +97,7 @@ public function testWithModeThrowsExceptionForInvalidMode(): void
9797
$request = new PageRequest('/test');
9898

9999
$this->expectException(InvalidArgumentException::class);
100-
$this->expectExceptionMessage('Invalid mode "INVALID". Valid modes are: LIVE, WORKING, EDIT_MODE');
100+
$this->expectExceptionMessage('Invalid mode "INVALID". Valid modes are: LIVE, PREVIEW_MODE, EDIT_MODE');
101101

102102
$request->withMode('INVALID');
103103
}
@@ -239,27 +239,55 @@ public function testBuildQueryParamsReturnsEmptyArrayWhenNoParamsSet(): void
239239
$this->assertEquals([], $request->buildQueryParams());
240240
}
241241

242+
/**
243+
* Test that withPublishDate sets the publish date and returns a new instance
244+
*/
245+
public function testWithPublishDateReturnsNewInstance(): void
246+
{
247+
$request1 = new PageRequest('/test');
248+
$request2 = $request1->withPublishDate('2025-07-01T17:30:39Z');
249+
250+
$this->assertNotSame($request1, $request2);
251+
$this->assertNull($request1->getPublishDate());
252+
$this->assertEquals('2025-07-01T17:30:39Z', $request2->getPublishDate());
253+
}
254+
255+
/**
256+
* Test that withPublishDate throws an exception for invalid format
257+
*/
258+
public function testWithPublishDateThrowsExceptionForInvalidFormat(): void
259+
{
260+
$request = new PageRequest('/test');
261+
262+
$this->expectException(InvalidArgumentException::class);
263+
$this->expectExceptionMessage('Invalid publish date "2025-07-01 17:30:39". Date must be in ISO 8601 UTC format (e.g., 2025-07-01T17:30:39Z)');
264+
265+
$request->withPublishDate('2025-07-01 17:30:39');
266+
}
267+
242268
/**
243269
* Test that buildQueryParams returns correct params when all params are set
244270
*/
245271
public function testBuildQueryParamsReturnsCorrectParamsWhenAllParamsSet(): void
246272
{
247273
$request = new PageRequest('/test');
248274
$request = $request
249-
->withMode('WORKING')
275+
->withMode('PREVIEW_MODE')
250276
->withHostId(self::VALID_UUID)
251277
->withLanguageId(1)
252278
->withPersonaId('persona123')
253279
->withFireRules(true)
254-
->withDepth(2);
280+
->withDepth(2)
281+
->withPublishDate('2025-07-01T17:30:39Z');
255282

256283
$expectedParams = [
257-
'mode' => 'WORKING',
284+
'mode' => 'PREVIEW_MODE',
258285
'host_id' => self::VALID_UUID,
259286
'language_id' => 1,
260287
'com.dotmarketing.persona.id' => 'persona123',
261288
'fireRules' => 'true',
262289
'depth' => 2,
290+
'publishDate' => '2025-07-01T17:30:39Z',
263291
];
264292

265293
$this->assertEquals($expectedParams, $request->buildQueryParams());
@@ -271,7 +299,7 @@ public function testBuildQueryParamsReturnsCorrectParamsWhenAllParamsSet(): void
271299
public function testMethodChainingWorksCorrectly(): void
272300
{
273301
$request = (new PageRequest('/test'))
274-
->withMode('WORKING')
302+
->withMode('PREVIEW_MODE')
275303
->withHostId(self::VALID_UUID)
276304
->withLanguageId(1)
277305
->withPersonaId('persona123')
@@ -280,7 +308,7 @@ public function testMethodChainingWorksCorrectly(): void
280308

281309
$this->assertEquals('json', $request->getFormat());
282310
$this->assertEquals('/test', $request->getPagePath());
283-
$this->assertEquals('WORKING', $request->getMode());
311+
$this->assertEquals('PREVIEW_MODE', $request->getMode());
284312
$this->assertEquals(self::VALID_UUID, $request->getHostId());
285313
$this->assertEquals(1, $request->getLanguageId());
286314
$this->assertEquals('persona123', $request->getPersonaId());

0 commit comments

Comments
 (0)