// 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.
@HtmlImport(importPath)
 // This one will throw a build time warning, but should still work dynamically.
@HtmlImport('bad_import.html')
library web_components.test.html_import_annotation;

import 'dart:html';
import 'package:initialize/initialize.dart' as init;
import 'package:unittest/html_config.dart';
import 'package:unittest/unittest.dart';
import 'package:web_components/html_import_annotation.dart';


const String importPath = 'my_import.html';

main() {
  useHtmlConfiguration();

  test('adds import to head', () {
    return init.run().then((_) {
      var good = document.head.querySelector('link[href="$importPath"]');
      expect(good.import.body.text, 'Hello world!\n');
      var bad = document.head.querySelector('link[href="bad_import.html"]');
      expect(bad.import, isNull);
    });
  });
}
