diff --git a/packages/package_info_plus/package_info_plus/lib/package_info_plus.dart b/packages/package_info_plus/package_info_plus/lib/package_info_plus.dart index 7c07f46bba..87f17f7757 100644 --- a/packages/package_info_plus/package_info_plus/lib/package_info_plus.dart +++ b/packages/package_info_plus/package_info_plus/lib/package_info_plus.dart @@ -119,4 +119,18 @@ class PackageInfo { String toString() { return 'PackageInfo(appName: $appName, buildNumber: $buildNumber, packageName: $packageName, version: $version, buildSignature: $buildSignature, installerStore: $installerStore)'; } + + Map _toMap() { + return { + 'appName': appName, + 'buildNumber': buildNumber, + 'packageName': packageName, + 'version': version, + if (buildSignature.isNotEmpty) 'buildSignature': buildSignature, + if (installerStore?.isNotEmpty ?? false) 'installerStore': installerStore, + }; + } + + /// Gets a map representation of the [PackageInfo] instance. + Map get data => _toMap(); } diff --git a/packages/package_info_plus/package_info_plus/test/package_info_test.dart b/packages/package_info_plus/package_info_plus/test/package_info_test.dart index 6283983f8d..af7bb1040e 100644 --- a/packages/package_info_plus/package_info_plus/test/package_info_test.dart +++ b/packages/package_info_plus/package_info_plus/test/package_info_test.dart @@ -75,51 +75,91 @@ void main() { test('equals checks for value equality', () async { final info1 = PackageInfo( - appName: 'package_info_example', - buildNumber: '1', - packageName: 'io.flutter.plugins.packageinfoexample', - version: '1.0', - buildSignature: '', - installerStore: null); + appName: 'package_info_example', + buildNumber: '1', + packageName: 'io.flutter.plugins.packageinfoexample', + version: '1.0', + buildSignature: '', + installerStore: null, + ); final info2 = PackageInfo( - appName: 'package_info_example', - buildNumber: '1', - packageName: 'io.flutter.plugins.packageinfoexample', - version: '1.0', - buildSignature: '', - installerStore: null); + appName: 'package_info_example', + buildNumber: '1', + packageName: 'io.flutter.plugins.packageinfoexample', + version: '1.0', + buildSignature: '', + installerStore: null, + ); expect(info1, info2); }); test('hashCode checks for value equality', () async { final info1 = PackageInfo( - appName: 'package_info_example', - buildNumber: '1', - packageName: 'io.flutter.plugins.packageinfoexample', - version: '1.0', - buildSignature: '', - installerStore: null); + appName: 'package_info_example', + buildNumber: '1', + packageName: 'io.flutter.plugins.packageinfoexample', + version: '1.0', + buildSignature: '', + installerStore: null, + ); final info2 = PackageInfo( - appName: 'package_info_example', - buildNumber: '1', - packageName: 'io.flutter.plugins.packageinfoexample', - version: '1.0', - buildSignature: '', - installerStore: null); + appName: 'package_info_example', + buildNumber: '1', + packageName: 'io.flutter.plugins.packageinfoexample', + version: '1.0', + buildSignature: '', + installerStore: null, + ); expect(info1.hashCode, info2.hashCode); }); test('toString returns a string representation', () async { final info = PackageInfo( - appName: 'package_info_example', - buildNumber: '1', - packageName: 'io.flutter.plugins.packageinfoexample', - version: '1.0', - buildSignature: '', - installerStore: null); + appName: 'package_info_example', + buildNumber: '1', + packageName: 'io.flutter.plugins.packageinfoexample', + version: '1.0', + buildSignature: '', + installerStore: null, + ); expect( info.toString(), 'PackageInfo(appName: package_info_example, buildNumber: 1, packageName: io.flutter.plugins.packageinfoexample, version: 1.0, buildSignature: , installerStore: null)', ); }); + + test('data returns a map representation', () async { + PackageInfo.setMockInitialValues( + appName: 'mock_package_info_example', + packageName: 'io.flutter.plugins.mockpackageinfoexample', + version: '1.1', + buildNumber: '2', + buildSignature: '', + installerStore: null, + ); + final info1 = await PackageInfo.fromPlatform(); + expect(info1.data, { + 'appName': 'mock_package_info_example', + 'packageName': 'io.flutter.plugins.mockpackageinfoexample', + 'version': '1.1', + 'buildNumber': '2', + }); + PackageInfo.setMockInitialValues( + appName: 'mock_package_info_example', + packageName: 'io.flutter.plugins.mockpackageinfoexample', + version: '1.1', + buildNumber: '2', + buildSignature: 'deadbeef', + installerStore: 'testflight', + ); + final info2 = await PackageInfo.fromPlatform(); + expect(info2.data, { + 'appName': 'mock_package_info_example', + 'packageName': 'io.flutter.plugins.mockpackageinfoexample', + 'version': '1.1', + 'buildNumber': '2', + 'buildSignature': 'deadbeef', + 'installerStore': 'testflight', + }); + }); }