| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // ignore_for_file: implementation_imports |
| import 'package:fidl_fuchsia_modular/fidl_async.dart' as fidl; |
| import 'package:modular/src/module/_fidl_transformers.dart'; |
| import 'package:modular/src/module/_entity_intent_parameter_data_transformer.dart'; |
| import 'package:test/test.dart'; |
| |
| import '../matchers.dart'; |
| |
| void main() { |
| group('intent transformers', () { |
| test('convertFidlIntentToIntent clones correct fields', () { |
| final fidlIntent = fidl.Intent( |
| action: 'my-action', |
| handler: 'my-handler', |
| parameters: [ |
| fidl.IntentParameter( |
| name: 'intent-param', |
| data: fidl.IntentParameterData.withEntityReference('entity-ref')), |
| ], |
| ); |
| final intent = convertFidlIntentToIntent(fidlIntent); |
| expect(intent.action, fidlIntent.action); |
| expect(intent.handler, fidlIntent.handler); |
| expect(intent.parameters, fidlIntent.parameters); |
| }); |
| |
| test('convertFidlIntentToIntent handles null fidl intent parametsrs', () { |
| final fidlIntent = fidl.Intent( |
| action: 'my-action', |
| parameters: null, |
| ); |
| final intent = convertFidlIntentToIntent(fidlIntent); |
| expect(intent.parameters, isNotNull); |
| }); |
| |
| test('Intents with const parameter lists can still be modified', () { |
| final fidlIntent = fidl.Intent( |
| action: 'action', |
| parameters: const [], |
| ); |
| // Should be able to modify the parameters on the intent. |
| // note: there are helper methods for this task but we want to |
| // isolate the test to checking for mutability and not the helper methods. |
| convertFidlIntentToIntent(fidlIntent).parameters.add(fidl.IntentParameter( |
| name: 'intent-param', |
| data: fidl.IntentParameterData.withEntityReference('entity-ref'))); |
| }); |
| }); |
| |
| group('intent parameter transformers', () { |
| test('convertFidlIntentParameterToIntentParameter clones all fields', () { |
| final fidlIntentParameter = fidl.IntentParameter( |
| name: 'foo', |
| data: fidl.IntentParameterData.withEntityReference('entity-ref'), |
| ); |
| final intentParameter = |
| convertFidlIntentParameterToIntentParameter(fidlIntentParameter); |
| expect(intentParameter.name, fidlIntentParameter.name); |
| expect(intentParameter.data, fidlIntentParameter.data); |
| expect(intentParameter.dataTransformer, isNotNull); |
| }); |
| |
| test( |
| 'convertFidlIntentParameterToIntentParameter throws for unsupported data type', |
| () { |
| final fidlIntentParameter = fidl.IntentParameter( |
| name: 'foo', |
| data: fidl.IntentParameterData.withLinkName('my-link'), |
| ); |
| expect(() { |
| convertFidlIntentParameterToIntentParameter(fidlIntentParameter); |
| }, throwsModuleStateException); |
| }); |
| |
| test( |
| 'convertFidlIntentParameterToIntentParameter uses correct data transformer for entity ref', |
| () { |
| final fidlIntentParameter = fidl.IntentParameter( |
| name: 'foo', |
| data: fidl.IntentParameterData.withEntityReference('ref'), |
| ); |
| expect( |
| convertFidlIntentParameterToIntentParameter(fidlIntentParameter) |
| .dataTransformer, |
| const TypeMatcher<EntityIntentParameterDataTransformer>()); |
| }); |
| }); |
| } |