feat(client): add action row with interactive editor toggle to lectures (#62928)

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
This commit is contained in:
Huyen Nguyen
2025-10-24 20:12:00 +07:00
committed by GitHub
parent 3893532634
commit ae8417a467
15 changed files with 281 additions and 165 deletions

View File

@@ -28,51 +28,51 @@ describe('add-interactive-editor plugin', () => {
element => element.type === 'interactiveEditor'
);
expect(editorElements).toEqual(
expect.arrayContaining([
{
data: [
{
ext: expect.any(String),
name: expect.any(String),
contents: expect.stringContaining(
'<div>This is an interactive element</div>'
)
}
],
type: 'interactiveEditor'
}
])
);
expect(editorElements).toEqual(
expect.arrayContaining([
{
data: [
{
ext: expect.any(String),
name: expect.any(String),
contents: expect.stringContaining(
'This is an interactive element'
)
}
],
type: 'interactiveEditor'
},
{
data: [
{
ext: expect.any(String),
name: expect.any(String),
contents: expect.stringContaining(
"console.log('Interactive JS');"
)
}
],
type: 'interactiveEditor'
}
])
);
expect(editorElements).toEqual([
{
type: 'interactiveEditor',
data: [
{
contents: "console.log('Interactive JS');",
ext: 'js',
name: 'script-1',
contentsHtml:
'<pre><code class="language-js">console.log(\'Interactive JS\');\n</code></pre>'
}
]
},
{
type: 'interactiveEditor',
data: [
{
contents: '<div>This is an interactive element</div>',
ext: 'html',
name: 'index-1',
contentsHtml:
'<pre><code class="language-html">&#x3C;div>This is an interactive element&#x3C;/div>\n</code></pre>'
}
]
},
{
type: 'interactiveEditor',
data: [
{
contents: '<div>This is an interactive element</div>',
ext: 'html',
name: 'index-1',
contentsHtml:
'<pre><code class="language-html">&#x3C;div>This is an interactive element&#x3C;/div>\n</code></pre>'
},
{
contents: "console.log('Interactive JS');",
ext: 'js',
name: 'script-1',
contentsHtml:
'<pre><code class="language-js">console.log(\'Interactive JS\');\n</code></pre>'
}
]
}
]);
});
it('provides unique names for each file with the same extension', async () => {
@@ -97,6 +97,9 @@ describe('add-interactive-editor plugin', () => {
// Contents should match
expect(files[0].contents).toBe("console.log('First JavaScript file');");
expect(files[1].contents).toBe("console.log('Second JavaScript file');");
expect(files[0].contentsHtml).toContain('<pre><code class="language-js">');
expect(files[1].contentsHtml).toContain('<pre><code class="language-js">');
});
it('respects the order of elements in the original markdown', async () => {