Skip to content

Commit c0b278a

Browse files
juliansteenbakkerwestracer
authored andcommitted
test: add listeners tests
1 parent c70b3fe commit c0b278a

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

flutter_secure_storage/lib/flutter_secure_storage.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
library;
22

3+
import 'dart:collection';
4+
35
import 'package:flutter/foundation.dart';
46
import 'package:flutter/services.dart';
57
import 'package:flutter_secure_storage/test/test_flutter_secure_storage_platform.dart';
@@ -74,6 +76,11 @@ class FlutterSecureStorage {
7476
FlutterSecureStoragePlatform get _platform =>
7577
FlutterSecureStoragePlatform.instance;
7678

79+
/// Returns all listeners for testing purposes
80+
@visibleForTesting
81+
Map<String, List<ValueChanged<String?>>> get getListeners =>
82+
UnmodifiableMapView(_listeners);
83+
7784
/// Register [listener] for [key] with the value injected for the listener.
7885
/// The [listener] will still be called when you delete the [key] with the
7986
/// injected value as null. This listener will be added to the list of

flutter_secure_storage/test/flutter_secure_storage_test.dart

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter/material.dart';
12
import 'package:flutter/services.dart';
23
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
34
import 'package:flutter_secure_storage/test/test_flutter_secure_storage_platform.dart';
@@ -560,4 +561,53 @@ void main() {
560561
expect(defaultOptions.toMap(), constructorOptions.toMap());
561562
});
562563
});
564+
565+
group('Listener Management Tests', () {
566+
late ValueChanged<String?> listener1;
567+
late ValueChanged<String?> listener2;
568+
569+
setUp(() {
570+
storage.unregisterAllListeners();
571+
listener1 = (value) => debugPrint('Listener 1: $value');
572+
listener2 = (value) => debugPrint('Listener 2: $value');
573+
});
574+
575+
test('Register listener adds correctly', () {
576+
storage.registerListener(key: 'key1', listener: listener1);
577+
expect(storage.getListeners['key1']?.contains(listener1), isTrue);
578+
});
579+
580+
test('Register multiple listeners on same key', () {
581+
storage
582+
..registerListener(key: 'key1', listener: listener1)
583+
..registerListener(key: 'key1', listener: listener2);
584+
expect(storage.getListeners['key1']?.length, 2);
585+
expect(storage.getListeners['key1'], containsAll([listener1, listener2]));
586+
});
587+
588+
test('Unregister listener removes specific listener', () {
589+
storage
590+
..registerListener(key: 'key1', listener: listener1)
591+
..registerListener(key: 'key1', listener: listener2)
592+
..unregisterListener(key: 'key1', listener: listener1);
593+
expect(storage.getListeners['key1']?.contains(listener1), isFalse);
594+
expect(storage.getListeners['key1']?.contains(listener2), isTrue);
595+
});
596+
597+
test('Unregister all listeners for a key', () {
598+
storage
599+
..registerListener(key: 'key1', listener: listener1)
600+
..registerListener(key: 'key1', listener: listener2)
601+
..unregisterAllListenersForKey(key: 'key1');
602+
expect(storage.getListeners.containsKey('key1'), isFalse);
603+
});
604+
605+
test('Unregister all listeners for all keys', () {
606+
storage
607+
..registerListener(key: 'key1', listener: listener1)
608+
..registerListener(key: 'key2', listener: listener2)
609+
..unregisterAllListeners();
610+
expect(storage.getListeners.isEmpty, isTrue);
611+
});
612+
});
563613
}

0 commit comments

Comments
 (0)