Skip to content

Commit 12b48d1

Browse files
committed
feat: add unit tests for CodeBindingElement and InteractiveCodeElement
- Implemented tests for CodeBindingElement covering attribute getters, value parsing, value setter, disabled property, toggle, increment, decrement, and event handling. - Added tests for InteractiveCodeElement focusing on language attribute, code property, shadow DOM structure, template extraction, binding integration, syntax highlighting for various languages, and event handling. - Integrated Vitest for testing framework with coverage reporting. - Updated package.json to include Vitest and its dependencies. - Excluded test files from TypeScript compilation.
1 parent 75b4391 commit 12b48d1

13 files changed

Lines changed: 1823 additions & 36 deletions

demo/index.html

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
99
<style>
1010
:root {
11+
color-scheme: dark;
1112
--bg-gradient: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
1213
--bg-primary: #161b22;
1314
--bg-secondary: #21262d;
@@ -310,25 +311,22 @@
310311
letter-spacing: 0.5px;
311312
}
312313

313-
/* User view: code + live element side by side */
314+
/* User view: code + live element stacked vertically */
314315
.user-view {
315316
display: flex;
316-
gap: 1.5rem;
317-
align-items: stretch;
317+
flex-direction: column;
318+
gap: 1rem;
318319
}
319320

320321
.user-view > interactive-code {
321-
flex: 1;
322322
margin: 0;
323323
}
324324

325325
.live-element {
326-
flex: 0 0 auto;
327-
min-width: 200px;
328326
display: flex;
329327
align-items: center;
330328
justify-content: center;
331-
padding: 1rem;
329+
padding: 1.5rem;
332330
background: var(--bg-primary);
333331
border-radius: 6px;
334332
border: 1px dashed var(--border-color);
@@ -402,7 +400,7 @@
402400
background: var(--accent-purple);
403401
color: white;
404402
transition: all 0.2s ease;
405-
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
403+
border: 3px solid #50fa7b;
406404
border-radius: 12px;
407405
}
408406
</style>
@@ -476,13 +474,14 @@ <h3>Boolean Type</h3>
476474
<interactive-code language="html">
477475
<textarea><label><input type="checkbox" checked="${checked}">Accept terms</label></textarea>
478476
<code-binding key="checked" type="boolean" value="true"
479-
onchange="document.getElementById('preview-checkbox').checked = e"></code-binding>
477+
onchange="document.getElementById('icon-checked').style.display = e ? 'inline' : 'none'; document.getElementById('icon-unchecked').style.display = e ? 'none' : 'inline'"></code-binding>
480478
</interactive-code>
481479
<div class="live-element">
482-
<label class="checkbox-label">
483-
<input type="checkbox" id="preview-checkbox" checked>
480+
<span class="checkbox-label">
481+
<span class="material-icons" id="icon-checked" style="color: var(--accent-blue);">check_box</span>
482+
<span class="material-icons" id="icon-unchecked" style="display: none; color: var(--text-muted);">check_box_outline_blank</span>
484483
Accept terms
485-
</label>
484+
</span>
486485
</div>
487486
</div>
488487
</div>
@@ -625,11 +624,11 @@ <h3>Comment Type (Line Toggle)</h3>
625624
<interactive-code class="inline-code" language="html">
626625
<textarea><interactive-code language="scss">
627626
<textarea>.element {
628-
${enableShadow}box-shadow: 0 4px 12px rgba(0,0,0,0.3);
627+
${enableBorder}border: 3px solid #50fa7b;
629628
${enableRadius}border-radius: 12px;
630629
}&lt;/textarea>
631-
<code-binding key="enableShadow" type="comment" value="true"
632-
onchange="document.getElementById('preview-element').style.boxShadow = e ? '0 4px 12px rgba(0,0,0,0.3)' : 'none'"></code-binding>
630+
<code-binding key="enableBorder" type="comment" value="true"
631+
onchange="document.getElementById('preview-element').style.border = e ? '3px solid #50fa7b' : 'none'"></code-binding>
633632
<code-binding key="enableRadius" type="comment" value="true"
634633
onchange="document.getElementById('preview-element').style.borderRadius = e ? '12px' : '0'"></code-binding>
635634
</interactive-code>
@@ -642,11 +641,11 @@ <h3>Comment Type (Line Toggle)</h3>
642641
<div class="user-view">
643642
<interactive-code language="scss">
644643
<textarea>.element {
645-
${enableShadow}box-shadow: 0 4px 12px rgba(0,0,0,0.3);
644+
${enableBorder}border: 3px solid #50fa7b;
646645
${enableRadius}border-radius: 12px;
647646
}</textarea>
648-
<code-binding key="enableShadow" type="comment" value="true"
649-
onchange="document.getElementById('preview-element').style.boxShadow = e ? '0 4px 12px rgba(0,0,0,0.3)' : 'none'"></code-binding>
647+
<code-binding key="enableBorder" type="comment" value="true"
648+
onchange="document.getElementById('preview-element').style.border = e ? '3px solid #50fa7b' : 'none'"></code-binding>
650649
<code-binding key="enableRadius" type="comment" value="true"
651650
onchange="document.getElementById('preview-element').style.borderRadius = e ? '12px' : '0'"></code-binding>
652651
</interactive-code>

0 commit comments

Comments
 (0)