|
1 | 1 | import 'package:checks/checks.dart'; |
| 2 | +import 'package:clock/clock.dart'; |
| 3 | +import 'package:fake_async/fake_async.dart'; |
| 4 | +import 'package:flutter/foundation.dart'; |
2 | 5 | import 'package:flutter/material.dart'; |
3 | 6 | import 'package:flutter_test/flutter_test.dart'; |
| 7 | +import 'package:timezone/data/latest_all.dart' as tz; |
| 8 | +import 'package:timezone/timezone.dart' as tz; |
| 9 | +import 'package:timezone/src/tzdb.dart' as tz; |
4 | 10 | import 'package:url_launcher/url_launcher.dart'; |
5 | 11 | import 'package:zulip/api/model/initial_snapshot.dart'; |
6 | 12 | import 'package:zulip/api/model/model.dart'; |
@@ -66,6 +72,10 @@ CustomProfileField mkCustomProfileField( |
66 | 72 | ); |
67 | 73 | } |
68 | 74 |
|
| 75 | +void resetTimezones() { |
| 76 | + tz.initializeDatabase([]); |
| 77 | +} |
| 78 | + |
69 | 79 | void main() { |
70 | 80 | TestZulipBinding.ensureInitialized(); |
71 | 81 |
|
@@ -317,5 +327,19 @@ void main() { |
317 | 327 |
|
318 | 328 | check(find.textContaining(longString).evaluate()).length.equals(7); |
319 | 329 | }); |
| 330 | + |
| 331 | + test('assets; ensure the timezone database used to display users\' local time is up-to-date', () async { |
| 332 | + tz.initializeTimeZones(); |
| 333 | + final latestTimezones = tz.tzdbSerialize(tz.timeZoneDatabase); |
| 334 | + |
| 335 | + await UserLocalTimeText.initializeTimezonesUsingAssets(); |
| 336 | + final currentTimezones = tz.tzdbSerialize(tz.timeZoneDatabase); |
| 337 | + |
| 338 | + check( |
| 339 | + listEquals(currentTimezones, latestTimezones), |
| 340 | + because: |
| 341 | + 'the timezone database used to display users\' local time is not up-to-date, please copy `package:timezone/data/latest_all.tzf` to `assets/timezone/latest_all.tzf`', |
| 342 | + ).isTrue(); |
| 343 | + }); |
320 | 344 | }); |
321 | 345 | } |
0 commit comments