Skip to content

Commit 1459e8c

Browse files
fixed transformers configuration leaking between versions (#706)
1 parent 9482d3c commit 1459e8c

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

src/Configuration/GeneratorConfigCollection.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ public function register(string $name, array $config): GeneratorConfig
4141
{
4242
$this->apis[$name] = $generatorConfig = new GeneratorConfig(
4343
config: array_merge(config('scramble') ?: [], $config),
44-
parametersExtractors: $this->apis[Scramble::DEFAULT_API]->parametersExtractors,
45-
operationTransformers: $this->apis[Scramble::DEFAULT_API]->operationTransformers,
46-
documentTransformers: $this->apis[Scramble::DEFAULT_API]->documentTransformers,
47-
serverVariables: $this->apis[Scramble::DEFAULT_API]->serverVariables,
44+
parametersExtractors: clone $this->apis[Scramble::DEFAULT_API]->parametersExtractors,
45+
operationTransformers: clone $this->apis[Scramble::DEFAULT_API]->operationTransformers,
46+
documentTransformers: clone $this->apis[Scramble::DEFAULT_API]->documentTransformers,
47+
serverVariables: clone $this->apis[Scramble::DEFAULT_API]->serverVariables,
4848
);
4949

5050
return $generatorConfig;

tests/GeneratorConfigTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ public function registered_api_exposed_explicitly()
102102
collect($routes->getRoutes())->firstWhere('uri', 'docs/v2/openapi.json')
103103
);
104104
}
105+
106+
/** @test */
107+
#[WithProviders([UsesCommonConfiguration_GeneratorConfigTest::class])]
108+
public function uses_common_configurations()
109+
{
110+
$defaultConfig = Scramble::getConfigurationsInstance()->get('default');
111+
$v2Config = Scramble::getConfigurationsInstance()->get('v2');
112+
113+
$this->assertEquals(['common', 'only-default'], $defaultConfig->documentTransformers->all());
114+
$this->assertEquals(['common', 'only-v2'], $v2Config->documentTransformers->all());
115+
}
105116
}
106117

107118
class DisablesExposedRoutes_GeneratorConfigTest extends ServiceProvider
@@ -147,6 +158,18 @@ public function boot()
147158
}
148159
}
149160

161+
class UsesCommonConfiguration_GeneratorConfigTest extends ServiceProvider
162+
{
163+
public function boot()
164+
{
165+
Scramble::configure()->withDocumentTransformers('common');
166+
167+
Scramble::registerApi('v2')->withDocumentTransformers('only-v2');
168+
169+
Scramble::configure()->withDocumentTransformers('only-default');
170+
}
171+
}
172+
150173
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)]
151174
class WithProviders implements Invokable
152175
{

0 commit comments

Comments
 (0)