// Copyright 2017 Google Inc. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd import 'dart:convert'; import 'package:ngflutter/src/exceptions.dart'; import 'package:ngflutter/src/file_reader.dart'; import 'package:ngflutter/src/package_uri_resolver.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; void main() { group('PackageUriResolver', () { FileReader.reader = new FileReaderMock(); PackageUriResolver resolver; setUp(() { resolver = new PackageUriResolver('.packages'); }); test('should parse dependent package URI', () { var filePath = resolver.resolve('package:some_package/some_file.dart'); expect( filePath, equals(path.join( path.separator, path.join( 'home', 'someone', '.pub-cache', 'hosted', 'pub.dartlang.org', 'some_package-1.0.0', 'lib', 'some_file.dart')))); }); test('should parse current project URI', () { var filePath = resolver.resolve('package:ngflutter/some_file.dart'); expect(filePath, equals(path.join('lib', 'some_file.dart'))); }); test('should throw for unknow package', () { expect(() => resolver.resolve('package:unknown/some_file.dart'), throwsA(const TypeMatcher())); }); }); } class FileReaderMock implements FileReader { static const List _dotPackages = const [ '# Generated by pub on 2017-05-01 00:00:00.00001.', 'some_package:file:///home/someone/.pub-cache/hosted/' 'pub.dartlang.org/some_package-1.0.0/lib/', 'ngflutter:lib/' ]; @override List readAsLines(Object uri, {Encoding encoding = utf8}) { if (uri is String && uri == '.packages') return _dotPackages; return null; } @override String readAsString(Object uri, {Encoding encoding = utf8}) => null; }