Skip to content

Commit 95f3b55

Browse files
committed
chore: created tests for broken feature
1 parent e006219 commit 95f3b55

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Spatie\TypeScriptTransformer\Tests\FakeClasses;
4+
5+
enum StringBackedEnumWithSingleQuotes: string
6+
{
7+
case NO_QUOTE = 'no quote';
8+
case HAS_QUOTE = 'has quote \'';
9+
}

tests/Transformers/EnumTransformerTest.php

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use ReflectionClass;
1212
use Spatie\TypeScriptTransformer\Tests\FakeClasses\IntBackedEnum;
1313
use Spatie\TypeScriptTransformer\Tests\FakeClasses\StringBackedEnum;
14+
use Spatie\TypeScriptTransformer\Tests\FakeClasses\StringBackedEnumWithSingleQuotes;
1415
use Spatie\TypeScriptTransformer\Transformers\EnumTransformer;
1516
use Spatie\TypeScriptTransformer\TypeScriptTransformerConfig;
1617
use UnitEnum;
@@ -82,7 +83,7 @@
8283
assertEquals('type', $type->keyword);
8384
});
8485

85-
it('can transform a backed enum with integers into an enm', function () {
86+
it('can transform a backed enum with integers into an enum', function () {
8687
$transformer = new EnumTransformer(
8788
TypeScriptTransformerConfig::create()->transformToNativeEnums(true)
8889
);
@@ -113,3 +114,35 @@
113114
assertFalse($type->isInline);
114115
assertEquals('type', $type->keyword);
115116
});
117+
118+
it('can transform a backed enum with strings with single-quotes into a enum', function () {
119+
$transformer = new EnumTransformer(
120+
TypeScriptTransformerConfig::create()->transformToNativeEnums(true)
121+
);
122+
123+
$type = $transformer->transform(
124+
new ReflectionClass(StringBackedEnumWithSingleQuotes::class),
125+
'Enum'
126+
);
127+
128+
assertEquals("'NO_QUOTE' = 'no quote', 'HAS_QUOTE' = 'has quote \''", $type->transformed);
129+
assertTrue($type->missingSymbols->isEmpty());
130+
assertFalse($type->isInline);
131+
assertEquals('enum', $type->keyword);
132+
});
133+
134+
it('can transform a backed enum with strings with single-quotes into a union', function () {
135+
$transformer = new EnumTransformer(
136+
TypeScriptTransformerConfig::create()->transformToNativeEnums(false)
137+
);
138+
139+
$type = $transformer->transform(
140+
new ReflectionClass(StringBackedEnumWithSingleQuotes::class),
141+
'Enum'
142+
);
143+
144+
assertEquals("'no quote' | 'has quote \''", $type->transformed);
145+
assertTrue($type->missingSymbols->isEmpty());
146+
assertFalse($type->isInline);
147+
assertEquals('type', $type->keyword);
148+
});

0 commit comments

Comments
 (0)