diff --git a/lib/providers/history_providers.dart b/lib/providers/history_providers.dart index 7109ca4ba1..f982af9a74 100644 --- a/lib/providers/history_providers.dart +++ b/lib/providers/history_providers.dart @@ -85,9 +85,7 @@ class HistoryMetaStateNotifier void addHistoryRequest(HistoryRequestModel model) async { final id = model.historyId; state = {...state ?? {}, id: model.metaData}; - final List updatedHistoryKeys = state == null - ? [id] - : [...state!.keys, id]; + final List updatedHistoryKeys = state?.keys.toList() ?? []; hiveHandler.setHistoryIds(updatedHistoryKeys); hiveHandler.setHistoryMeta(id, model.metaData.toJson()); await hiveHandler.setHistoryRequest(id, model.toJson()); diff --git a/test/providers/history_providers_test.dart b/test/providers/history_providers_test.dart new file mode 100644 index 0000000000..8bbd6d3a38 --- /dev/null +++ b/test/providers/history_providers_test.dart @@ -0,0 +1,41 @@ +import 'package:apidash/models/models.dart'; +import 'package:apidash/providers/providers.dart'; +import 'package:apidash/services/services.dart'; +import 'package:apidash_core/apidash_core.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'helpers.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + setUp(() async { + await testSetUpTempDirForHive(); + }); + + test('addHistoryRequest persists unique history ids only', () async { + final container = createContainer(); + final notifier = container.read(historyMetaStateNotifier.notifier); + + final historyId = getNewUuid(); + final model = HistoryRequestModel( + historyId: historyId, + metaData: HistoryMetaModel( + historyId: historyId, + requestId: getNewUuid(), + apiType: APIType.rest, + url: 'https://api.apidash.dev', + method: HTTPVerb.get, + responseStatus: 200, + timeStamp: DateTime.now(), + ), + httpResponseModel: const HttpResponseModel(), + ); + + notifier.addHistoryRequest(model); + await Future.delayed(const Duration(milliseconds: 50)); + + final historyIds = hiveHandler.getHistoryIds() as List?; + expect(historyIds, isNotNull); + expect(historyIds, [historyId]); + }); +}