Skip to content

Commit 1dc1ae5

Browse files
committed
fix: 🐛 error on select after delete
Track removed rows and return with response Fixes #16
1 parent 48558ad commit 1dc1ae5

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

lib/src/mock_supabase_http_client.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -468,12 +468,18 @@ class MockSupabaseHttpClient extends BaseClient {
468468
statusCode: 400, request: request);
469469
}
470470

471+
List removedItems = [];
471472
if (_database.containsKey(tableKey)) {
472-
_database[tableKey]!.removeWhere(
473-
(row) => _matchesFilters(row: row, filters: queryParams));
473+
_database[tableKey]!.removeWhere((row) {
474+
final matched = _matchesFilters(row: row, filters: queryParams);
475+
if (matched) {
476+
removedItems.add(row);
477+
}
478+
return matched;
479+
});
474480
}
475481

476-
return _createResponse({'message': 'Deleted'}, request: request);
482+
return _createResponse(removedItems, request: request);
477483
}
478484

479485
StreamedResponse _handleSelect(

test/mock_supabase_http_client_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,17 @@ void main() {
8686
final posts = await mockSupabase.from('posts').select();
8787
expect(posts.length, 0);
8888
});
89+
90+
test('Delete then select', () async {
91+
// Test deleting a record
92+
await mockSupabase
93+
.from('posts')
94+
.insert({'id': 1, 'title': 'To be deleted'});
95+
final posts =
96+
await mockSupabase.from('posts').delete().eq('id', 1).select();
97+
expect(posts.length, 1);
98+
});
99+
89100
test('Select all columns', () async {
90101
// Test selecting all records
91102
await mockSupabase.from('posts').insert([

0 commit comments

Comments
 (0)