Skip to content

Commit dcdd67b

Browse files
Add: ability to replace trigger statement in stub file
1 parent b981bc3 commit dcdd67b

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

src/Commands/MigrationCreator.php

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ protected function populateTriggerStub(string $stub, DatabaseTrigger $trigger):
3434
'{{ triggerTable }}' => $trigger->table,
3535
'{{ triggerEvent }}' => TriggerEvent::from($trigger->event)->name,
3636
'{{ triggerTiming }}' => TriggerTiming::from($trigger->timing)->name,
37+
'{{ triggerStatement }}' => $trigger->statement ?? '',
3738
];
3839

3940
foreach ($replacements as $search => $replacement) {

src/Commands/stubs/trigger.stub

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ return new class extends Migration
1414
$trigger->on('{{ triggerTable }}');
1515
$trigger->timing(TriggerTiming::{{ triggerTiming }});
1616
$trigger->event(TriggerEvent::{{ triggerEvent }});
17-
$trigger->statement('');
17+
$trigger->statement('{{ triggerStatement }}');
1818
});
1919
}
2020

tests/Commands/MigrationCreatorTest.php

+33
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,39 @@ public function it_can_populate_the_stub_file()
4444
);
4545
}
4646

47+
/** @test */
48+
public function it_can_populate_the_stub_file_providing_a_statement()
49+
{
50+
$creator = $this->getCreator();
51+
$creator->expects($this->any())->method('getDatePrefix')->willReturn('foo');
52+
53+
$creator
54+
->getFilesystem()
55+
->shouldReceive('get')
56+
->once()
57+
->with($creator->stubPath() . '/trigger.stub')
58+
->andReturn('{{ triggerName }} {{ triggerTable }} {{ triggerEvent }} {{ triggerTiming }} {{ triggerStatement }}');
59+
60+
$creator
61+
->getFilesystem()
62+
->shouldReceive('put')
63+
->once()
64+
->with(
65+
'path/foo_create_my_trigger_trigger.php',
66+
'my_trigger posts UPDATE BEFORE OLD.id'
67+
);
68+
69+
$creator->createTrigger(
70+
'path',
71+
(new DatabaseTrigger())
72+
->name('my_trigger')
73+
->on('posts')
74+
->timing(TriggerTiming::BEFORE)
75+
->event(TriggerEvent::UPDATE)
76+
->statement('OLD.id')
77+
);
78+
}
79+
4780
protected function getCreator(): MockObject
4881
{
4982
$files = Mockery::mock(FileSystem::class);

0 commit comments

Comments
 (0)