Skip to content

Commit 48558ad

Browse files
committed
fix: 🐛 error on select after update
Track updated rows and return with response Fixes #16
1 parent 70ec539 commit 48558ad

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

lib/src/mock_supabase_http_client.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,18 +373,22 @@ class MockSupabaseHttpClient extends BaseClient {
373373
final queryParams = request.url.queryParameters;
374374
var updated = false;
375375

376+
// Track updated rows
377+
final updatedRows = [];
378+
376379
// Update items that match the filters
377380
if (_database.containsKey(tableKey)) {
378381
for (var row in _database[tableKey]!) {
379382
if (_matchesFilters(row: row, filters: queryParams)) {
380383
row.addAll(data);
381384
updated = true;
385+
updatedRows.add(row);
382386
}
383387
}
384388
}
385389

386390
if (updated) {
387-
return _createResponse(data, request: request);
391+
return _createResponse(updatedRows, request: request);
388392
} else {
389393
return _createResponse({'error': 'Not found'},
390394
statusCode: 404, request: request);

test/mock_supabase_http_client_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,20 @@ void main() {
6363
expect(posts.first, {'id': 1, 'title': 'Updated title'});
6464
});
6565

66+
test('Update then select', () async {
67+
// Test updating a record
68+
await mockSupabase
69+
.from('posts')
70+
.insert({'id': 1, 'title': 'Original title'});
71+
final posts = await mockSupabase
72+
.from('posts')
73+
.update({'title': 'Updated title'})
74+
.eq('id', 1)
75+
.select();
76+
expect(posts.length, 1);
77+
expect(posts.first, {'id': 1, 'title': 'Updated title'});
78+
});
79+
6680
test('Delete', () async {
6781
// Test deleting a record
6882
await mockSupabase

0 commit comments

Comments
 (0)