From 48a02c24461e37ee4db164b00654a1cae69faf2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erko=20Sten=20H=C3=BCrges?= Date: Tue, 18 Mar 2025 11:27:45 +0200 Subject: [PATCH 1/5] added quotes to stringify --- tests/Feature/RangesCastingTest.php | 27 ++++++++++++++++++++++++-- tests/Unit/RangesSerializationTest.php | 10 +++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/tests/Feature/RangesCastingTest.php b/tests/Feature/RangesCastingTest.php index 8cbacb1..c2affeb 100644 --- a/tests/Feature/RangesCastingTest.php +++ b/tests/Feature/RangesCastingTest.php @@ -7,6 +7,7 @@ use Belamov\PostgresRange\Ranges\IntegerRange; use Belamov\PostgresRange\Ranges\TimeRange; use Belamov\PostgresRange\Ranges\TimestampRange; +use Belamov\PostgresRange\Ranges\TimestampTzRange; use Belamov\PostgresRange\Tests\TestCase; use Carbon\CarbonImmutable; use CreateRangesAdditionalTestTable; @@ -37,6 +38,28 @@ public function it_casts_timestamp_range_column(): void $this->assertEquals($to, $model->timestamp_range->to()->toDateTimeString()); } + /** @test */ + public function it_does_not_detect_changes_when_updating_with_same_timestamp_range(): void + { + $from = '2010-01-01 14:30:30'; + $to = '2010-01-01 15:30:30'; + $timestampRange = new TimestampRange($from, $to, '[', ']'); + $model = $this->createModel( + [ + 'timestamp_range' => $timestampRange, + ] + ); + + $model = $model->fresh(); + $model->update( + [ + 'timestamp_range' => $timestampRange, + ] + ); + + $this->assertEmpty($model->getChanges()); + } + /** @test */ public function it_casts_timestamptz_range_column(): void { @@ -234,8 +257,8 @@ protected function setUp(): void parent::setUp(); $this->withoutMockingConsoleOutput(); - include_once __DIR__.'/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; - include_once __DIR__.'/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; + include_once __DIR__ . '/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; + include_once __DIR__ . '/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; // run the up() method of that migration class (new CreateRangesTestTable())->up(); diff --git a/tests/Unit/RangesSerializationTest.php b/tests/Unit/RangesSerializationTest.php index c686381..5a918cd 100644 --- a/tests/Unit/RangesSerializationTest.php +++ b/tests/Unit/RangesSerializationTest.php @@ -16,19 +16,19 @@ class RangesSerializationTest extends TestCase public function timestamp_range_serializes_correctly(): void { $range = new TimestampRange('2010-01-01 14:30:30', '2010-01-01 15:30:30', '[', ']'); - $this->assertEquals('[2010-01-01 14:30:30,2010-01-01 15:30:30]', (string) $range); + $this->assertEquals('["2010-01-01 14:30:30","2010-01-01 15:30:30"]', (string) $range); $range = new TimestampRange('2010-01-01 14:30:30', '2010-01-01 15:30:30', '(', ']'); - $this->assertEquals('(2010-01-01 14:30:30,2010-01-01 15:30:30]', (string) $range); + $this->assertEquals('("2010-01-01 14:30:30","2010-01-01 15:30:30"]', (string) $range); $range = new TimestampRange('2010-01-01 14:30:30', '2010-01-01 15:30:30', '(', ')'); - $this->assertEquals('(2010-01-01 14:30:30,2010-01-01 15:30:30)', (string) $range); + $this->assertEquals('("2010-01-01 14:30:30","2010-01-01 15:30:30")', (string) $range); $range = new TimestampRange(null, '2010-01-01 15:30:30', '[', ']'); - $this->assertEquals('[,2010-01-01 15:30:30]', (string) $range); + $this->assertEquals('[,"2010-01-01 15:30:30"]', (string) $range); $range = new TimestampRange('2010-01-01 14:30:30', null, '[', ']'); - $this->assertEquals('[2010-01-01 14:30:30,]', (string) $range); + $this->assertEquals('["2010-01-01 14:30:30",]', (string) $range); $range = new TimestampRange(null, null, '[', ']'); $this->assertEquals('[,]', (string) $range); From f67199a8dd3edd6fd5a4c2ab615ed1f27e6ff322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erko=20Sten=20H=C3=BCrges?= Date: Tue, 18 Mar 2025 11:29:50 +0200 Subject: [PATCH 2/5] remove autoformat --- tests/Feature/RangesCastingTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/RangesCastingTest.php b/tests/Feature/RangesCastingTest.php index c2affeb..d2387dc 100644 --- a/tests/Feature/RangesCastingTest.php +++ b/tests/Feature/RangesCastingTest.php @@ -257,8 +257,8 @@ protected function setUp(): void parent::setUp(); $this->withoutMockingConsoleOutput(); - include_once __DIR__ . '/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; - include_once __DIR__ . '/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; + include_once __DIR__.'/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; + include_once __DIR__.'/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; // run the up() method of that migration class (new CreateRangesTestTable())->up(); From 0439be713e0b47d2429f852a06cf38fddb4d222f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erko=20Sten=20H=C3=BCrges?= Date: Tue, 18 Mar 2025 11:30:35 +0200 Subject: [PATCH 3/5] stringify --- src/Ranges/TimestampRange.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Ranges/TimestampRange.php b/src/Ranges/TimestampRange.php index 7aadb49..01149dc 100644 --- a/src/Ranges/TimestampRange.php +++ b/src/Ranges/TimestampRange.php @@ -35,4 +35,18 @@ public function forSql(): string { return "'$this'::tsrange"; } + + /** + * @return string + */ + public function __toString() + { + return sprintf( + '%s%s,%s%s', + $this->fromBound, + $this->from ? "\"{$this->from}\"" : '', + $this->to ? "\"{$this->to}\"" : '', + $this->toBound + ); + } } From 50d1ee9cd0381cad22b5ea1cc4891e62a4cd982d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erko=20Sten=20H=C3=BCrges?= Date: Tue, 18 Mar 2025 11:39:41 +0200 Subject: [PATCH 4/5] removed unused use --- tests/Feature/RangesCastingTest.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/Feature/RangesCastingTest.php b/tests/Feature/RangesCastingTest.php index d2387dc..41cc2f8 100644 --- a/tests/Feature/RangesCastingTest.php +++ b/tests/Feature/RangesCastingTest.php @@ -7,7 +7,6 @@ use Belamov\PostgresRange\Ranges\IntegerRange; use Belamov\PostgresRange\Ranges\TimeRange; use Belamov\PostgresRange\Ranges\TimestampRange; -use Belamov\PostgresRange\Ranges\TimestampTzRange; use Belamov\PostgresRange\Tests\TestCase; use Carbon\CarbonImmutable; use CreateRangesAdditionalTestTable; @@ -257,8 +256,8 @@ protected function setUp(): void parent::setUp(); $this->withoutMockingConsoleOutput(); - include_once __DIR__.'/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; - include_once __DIR__.'/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; + include_once __DIR__ . '/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; + include_once __DIR__ . '/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; // run the up() method of that migration class (new CreateRangesTestTable())->up(); From 1094d7e0edb3267a2be29e66127fe449d0a34c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erko=20Sten=20H=C3=BCrges?= Date: Tue, 18 Mar 2025 11:40:27 +0200 Subject: [PATCH 5/5] removed unused use --- tests/Feature/RangesCastingTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/RangesCastingTest.php b/tests/Feature/RangesCastingTest.php index 41cc2f8..003ff3b 100644 --- a/tests/Feature/RangesCastingTest.php +++ b/tests/Feature/RangesCastingTest.php @@ -256,8 +256,8 @@ protected function setUp(): void parent::setUp(); $this->withoutMockingConsoleOutput(); - include_once __DIR__ . '/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; - include_once __DIR__ . '/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; + include_once __DIR__.'/../database/migrations/0000_00_00_000000_create_ranges_test_table.php'; + include_once __DIR__.'/../database/migrations/0000_00_00_000001_create_ranges_additional_test_table.php'; // run the up() method of that migration class (new CreateRangesTestTable())->up();