Skip to content

Commit 854a401

Browse files
committed
fix(test): fix the reset button
1 parent 92d44a9 commit 854a401

File tree

1 file changed

+52
-19
lines changed

1 file changed

+52
-19
lines changed

lib/services/testing/testing_service.dart

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
7979
for (var type in IntegrationTestType.values) type: TestSuiteStatus.waiting
8080
},
8181
);
82-
_statusController.add(state);
82+
if (!_statusController.isClosed) {
83+
_statusController.add(state);
84+
}
8385

8486
try {
8587
for (final type in IntegrationTestType.values) {
@@ -90,7 +92,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
9092
Logging.instance.log(Level.error, "Error running integration test suites: $e");
9193
} finally {
9294
state = state.copyWith(isRunning: false);
93-
_statusController.add(state);
95+
if (!_statusController.isClosed) {
96+
_statusController.add(state);
97+
}
9498
}
9599
}
96100

@@ -111,7 +115,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
111115
for (var type in WalletTestType.values) type: TestSuiteStatus.waiting
112116
},
113117
);
114-
_statusController.add(state);
118+
if (!_statusController.isClosed) {
119+
_statusController.add(state);
120+
}
115121

116122
try {
117123
for (final type in WalletTestType.values) {
@@ -122,7 +128,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
122128
Logging.instance.log(Level.error, "Error running wallet test suites: $e");
123129
} finally {
124130
state = state.copyWith(isRunning: false);
125-
_statusController.add(state);
131+
if (!_statusController.isClosed) {
132+
_statusController.add(state);
133+
}
126134
}
127135
}
128136

@@ -150,7 +158,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
150158
integrationTestStatuses: updatedStatuses,
151159
suiteStatuses: updatedAllStatuses,
152160
);
153-
_statusController.add(state);
161+
if (!_statusController.isClosed) {
162+
_statusController.add(state);
163+
}
154164

155165
try {
156166
final result = await suite.runTests().timeout(
@@ -175,7 +185,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
175185
suiteStatuses: updatedAllStatuses,
176186
completed: completed,
177187
);
178-
_statusController.add(state);
188+
if (!_statusController.isClosed) {
189+
_statusController.add(state);
190+
}
179191

180192
await suite.cleanup();
181193
} catch (e) {
@@ -191,7 +203,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
191203
suiteStatuses: updatedAllStatuses,
192204
completed: completed,
193205
);
194-
_statusController.add(state);
206+
if (!_statusController.isClosed) {
207+
_statusController.add(state);
208+
}
195209

196210
Logging.instance.log(Level.error, "Error running $type integration test suite: $e");
197211
}
@@ -220,7 +234,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
220234
walletTestStatuses: updatedStatuses,
221235
suiteStatuses: updatedAllStatuses,
222236
);
223-
_statusController.add(state);
237+
if (!_statusController.isClosed) {
238+
_statusController.add(state);
239+
}
224240

225241
try {
226242
// TODO: Pass wallet config to suite when implementing actual wallet tests.
@@ -246,7 +262,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
246262
suiteStatuses: updatedAllStatuses,
247263
completed: completed,
248264
);
249-
_statusController.add(state);
265+
if (!_statusController.isClosed) {
266+
_statusController.add(state);
267+
}
250268

251269
await suite.cleanup();
252270
} catch (e) {
@@ -262,7 +280,9 @@ class TestingService extends StateNotifier<TestingSessionState> {
262280
suiteStatuses: updatedAllStatuses,
263281
completed: completed,
264282
);
265-
_statusController.add(state);
283+
if (!_statusController.isClosed) {
284+
_statusController.add(state);
285+
}
266286

267287
Logging.instance.log(Level.error, "Error running $type wallet test suite: $e");
268288
}
@@ -280,7 +300,11 @@ class TestingService extends StateNotifier<TestingSessionState> {
280300
Future<void> cancelTesting() async {
281301
_cancelled = true;
282302
state = state.copyWith(isRunning: false);
283-
_statusController.add(state);
303+
304+
// Only add to stream controller if it's not closed.
305+
if (!_statusController.isClosed) {
306+
_statusController.add(state);
307+
}
284308

285309
for (final suite in _integrationTestSuites.values) {
286310
await suite.cleanup();
@@ -291,32 +315,41 @@ class TestingService extends StateNotifier<TestingSessionState> {
291315
}
292316

293317
Future<void> resetTestResults() async {
318+
// Clear test suites to ensure fresh state.
319+
_integrationTestSuites.clear();
320+
_walletTestSuites.clear();
321+
_cancelled = false;
322+
294323
state = TestingSessionState(
295324
testStatuses: {
296-
for (var type in IntegrationTestType.values) type: TestSuiteStatus.waiting,
297-
for (var type in WalletTestType.values) type: TestSuiteStatus.waiting,
325+
for (final type in IntegrationTestType.values) type: TestSuiteStatus.waiting,
326+
for (final type in WalletTestType.values) type: TestSuiteStatus.waiting,
298327
},
299328
integrationTestStatuses: {
300-
for (var type in IntegrationTestType.values) type: TestSuiteStatus.waiting
329+
for (final type in IntegrationTestType.values) type: TestSuiteStatus.waiting
301330
},
302331
walletTestStatuses: {
303-
for (var type in WalletTestType.values) type: TestSuiteStatus.waiting
332+
for (final type in WalletTestType.values) type: TestSuiteStatus.waiting
304333
},
305334
isRunning: false,
306335
completed: 0,
307336
total: IntegrationTestType.values.length + WalletTestType.values.length,
308337
);
309-
_statusController.add(state);
338+
339+
// Only add to stream controller if it's not closed.
340+
if (!_statusController.isClosed) {
341+
_statusController.add(state);
342+
}
310343
}
311344

312-
// Wallet test configuration methods
345+
// Wallet test configuration methods.
313346
void setWalletTestConfig(WalletTestConfig config) {
314347
_walletTestConfig = config;
315348
}
316349

317350
WalletTestConfig? get walletTestConfig => _walletTestConfig;
318351

319-
// Helper method to calculate completed tests across both types
352+
// Helper method to calculate completed tests across both types.
320353
int _calculateCompletedTests() {
321354
final integrationCompleted = state.integrationTestStatuses.values
322355
.where((status) => status == TestSuiteStatus.passed || status == TestSuiteStatus.failed)
@@ -351,7 +384,7 @@ class TestingService extends StateNotifier<TestingSessionState> {
351384
super.dispose();
352385
}
353386

354-
// Convenience methods for getting display names
387+
// Convenience methods for getting display names.
355388
String getDisplayNameForTest(TestType type) {
356389
return type.displayName;
357390
}

0 commit comments

Comments
 (0)