import { describe, it, expect } from 'vitest';
import { mdParameters } from './mdParameters';
describe('mdParameters', () => {
describe("attributes", () => {
it('1.basic', () => {
const result = mdParameters('Hello [class="test" id="main"] world');
expect(result.attributes).toEqual({
class: 'test',
id: 'main'
});
expect(result.props).toEqual({});
expect(result.sanitizedText).toBe('Hello world');
});
it('2.markdown+links', () => {
const result = mdParameters('[desc="This is [xyd](https://github.com/xyd-js) - a docs framework"]');
expect(result.attributes).toEqual({
desc: 'This is [xyd](https://github.com/xyd-js) - a docs framework',
});
expect(result.props).toEqual({});
expect(result.sanitizedText).toBe('');
});
})
describe("props", () => {
it('1.basic', () => {
const result = mdParameters('Hello {title="tooltip" disabled} world');
expect(result.attributes).toEqual({});
expect(result.props).toEqual({
title: 'tooltip',
disabled: 'true'
});
expect(result.sanitizedText).toBe('Hello world');
});
})
describe("attributes + props", () => {
it('1.basic', () => {
const result = mdParameters('Hello [class="test"] {title="tooltip"} world');
expect(result.attributes).toEqual({
class: 'test'
});
expect(result.props).toEqual({
title: 'tooltip'
});
expect(result.sanitizedText).toBe('Hello world');
});
})
describe("attributes + htmlMd option", () => {
it('1.basic', () => {
const result = mdParameters(
`[desc="Produces static files within .xyd/build/client which you an deploy easily."]`,
{
htmlMd: true
}
);
expect(result.attributes).toEqual({
desc: "Produces static files within `.xyd/build/client` which you an deploy easily."
});
expect(result.sanitizedText).toBe('');
});
it('2.multiple HTML tags in attribute', () => {
const result = mdParameters(
`[desc="This is bold and italic text with inline code."]`,
{
htmlMd: true
}
);
expect(result.attributes).toEqual({
desc: "This is **bold** and *italic* text with `inline code`."
});
});
})
describe("attributes + :::component", () => {
it('1.basic', () => {
const result = mdParameters(`[desc="Choose between light/dark mode. :::button \n **xyd 0.1.0-alpha is coming soon!** \n :::"]`);
const expectedText = `Choose between light/dark mode.\n :::button \n **xyd 0.1.0-alpha is coming soon!**\n :::`;
expect(result.attributes).toEqual({
desc: expectedText
});
expect(result.sanitizedText).toBe('');
})
it("2", () => {
const result = mdParameters(`[desc=":::button\\n **xyd 0.1.0-alpha is coming soon!**\\n"]`);
const expectedText = `:::button\n **xyd 0.1.0-alpha is coming soon!**\n:::`;
expect(result.attributes).toEqual({
desc: expectedText
});
expect(result.sanitizedText).toBe('');
})
it("3", () => {
const result = mdParameters(`[desc="Choose between :::color-scheme-button\\n::: mode"]`);
const expectedText = `Choose between\n :::color-scheme-button\n :::\n mode`;
expect(result.attributes).toEqual({
desc: expectedText
});
expect(result.sanitizedText).toBe('');
})
})
});