Index: packages/web_components/test/build/html_import_annotation_recorder_test.dart |
diff --git a/packages/web_components/test/build/html_import_annotation_recorder_test.dart b/packages/web_components/test/build/html_import_annotation_recorder_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a6e832c9d2473169cda98dddce9cb728c0fc9e80 |
--- /dev/null |
+++ b/packages/web_components/test/build/html_import_annotation_recorder_test.dart |
@@ -0,0 +1,105 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+library web_components.test.build.html_import_annotation_recorder_test; |
+ |
+import 'package:code_transformers/tests.dart' hide testPhases; |
+import 'package:web_components/build/html_import_annotation_recorder.dart'; |
+import 'package:initialize/transformer.dart'; |
+import 'package:unittest/compact_vm_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+import 'common.dart'; |
+ |
+testPhases(String name, Map<String, String> inputs, |
+ Map<String, String> expected, List<String> expectedPaths) { |
+ var plugin = new HtmlImportAnnotationRecorder(); |
+ var transformer = |
+ new InitializeTransformer(['web/index.dart'], plugins: [plugin]); |
+ |
+ test(name, () { |
+ // Run the transformer and test the output. |
+ return applyTransformers([[transformer]], |
+ inputs: inputs, |
+ results: expected, |
+ formatter: StringFormatter.noNewlinesOrSurroundingWhitespace).then((_) { |
+ // Check that we recorded the right html imports. |
+ expect(plugin.importPaths, expectedPaths); |
+ }); |
+ }); |
+} |
+ |
+main() { |
+ useCompactVMConfiguration(); |
+ |
+ testPhases('basic', { |
+ 'a|web/index.dart': ''' |
+ @HtmlImport('index.html') |
+ library index; |
+ |
+ import 'package:web_components/html_import_annotation.dart'; |
+ import 'foo.dart'; |
+ ''', |
+ 'a|web/foo.dart': ''' |
+ @HtmlImport(fooHtml) |
+ library foo; |
+ |
+ import 'package:initialize/initialize.dart'; |
+ import 'package:web_components/html_import_annotation.dart'; |
+ import 'package:bar/bar.dart'; |
+ |
+ const String fooHtml = 'foo.html'; |
+ |
+ @initMethod |
+ foo() {} |
+ ''', |
+ 'bar|lib/bar.dart': ''' |
+ @HtmlImport(barHtml) |
+ library bar; |
+ |
+ import 'package:initialize/initialize.dart'; |
+ import 'package:web_components/html_import_annotation.dart'; |
+ import 'src/zap.dart'; |
+ |
+ const String barHtml = 'bar.html'; |
+ |
+ @initMethod |
+ bar() {} |
+ ''', |
+ 'bar|lib/src/zap.dart': ''' |
+ @zapImport |
+ library bar.src.zap; |
+ |
+ import 'package:web_components/html_import_annotation.dart'; |
+ |
+ const zapImport = const HtmlImport('zap.html'); |
+ ''', |
+ // Mock out the Initialize package plus some initializers. |
+ 'initialize|lib/initialize.dart': mockInitialize, |
+ 'web_components|lib/html_import_annotation.dart': mockHtmlImportAnnotation, |
+ }, { |
+ 'a|web/index.initialize.dart': ''' |
+ import 'package:initialize/src/static_loader.dart'; |
+ import 'package:initialize/initialize.dart'; |
+ import 'index.dart' as i0; |
+ import 'package:bar/src/zap.dart' as i1; |
+ import 'package:bar/bar.dart' as i2; |
+ import 'package:web_components/html_import_annotation.dart' as i3; |
+ import 'package:initialize/initialize.dart' as i4; |
+ import 'foo.dart' as i5; |
+ |
+ main() { |
+ initializers.addAll([ |
+ new InitEntry(i4.initMethod, i2.bar), |
+ new InitEntry(i4.initMethod, i5.foo), |
+ ]); |
+ |
+ return i0.main(); |
+ } |
+ ''' |
+ }, [ |
+ 'packages/bar/src/zap.html', |
+ 'packages/bar/bar.html', |
+ 'foo.html', |
+ 'index.html', |
+ ]); |
+} |