| // 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.transformer_test; |
| |
| import 'package:code_transformers/tests.dart'; |
| import 'package:web_components/transformer.dart'; |
| import 'package:unittest/compact_vm_config.dart'; |
| import 'common.dart'; |
| |
| var transformer = new WebComponentsTransformerGroup( |
| new TransformOptions(['web/index.html'], false)); |
| var phases = [[transformer]]; |
| |
| main() { |
| useCompactVMConfiguration(); |
| |
| testPhases('full app', phases, { |
| 'a|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <link rel="import" href="packages/b/foo.html"> |
| </head> |
| <body> |
| <script type="application/dart" src="index.dart"></script> |
| </body> |
| </html> |
| ''', |
| 'a|web/index.dart': ''' |
| library a; |
| |
| import 'package:initialize/initialize.dart'; |
| |
| @initMethod |
| startup() {} |
| ''', |
| 'b|lib/foo.html': ''' |
| <link rel="import" href="bar.html"> |
| <script type="application/dart" src="foo.dart"></script> |
| <div>foo</div> |
| ''', |
| 'b|lib/foo.dart': ''' |
| library b.foo; |
| ''', |
| 'b|lib/bar.html': ''' |
| <script type="application/dart"> |
| // Must use package:urls inside inline script tags, |
| @HtmlImport('package:b/bar_nodart.html') |
| library b.bar; |
| |
| import 'package:web_components/html_import_annotation.dart'; |
| |
| import 'package:initialize/initialize.dart'; |
| |
| @initMethod |
| bar() {} |
| </script> |
| <div>bar</div> |
| ''', |
| 'b|lib/bar_nodart.html': ''' |
| <div>bar no_dart!</div> |
| ''', |
| 'initialize|lib/initialize.dart': mockInitialize, |
| 'web_components|lib/html_import_annotation.dart': mockHtmlImportAnnotation, |
| }, { |
| 'a|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head></head> |
| <body> |
| <div hidden=""> |
| <div>bar</div> |
| <div>foo</div> |
| <div>bar no_dart!</div> |
| </div> |
| <script type="application/dart" src="index.bootstrap.initialize.dart"> |
| </script> |
| </body> |
| </html> |
| ''', |
| 'a|web/index.bootstrap.initialize.dart': ''' |
| import 'package:initialize/src/static_loader.dart'; |
| import 'package:initialize/initialize.dart'; |
| import 'index.bootstrap.dart' as i0; |
| import 'index.html.0.dart' as i1; |
| import 'package:web_components/html_import_annotation.dart' as i2; |
| import 'package:initialize/initialize.dart' as i3; |
| import 'index.dart' as i4; |
| |
| main() { |
| initializers.addAll([ |
| new InitEntry(i3.initMethod, i1.bar), |
| new InitEntry(i3.initMethod, i4.startup), |
| ]); |
| i0.main(); |
| } |
| ''', |
| 'a|web/index.bootstrap.dart': ''' |
| library a.web.index_bootstrap_dart; |
| |
| import 'index.html.0.dart' as i0; |
| import 'package:b/foo.dart' as i1; |
| import 'index.dart' as i2; |
| |
| void main() { i2.main(); } |
| ''', |
| 'a|web/index.html.0.dart': ''' |
| // Must use package:urls inside inline script tags, |
| @HtmlImport('package:b/bar_nodart.html') |
| library b.bar; |
| |
| import 'package:web_components/html_import_annotation.dart'; |
| |
| import 'package:initialize/initialize.dart'; |
| |
| @initMethod |
| bar() {} |
| ''', |
| }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| |
| testPhases('imports go above the dart script', phases, { |
| 'b|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <script>var x;</script> |
| <script type="application/dart" src="index.dart"></script> |
| <script>var y;</script> |
| </head> |
| <body> |
| </body> |
| </html> |
| ''', |
| 'b|web/index.dart': ''' |
| @HtmlImport('package:b/b.html') |
| library b; |
| |
| import 'package:web_components/html_import_annotation.dart'; |
| import 'package:c/c.dart'; |
| ''', |
| 'b|lib/b.html': ''' |
| <div>b</div> |
| ''', |
| 'c|lib/c.dart': ''' |
| @HtmlImport('c.html') |
| library c; |
| |
| import 'package:web_components/html_import_annotation.dart'; |
| ''', |
| 'c|lib/c.html': ''' |
| <div>c</div> |
| ''', |
| 'initialize|lib/initialize.dart': mockInitialize, |
| 'web_components|lib/html_import_annotation.dart': mockHtmlImportAnnotation, |
| }, { |
| 'b|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <script>var x;</script> |
| </head> |
| <body> |
| <div hidden=""> |
| <div>c</div> |
| <div>b</div> |
| <script type="application/dart" src="index.bootstrap.initialize.dart"> |
| </script> |
| <script>var y;</script> |
| </div> |
| </body> |
| </html> |
| ''', |
| }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| } |