Skip to content

Commit 58ee8c3

Browse files
author
Andrey Helldar
committed
Method to be called on success
1 parent c955cf0 commit 58ee8c3

File tree

6 files changed

+128
-11
lines changed

6 files changed

+128
-11
lines changed

src/Support/Actionable.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,13 @@ public function allow(): bool
117117
{
118118
return true;
119119
}
120+
121+
/**
122+
* Method to be called when the job completes successfully
123+
*
124+
* @return void
125+
*/
126+
public function success(): void
127+
{
128+
}
120129
}

src/Support/Migrator.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ protected function runDown($file, $migration, $pretend)
8787
}
8888

8989
parent::runDown($file, $migration, $pretend);
90+
91+
$this->runSuccess($instance);
9092
}
9193

9294
/**
@@ -100,12 +102,16 @@ protected function runMigration($migration, $method)
100102
if ($this->enabledTransactions($migration)) {
101103
DB::transaction(function () use ($migration, $method) {
102104
parent::runMigration($migration, $method);
105+
106+
$this->runSuccess($migration);
103107
}, $this->transactionAttempts($migration));
104108

105109
return;
106110
}
107111

108112
parent::runMigration($migration, $method);
113+
114+
$this->runSuccess($migration);
109115
}
110116

111117
/**
@@ -175,4 +181,9 @@ protected function transactionAttempts($migration): int
175181

176182
return (int) abs($value);
177183
}
184+
185+
protected function runSuccess($migration): void
186+
{
187+
$migration->success();
188+
}
178189
}

tests/Commands/MigrateTest.php

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,22 @@ public function testOnce()
3737
$this->artisan('migrate:actions')->run();
3838

3939
$this->assertDatabaseCount($table, 1);
40-
$this->assertDatabaseCount($this->table, 6);
40+
$this->assertDatabaseCount($this->table, 7);
4141
$this->assertDatabaseMigrationDoesntLike($this->table, $table);
4242
$this->artisan('migrate:actions')->run();
4343

4444
$this->assertDatabaseCount($table, 2);
45-
$this->assertDatabaseCount($this->table, 6);
45+
$this->assertDatabaseCount($this->table, 7);
4646
$this->assertDatabaseMigrationDoesntLike($this->table, $table);
4747
$this->artisan('migrate:actions')->run();
4848

4949
$this->assertDatabaseCount($table, 3);
50-
$this->assertDatabaseCount($this->table, 6);
50+
$this->assertDatabaseCount($this->table, 7);
5151
$this->assertDatabaseMigrationDoesntLike($this->table, $table);
5252
$this->artisan('migrate:actions')->run();
5353

5454
$this->assertDatabaseCount($table, 4);
55-
$this->assertDatabaseCount($this->table, 6);
55+
$this->assertDatabaseCount($this->table, 7);
5656
$this->assertDatabaseMigrationDoesntLike($this->table, $table);
5757
}
5858

@@ -116,7 +116,7 @@ public function testSingleEnvironment()
116116
$this->artisan('migrate:actions')->run();
117117

118118
$this->assertDatabaseCount($table, 5);
119-
$this->assertDatabaseCount($this->table, 6);
119+
$this->assertDatabaseCount($this->table, 7);
120120
$this->assertDatabaseMigrationHas($this->table, 'run_on_all');
121121
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_production');
122122
$this->assertDatabaseMigrationHas($this->table, 'run_on_testing');
@@ -125,7 +125,7 @@ public function testSingleEnvironment()
125125
$this->artisan('migrate:actions')->run();
126126

127127
$this->assertDatabaseCount($table, 5);
128-
$this->assertDatabaseCount($this->table, 6);
128+
$this->assertDatabaseCount($this->table, 7);
129129
$this->assertDatabaseMigrationHas($this->table, 'run_on_all');
130130
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_production');
131131
$this->assertDatabaseMigrationHas($this->table, 'run_on_testing');
@@ -154,7 +154,7 @@ public function testManyEnvironments()
154154
$this->artisan('migrate:actions')->run();
155155

156156
$this->assertDatabaseCount($table, 5);
157-
$this->assertDatabaseCount($this->table, 6);
157+
$this->assertDatabaseCount($this->table, 7);
158158
$this->assertDatabaseMigrationHas($this->table, 'run_on_all');
159159
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_production');
160160
$this->assertDatabaseMigrationHas($this->table, 'run_on_testing');
@@ -165,7 +165,7 @@ public function testManyEnvironments()
165165
$this->artisan('migrate:actions')->run();
166166

167167
$this->assertDatabaseCount($table, 5);
168-
$this->assertDatabaseCount($this->table, 6);
168+
$this->assertDatabaseCount($this->table, 7);
169169
$this->assertDatabaseMigrationHas($this->table, 'run_on_all');
170170
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_production');
171171
$this->assertDatabaseMigrationHas($this->table, 'run_on_testing');
@@ -191,18 +191,37 @@ public function testAllow()
191191
$this->artisan('migrate:actions')->run();
192192

193193
$this->assertDatabaseCount($table, 5);
194-
$this->assertDatabaseCount($this->table, 6);
194+
$this->assertDatabaseCount($this->table, 7);
195195
$this->assertDatabaseMigrationHas($this->table, 'run_allow');
196196
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_disallow');
197197
$this->artisan('migrate:actions')->run();
198198

199199
$this->assertDatabaseCount($table, 5);
200-
$this->assertDatabaseCount($this->table, 6);
200+
$this->assertDatabaseCount($this->table, 7);
201201
$this->assertDatabaseMigrationHas($this->table, 'run_allow');
202202
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_disallow');
203203
$this->artisan('migrate:actions')->run();
204204
}
205205

206+
public function testUpSuccess()
207+
{
208+
$this->copyFiles();
209+
210+
$table = 'success';
211+
212+
$this->artisan('migrate:actions:install')->run();
213+
214+
$this->assertDatabaseCount($table, 0);
215+
$this->assertDatabaseCount($this->table, 0);
216+
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_success');
217+
$this->artisan('migrate:actions')->run();
218+
219+
$this->assertDatabaseCount($table, 2);
220+
$this->assertDatabaseCount($this->table, 7);
221+
$this->assertDatabaseMigrationHas($this->table, 'run_success');
222+
$this->artisan('migrate:actions')->run();
223+
}
224+
206225
public function testPathAsFileWithExtension()
207226
{
208227
$this->copyFiles();

tests/Commands/RollbackTest.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function testEnvironment()
6060
$this->artisan('migrate:actions')->run();
6161

6262
$this->assertDatabaseCount($table, 5);
63-
$this->assertDatabaseCount($this->table, 6);
63+
$this->assertDatabaseCount($this->table, 7);
6464
$this->assertDatabaseMigrationHas($this->table, 'run_on_all');
6565
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_production');
6666
$this->assertDatabaseMigrationHas($this->table, 'run_on_testing');
@@ -75,4 +75,28 @@ public function testEnvironment()
7575
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_testing');
7676
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_on_many_environments');
7777
}
78+
79+
public function testUpSuccess()
80+
{
81+
$this->copyFiles();
82+
83+
$table = 'success';
84+
85+
$this->artisan('migrate:actions:install')->run();
86+
87+
$this->assertDatabaseCount($table, 0);
88+
$this->assertDatabaseCount($this->table, 0);
89+
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_success');
90+
$this->artisan('migrate:actions')->run();
91+
92+
$this->assertDatabaseCount($table, 2);
93+
$this->assertDatabaseCount($this->table, 7);
94+
$this->assertDatabaseMigrationHas($this->table, 'run_success');
95+
$this->artisan('migrate:actions')->run();
96+
97+
$this->artisan('migrate:actions:rollback')->run();
98+
$this->assertDatabaseCount($table, 5);
99+
$this->assertDatabaseCount($this->table, 0);
100+
$this->assertDatabaseMigrationDoesntLike($this->table, 'run_success');
101+
}
78102
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
use DragonCode\LaravelActions\Support\Actionable;
4+
use Illuminate\Database\Query\Builder;
5+
use Illuminate\Support\Facades\DB;
6+
7+
class RunSuccess extends Actionable
8+
{
9+
public function up(): void
10+
{
11+
$this->table()->insert([
12+
'value' => 'foo',
13+
]);
14+
}
15+
16+
public function down(): void
17+
{
18+
$this->table()->insert([
19+
'value' => 'bar',
20+
]);
21+
}
22+
23+
public function success(): void
24+
{
25+
$this->table()->insert([
26+
'value' => 'success',
27+
]);
28+
}
29+
30+
protected function table(): Builder
31+
{
32+
return DB::table('success');
33+
}
34+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class CreateSuccessTable extends Migration
8+
{
9+
public function up()
10+
{
11+
Schema::create('success', function (Blueprint $table) {
12+
$table->string('value');
13+
});
14+
}
15+
16+
public function down()
17+
{
18+
Schema::dropIfExists('success');
19+
}
20+
}

0 commit comments

Comments
 (0)