| // Copyright 2024 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:dds/src/devtools/handler.dart'; |
| import 'package:test/test.dart'; |
| |
| void main() { |
| /// A set of test cases to verify base hrefs for. |
| /// |
| /// The key is a suffix appended to / or /devtools/ depending on how DevTools |
| /// is hosted. |
| /// The value is the expected base href (which should always resolve back to |
| /// the root of where DevTools is being hosted). |
| final testBaseHrefs = { |
| '': '.', |
| 'inspector': '.', |
| 'inspector/': '..', |
| 'inspector/foo': '..', |
| 'inspector/foo/': '../..', |
| 'inspector/foo/bar': '../..', |
| 'inspector/foo/bar/baz': '../../..', |
| }; |
| |
| for (final MapEntry(key: suffix, value: expectedBaseHref) |
| in testBaseHrefs.entries) { |
| test('computes correct base href for /$suffix with devtools at root', |
| () async { |
| final actual = computeRelativeBaseHref( |
| '/', |
| Uri.parse('http://localhost/$suffix'), |
| ); |
| expect(actual, expectedBaseHref); |
| }); |
| |
| test('computes correct base href for /$suffix with devtools at /devtools/', |
| () async { |
| final actual = computeRelativeBaseHref( |
| '/devtools/', |
| Uri.parse('http://localhost/devtools/$suffix'), |
| ); |
| expect(actual, expectedBaseHref); |
| }); |
| |
| test('computes correct base href for /$suffix in a devtools extension', |
| () async { |
| final actual = computeRelativeBaseHref( |
| '/devtools/devtools_extension/foo/', |
| Uri.parse('http://localhost/devtools/devtools_extension/foo/$suffix'), |
| ); |
| expect(actual, expectedBaseHref); |
| }); |
| } |
| } |