| // Copyright (c) 2024, 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. |
| |
| @TestOn('vm') |
| library; |
| |
| import 'package:test/test.dart'; |
| |
| import '../bin/scrape_mdn.dart'; |
| |
| void main() { |
| group('convertMdnToMarkdown', () { |
| test('simple', () { |
| compare(''' |
| Hello world |
| ''', ''' |
| Hello world |
| '''); |
| }); |
| |
| test('removes front matter', () { |
| compare(''' |
| --- |
| title: AudioNode |
| slug: Web/API/AudioNode |
| page-type: web-api-interface |
| browser-compat: api.AudioNode |
| --- |
| |
| Hello world |
| ''', ''' |
| Hello world |
| '''); |
| }); |
| |
| test('strips InheritanceDiagram', () { |
| compare(''' |
| Hello world |
| |
| {{InheritanceDiagram}} |
| |
| foo bar |
| ''', ''' |
| Hello world |
| |
| foo bar |
| '''); |
| }); |
| |
| test('strips AvailableInWorkers', () { |
| compare(''' |
| Hello world |
| |
| {{AvailableInWorkers("notservice")}} |
| |
| foo bar |
| ''', ''' |
| Hello world |
| |
| @AvailableInWorkers("notservice") |
| |
| foo bar |
| '''); |
| }); |
| |
| test('strips DefaultAPISidebar', () { |
| compare(''' |
| {{DefaultAPISidebar("Streams API")}} |
| |
| The **`enqueue()`** method of the {{domxref("TransformStreamDefaultController")}} interface enqueues the given chunk in the readable side of the stream. |
| |
| For more information on readable streams and chunks see [Using Readable Streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams). |
| ''', ''' |
| The **`enqueue()`** method of the [TransformStreamDefaultController] interface enqueues the given chunk in the readable side of the stream. |
| |
| For more information on readable streams and chunks see [Using Readable Streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams). |
| '''); |
| }); |
| |
| test('reference domxref', () { |
| compare(''' |
| Examples include: |
| |
| - the audio destination, |
| - intermediate processing module (e.g. a filter like {{domxref("BiquadFilterNode")}} or {{domxref("ConvolverNode")}}), or |
| - volume control (like {{domxref("GainNode")}}) |
| ''', ''' |
| Examples include: |
| |
| - the audio destination, |
| - intermediate processing module (e.g. a filter like [BiquadFilterNode] or [ConvolverNode]), or |
| - volume control (like [GainNode]) |
| '''); |
| |
| compare(''' |
| Examples include: |
| |
| ... of {{domxref("Response.type", "type")}} ... |
| ''', ''' |
| Examples include: |
| |
| ... of [Response.type] ... |
| '''); |
| |
| compare(''' |
| The **`sampleRate`** property of the {{ |
| domxref("AudioBuffer") }} interface returns a float representing the sample rate, in |
| samples per second, of the PCM data stored in the buffer. |
| ''', ''' |
| The **`sampleRate`** property of the [AudioBuffer] interface returns a float representing the sample rate, in |
| samples per second, of the PCM data stored in the buffer. |
| '''); |
| }); |
| |
| test('reference jsxref', () { |
| compare(''' |
| ... or functions such as {{jsxref("Array.forEach", "forEach()")}}. |
| |
| - {{jsxref("JSON.parse()")}} - counterpart for {{jsxref("JSON")}} documents. |
| ''', ''' |
| ... or functions such as `forEach()`. |
| |
| - `JSON.parse()` - counterpart for `JSON` documents. |
| '''); |
| }); |
| |
| test('expand links', () { |
| compare(''' |
| some text |
| [WebGL API](/en-US/docs/Web/API/WebGL_API) |
| more text |
| another [link](https://www.google.com) |
| ''', ''' |
| some text |
| [WebGL API](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API) |
| more text |
| another [link](https://www.google.com) |
| '''); |
| }); |
| |
| test('rewrite slash references', () { |
| compare(''' |
| volume control (like {{domxref("FontFace/status")}}) |
| ''', ''' |
| volume control (like [FontFace.status]) |
| '''); |
| }); |
| }); |
| } |
| |
| void compare(String source, String output) { |
| expect( |
| convertMdnToMarkdown(source), |
| output.trimRight(), |
| ); |
| } |