From 11b48f290563b7ba0205b5cf26449e1bd1cfdb10 Mon Sep 17 00:00:00 2001 From: Igor Kurek Date: Mon, 14 Feb 2022 13:39:53 +0100 Subject: [PATCH] Added integration test for realtime time function --- test_integration/lib/config/test_factory.dart | 2 ++ test_integration/lib/config/test_names.dart | 1 + .../lib/test/realtime/realtime_time_test.dart | 28 +++++++++++++++++++ .../test_implementation/realtime_tests.dart | 19 +++++++++++++ .../test_driver/tests_config.dart | 1 + 5 files changed, 51 insertions(+) create mode 100644 test_integration/lib/test/realtime/realtime_time_test.dart diff --git a/test_integration/lib/config/test_factory.dart b/test_integration/lib/config/test_factory.dart index ad2cb9657..2cef5ccfb 100644 --- a/test_integration/lib/config/test_factory.dart +++ b/test_integration/lib/config/test_factory.dart @@ -11,6 +11,7 @@ import 'package:ably_flutter_integration_test/test/realtime/realtime_presence_su import 'package:ably_flutter_integration_test/test/realtime/realtime_publish_test.dart'; import 'package:ably_flutter_integration_test/test/realtime/realtime_publish_with_auth_callback_test.dart'; import 'package:ably_flutter_integration_test/test/realtime/realtime_subscribe.dart'; +import 'package:ably_flutter_integration_test/test/realtime/realtime_time_test.dart'; import 'package:ably_flutter_integration_test/test/rest/rest_capability_test.dart'; import 'package:ably_flutter_integration_test/test/rest/rest_history_test.dart'; import 'package:ably_flutter_integration_test/test/rest/rest_presence_get_test.dart'; @@ -43,6 +44,7 @@ final testFactory = { TestName.realtimeSubscribe: testRealtimeSubscribe, TestName.realtimePublishWithAuthCallback: testRealtimePublishWithAuthCallback, TestName.realtimeHistory: testRealtimeHistory, + TestName.realtimeTime: testRealtimeTime, TestName.realtimePresenceGet: testRealtimePresenceGet, TestName.realtimePresenceHistory: testRealtimePresenceHistory, TestName.realtimePresenceEnterUpdateLeave: diff --git a/test_integration/lib/config/test_names.dart b/test_integration/lib/config/test_names.dart index f7c344bce..55d5c08b5 100644 --- a/test_integration/lib/config/test_names.dart +++ b/test_integration/lib/config/test_names.dart @@ -26,6 +26,7 @@ class TestName { static const String realtimeEvents = 'realtimeEvents'; static const String realtimeSubscribe = 'realtimeSubscribe'; static const String realtimeHistory = 'realtimeHistory'; + static const String realtimeTime = 'realtimeTime'; static const String realtimePublishWithAuthCallback = 'realtimePublishWithAuthCallback'; static const String realtimePresenceGet = 'realtimePresenceGet'; diff --git a/test_integration/lib/test/realtime/realtime_time_test.dart b/test_integration/lib/test/realtime/realtime_time_test.dart new file mode 100644 index 000000000..4b33d6d27 --- /dev/null +++ b/test_integration/lib/test/realtime/realtime_time_test.dart @@ -0,0 +1,28 @@ +import 'package:ably_flutter/ably_flutter.dart'; +import 'package:ably_flutter_integration_test/factory/reporter.dart'; +import 'package:ably_flutter_integration_test/provisioning.dart'; + +Future> testRealtimeTime({ + required Reporter reporter, + Map? payload, +}) async { + reporter.reportLog('init start'); + final appKey = await provision('sandbox-'); + final logMessages = >[]; + + final realtime = Realtime( + options: ClientOptions.fromKey(appKey.toString()) + ..environment = 'sandbox' + ..clientId = 'someClientId' + ..logLevel = LogLevel.verbose + ..logHandler = + ({msg, exception}) => logMessages.add([msg, exception.toString()]), + ); + + final realtimeTime = await realtime.time(); + + return { + 'handle': await realtime.handle, + 'time': realtimeTime.toIso8601String(), + }; +} diff --git a/test_integration/test_driver/test_implementation/realtime_tests.dart b/test_integration/test_driver/test_implementation/realtime_tests.dart index 34e4484b2..fc39d007d 100644 --- a/test_integration/test_driver/test_implementation/realtime_tests.dart +++ b/test_integration/test_driver/test_implementation/realtime_tests.dart @@ -337,6 +337,25 @@ void testRealtimeHistory(FlutterDriver Function() getDriver) { }); } +void testRealtimeTime(FlutterDriver Function() getDriver) { + const message = TestControlMessage(TestName.realtimeTime); + late TestControlResponseMessage response; + late DateTime realtimeTime; + + setUpAll(() async { + response = await requestDataForTest(getDriver(), message); + realtimeTime = DateTime.parse(response.payload['time'] as String); + }); + + group('realtime#time', () { + test('returns date and time before now', () { + final nowInUtc = DateTime.now().toUtc(); + final realtimeTimeInUtc = realtimeTime.toUtc(); + expect(realtimeTimeInUtc.isAfter(nowInUtc), equals(true)); + }); + }); +} + void testRealtimePresenceGet(FlutterDriver Function() getDriver) { const message = TestControlMessage(TestName.realtimePresenceGet); late TestControlResponseMessage response; diff --git a/test_integration/test_driver/tests_config.dart b/test_integration/test_driver/tests_config.dart index b23b50a34..d3be6dc85 100644 --- a/test_integration/test_driver/tests_config.dart +++ b/test_integration/test_driver/tests_config.dart @@ -31,6 +31,7 @@ final _tests = 'should subscribe to connection and channel': testRealtimeEvents, 'should subscribe to messages': testRealtimeSubscribe, 'should retrieve history': testRealtimeHistory, + 'should retrieve time': testRealtimeTime, 'realtime#channels#channel#presence#get': testRealtimePresenceGet, 'realtime#channels#channel#presence#history': testRealtimePresenceHistory, 'should enter, update and leave Presence': testRealtimeEnterUpdateLeave,