Skip to content

Commit 93d0c38

Browse files
Update state (#29)
1 parent f46b2c4 commit 93d0c38

File tree

4 files changed

+28
-5
lines changed

4 files changed

+28
-5
lines changed

src/Actions/Update/Sync/UpdateStock.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public function update(Stock $stock): void
4949
$stock->update([
5050
'update' => false,
5151
'last_updated' => now(),
52+
'last_failed' => null,
53+
'fail_count' => 0,
5254
]);
5355

5456
event(new StockUpdatedEvent($stock));

src/Listeners/BulkOperationStatusListener.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ public function execute(BulkOperation $operation): void
1818
$stock = $operation->subject;
1919

2020
if ($operation->status === OperationStatus::Complete) {
21-
$stock->update(['last_updated' => now()]);
21+
$stock->update([
22+
'last_updated' => now(),
23+
'last_failed' => null,
24+
'fail_count' => 0,
25+
]);
2226

2327
event(new StockUpdatedEvent($stock));
2428

tests/Actions/Update/Sync/UpdateStockTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public function it_resets_update_when_product_does_not_exist(): void
3838
$model->refresh();
3939

4040
$this->assertFalse($model->update);
41+
$this->assertNull($model->last_updated);
4142
}
4243

4344
#[Test]
@@ -62,6 +63,8 @@ public function it_updates_simple_stock_and_backorders(): void
6263
$model = Stock::query()->create([
6364
'sku' => '::sku::',
6465
'update' => true,
66+
'last_failed' => now(),
67+
'fail_count' => 1,
6568
]);
6669

6770
/** @var UpdateStock $action */
@@ -72,6 +75,8 @@ public function it_updates_simple_stock_and_backorders(): void
7275

7376
$this->assertFalse($model->update);
7477
$this->assertNotNull($model->last_updated);
78+
$this->assertNull($model->last_failed);
79+
$this->assertEquals(0, $model->fail_count);
7580

7681
Event::assertDispatched(StockUpdatedEvent::class);
7782
}
@@ -95,6 +100,8 @@ public function it_updates_msi_stock(): void
95100
$model = Stock::query()->create([
96101
'sku' => '::sku::',
97102
'update' => true,
103+
'last_failed' => now(),
104+
'fail_count' => 1,
98105
]);
99106

100107
/** @var UpdateStock $action */
@@ -105,6 +112,8 @@ public function it_updates_msi_stock(): void
105112

106113
$this->assertFalse($model->update);
107114
$this->assertNotNull($model->last_updated);
115+
$this->assertNull($model->last_failed);
116+
$this->assertEquals(0, $model->fail_count);
108117

109118
Event::assertDispatched(StockUpdatedEvent::class);
110119
}

tests/Listeners/BulkOperationStatusListenerTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public function it_handles_complete_status(): void
2424
'sku' => 'sku',
2525
'in_stock' => true,
2626
'quantity' => 5,
27+
'last_failed' => now(),
28+
'fail_count' => 1,
2729
]);
2830

2931
/** @var BulkRequest $request */
@@ -47,11 +49,15 @@ public function it_handles_complete_status(): void
4749

4850
/** @var BulkOperationStatusListener $listener */
4951
$listener = app(BulkOperationStatusListener::class);
50-
5152
$listener->execute($operation);
5253

54+
$model->refresh();
55+
56+
$this->assertNotNull($model->last_updated);
57+
$this->assertNull($model->last_failed);
58+
$this->assertEquals(0, $model->fail_count);
59+
5360
Event::assertDispatched(StockUpdatedEvent::class);
54-
$this->assertNotNull($model->refresh()->last_updated);
5561
}
5662

5763
#[Test]
@@ -87,10 +93,12 @@ public function it_handles_failed_status(): void
8793

8894
/** @var BulkOperationStatusListener $listener */
8995
$listener = app(BulkOperationStatusListener::class);
90-
9196
$listener->execute($operation);
9297

98+
$model->refresh();
99+
100+
$this->assertNull($model->last_updated);
101+
93102
Event::assertNotDispatched(StockUpdatedEvent::class);
94-
$this->assertNull($model->refresh()->last_updated);
95103
}
96104
}

0 commit comments

Comments
 (0)