Skip to content

Commit e091a12

Browse files
committed
fix: use project region when cache and database project initialization steps
1 parent 708723a commit e091a12

6 files changed

Lines changed: 26 additions & 6 deletions

File tree

src/Project/Initialization/CacheInitializationStep.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private function selectCacheCluster(ExecutionContext $context, string $region):
5656
if (!$cacheClusters->isEmpty() && $output->confirm('Would you like to use an existing cache cluster for this project?')) {
5757
$cacheCluster = $cacheClusters->firstWhereIdOrName($output->choiceWithResourceDetails('Which cache cluster would you like to use?', $cacheClusters));
5858
} elseif ($output->confirm($provisionPrompt)) {
59-
$cacheCluster = $context->provision(CacheCluster::class);
59+
$cacheCluster = $context->provision(CacheCluster::class, ['region' => $region]);
6060
}
6161

6262
return $cacheCluster instanceof CacheCluster ? $cacheCluster : null;

src/Project/Initialization/DatabaseInitializationStep.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ private function selectDatabaseServer(ExecutionContext $context, string $region)
8484
(!$databaseServers->isEmpty() && $output->confirm('Would you like to create a new one for this project instead?'))
8585
|| ($databaseServers->isEmpty() && $output->confirm(sprintf('Your team doesn\'t have any configured database servers in the "<comment>%s</comment>" region. Would you like to create one for this team first?', $region)))
8686
) {
87-
$databaseServer = $context->provision(DatabaseServer::class);
87+
$databaseServer = $context->provision(DatabaseServer::class, ['region' => $region]);
8888
}
8989

9090
return $databaseServer instanceof DatabaseServer ? $databaseServer : null;

src/Resource/Requirement/ResolveOrProvisionResourceRequirement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function fulfill(ExecutionContext $context, array $fulfilledRequirements
5555
try {
5656
return parent::fulfill($context, $fulfilledRequirements);
5757
} catch (NoResourcesFoundException $exception) {
58-
return $context->getProvisioner()->provision($this->resource, $context, $this->preFulfilledRequirements);
58+
return $context->getProvisioner()->provision($this->resource, $context, array_merge($fulfilledRequirements, $this->preFulfilledRequirements));
5959
}
6060
}
6161
}

tests/Unit/Project/Initialization/CacheInitializationStepTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public function testPerformProvisionsNewCacheClusterIfRequestedWhenNoneExist():
8383
$this->apiClient->shouldReceive('getCaches')->once()->andReturn(new ResourceCollection([]));
8484
$this->output->shouldReceive('confirm')->with('Would you like to use a cache cluster for this project?', false)->once()->andReturn(true);
8585
$this->output->shouldReceive('confirm')->with(\Mockery::pattern('/Your team doesn\'t have any configured cache clusters/'))->once()->andReturn(true);
86-
$this->context->shouldReceive('provision')->with(CacheCluster::class)->once()->andReturn($cacheCluster);
86+
$this->context->shouldReceive('provision')->with(CacheCluster::class, ['region' => 'us-east-1'])->once()->andReturn($cacheCluster);
8787

8888
$step = new CacheInitializationStep();
8989

@@ -101,7 +101,7 @@ public function testPerformProvisionsNewCacheClusterIfRequestedWhenSomeExist():
101101
$this->output->shouldReceive('confirm')->with('Would you like to use a cache cluster for this project?', false)->once()->andReturn(true);
102102
$this->output->shouldReceive('confirm')->with('Would you like to use an existing cache cluster for this project?')->once()->andReturn(false);
103103
$this->output->shouldReceive('confirm')->with('Would you like to create a new one for this project instead?')->once()->andReturn(true);
104-
$this->context->shouldReceive('provision')->with(CacheCluster::class)->once()->andReturn($cacheCluster);
104+
$this->context->shouldReceive('provision')->with(CacheCluster::class, ['region' => 'us-east-1'])->once()->andReturn($cacheCluster);
105105

106106
$step = new CacheInitializationStep();
107107

tests/Unit/Project/Initialization/DatabaseInitializationStepTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public function testPerformProvisionsNewServerIfRequested(): void
6767

6868
$this->apiClient->shouldReceive('getDatabaseServers')->once()->andReturn(new ResourceCollection([]));
6969
$this->output->shouldReceive('confirm')->with(\Mockery::pattern('/Your team doesn\'t have any configured database servers/'))->once()->andReturn(true);
70-
$this->context->shouldReceive('provision')->with(DatabaseServer::class)->once()->andReturn($databaseServer);
70+
$this->context->shouldReceive('provision')->with(DatabaseServer::class, ['region' => 'us-east-1'])->once()->andReturn($databaseServer);
7171
$this->output->shouldReceive('askSlug')->once()->andReturn('prefix_');
7272
$this->output->shouldReceive('warning')->once();
7373

tests/Unit/Resource/Requirement/ResolveOrProvisionResourceRequirementTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,26 @@ public function testFulfillProvisionsResourceIfNoneFound(): void
5555
$this->assertSame($resource, $requirement->fulfill($context));
5656
}
5757

58+
public function testFulfillProvisionsResourceWithMergedRequirements(): void
59+
{
60+
$context = \Mockery::mock(ExecutionContext::class);
61+
$definition = \Mockery::mock(ProvisionableResourceDefinitionInterface::class, ResolvableResourceDefinitionInterface::class);
62+
$provisioner = \Mockery::mock(ResourceProvisioner::class);
63+
$resource = \Mockery::mock(ResourceModelInterface::class);
64+
65+
$context->shouldReceive('getProvisioner')->andReturn($provisioner);
66+
67+
$definition->shouldReceive('resolve')->once()->andThrow(new NoResourcesFoundException('No resources found'));
68+
69+
$provisioner->shouldReceive('provision')->once()
70+
->with($definition, $context, ['fulfilled' => 'requirement', 'pre' => 'filled'])
71+
->andReturn($resource);
72+
73+
$requirement = new ResolveOrProvisionResourceRequirement($definition, 'Question?', ['pre' => 'filled']);
74+
75+
$this->assertSame($resource, $requirement->fulfill($context, ['fulfilled' => 'requirement']));
76+
}
77+
5878
public function testFulfillReturnsResolvedResource(): void
5979
{
6080
$context = \Mockery::mock(ExecutionContext::class);

0 commit comments

Comments
 (0)