|
8 | 8 | use DateTimeZone; |
9 | 9 | use Spatie\CalendarLinks\Generator; |
10 | 10 | use Spatie\CalendarLinks\Generators\Ics; |
| 11 | +use Spatie\CalendarLinks\Link; |
11 | 12 | use Spatie\CalendarLinks\Tests\TestCase; |
12 | 13 |
|
13 | 14 | /** |
@@ -94,4 +95,33 @@ public function it_can_generate_with_a_custom_reminder(): void |
94 | 95 | ]])->generate($this->createShortEventLink()) |
95 | 96 | ); |
96 | 97 | } |
| 98 | + |
| 99 | + /** @test */ |
| 100 | + public function it_escapes_backslashes_in_text_fields(): void |
| 101 | + { |
| 102 | + $link = Link::create( |
| 103 | + 'Event with \\ backslash', |
| 104 | + DateTime::createFromFormat('Y-m-d H:i', '2024-01-01 09:00', new DateTimeZone('UTC')), |
| 105 | + DateTime::createFromFormat('Y-m-d H:i', '2024-01-01 10:00', new DateTimeZone('UTC')), |
| 106 | + )->description('Path: C:\\Users\\test'); |
| 107 | + |
| 108 | + $output = $this->generator()->generate($link); |
| 109 | + |
| 110 | + $this->assertStringContainsString('SUMMARY:Event with \\\\ backslash', $output); |
| 111 | + $this->assertStringContainsString('DESCRIPTION:Path: C:\\\\Users\\\\test', $output); |
| 112 | + } |
| 113 | + |
| 114 | + /** @test */ |
| 115 | + public function it_escapes_newlines_as_backslash_n(): void |
| 116 | + { |
| 117 | + $link = Link::create( |
| 118 | + 'Event', |
| 119 | + DateTime::createFromFormat('Y-m-d H:i', '2024-01-01 09:00', new DateTimeZone('UTC')), |
| 120 | + DateTime::createFromFormat('Y-m-d H:i', '2024-01-01 10:00', new DateTimeZone('UTC')), |
| 121 | + )->description("Line 1\r\nLine 2\rLine 3\nLine 4"); |
| 122 | + |
| 123 | + $output = $this->generator()->generate($link); |
| 124 | + |
| 125 | + $this->assertStringContainsString('DESCRIPTION:Line 1\\nLine 2\\nLine 3\\nLine 4', $output); |
| 126 | + } |
97 | 127 | } |
0 commit comments