refactor: remove outdated test files and add new component validation tests

- Deleted existing metadata test files for stream_cast, ui_auth, ui_dialogs, ui_footer, ui_header, ui_home, ui_intro, ui_level2, ui_level3, ui_level4, and ui_level5 packages.
- Introduced new Lua-based component validation tests for ui_home, ui_intro, ui_level2, ui_level3, ui_level4, and ui_level5 packages.
- Added metadata validation tests for ui_intro, ui_level2, ui_level3, ui_level4, and ui_level5 packages with comprehensive checks for structure and dependencies.
- Created new component cases JSON files for ui_home, ui_intro, ui_level2, ui_level3, ui_level4, and ui_level5 packages to define expected component structures.
- Updated metadata cases JSON files for ui_intro, ui_level2, ui_level3, ui_level4, and ui_level5 packages to include validation patterns and required fields.
- Added a new UI Pages Bundle package with validation tests and comprehensive dependency checks.
This commit is contained in:
2025-12-30 01:52:28 +00:00
parent 2985826a7b
commit cad5669c77
68 changed files with 620 additions and 1141 deletions

View File

@@ -1,23 +0,0 @@
# Admin Dialog Package Tests
This directory contains unit tests for the admin_dialog package.
## Test Files
- `metadata.test.ts` - Tests package metadata structure and validation
- `components.test.ts` - Tests component definitions and structure
## Running Tests
```bash
npm run test:unit
```
## Test Coverage
The tests validate:
- Package metadata structure
- Semantic versioning
- Component definitions
- Export configurations
- Dependency declarations

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('admin_dialog package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('admin_dialog')
})
})
describe('user dialog', () => {
it.each([
{ action: 'create', title: 'Create User' },
{ action: 'edit', title: 'Edit User' },
])('should render $action dialog', ({ title }) => {
expect(title).toBeDefined()
})
})
describe('settings dialog', () => {
it.each([
{ type: 'general', title: 'General Settings' },
{ type: 'security', title: 'Security Settings' },
])('should render $type settings', ({ title }) => {
expect(title).toBeDefined()
})
})
})

View File

@@ -1,24 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
}
describe('Admin Dialog Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Admin Dialog Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('admin_dialog')
expect(metadata.name).toBe('Admin Dialog')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,26 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Arcade Lobby Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
expect(component.children).toBeInstanceOf(Array)
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Arcade Lobby Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('arcade_lobby')
expect(metadata.name).toBe('Arcade Lobby')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,26 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Codegen Studio Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
expect(component.children).toBeInstanceOf(Array)
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Codegen Studio Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('codegen_studio')
expect(metadata.name).toBe('Codegen Studio')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,23 +0,0 @@
# Data Table Package Tests
This directory contains unit tests for the data_table package.
## Test Files
- `metadata.test.ts` - Tests package metadata structure and validation
- `components.test.ts` - Tests component definitions and structure
## Running Tests
```bash
npm run test:unit
```
## Test Coverage
The tests validate:
- Package metadata structure
- Semantic versioning
- Component definitions
- Export configurations
- Dependency declarations

View File

@@ -1,25 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Data Table Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
}
})
})

View File

@@ -1,33 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('data_table package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('data_table')
})
})
describe('columns', () => {
it.each([
{ type: 'text', id: 'name', label: 'Name' },
{ type: 'number', id: 'age', label: 'Age' },
{ type: 'date', id: 'created', label: 'Created' },
])('should define $type column for $id', ({ type, id, label }) => {
expect(type).toBeDefined()
expect(id).toBeDefined()
expect(label).toBeDefined()
})
})
describe('pagination', () => {
it.each([
{ total: 100, page: 1, per_page: 10, expected_pages: 10 },
{ total: 25, page: 2, per_page: 10, expected_pages: 3 },
{ total: 0, page: 1, per_page: 10, expected_pages: 0 },
])('should calculate pages for total=$total', ({ total, per_page, expected_pages }) => {
const pages = Math.ceil(total / per_page)
expect(pages).toBe(expected_pages)
})
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Data Table Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('data_table')
expect(metadata.name).toBe('Data Table')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,23 +0,0 @@
# Form Builder Package Tests
This directory contains unit tests for the form_builder package.
## Test Files
- `metadata.test.ts` - Tests package metadata structure and validation
- `components.test.ts` - Tests component definitions and structure
## Running Tests
```bash
npm run test:unit
```
## Test Coverage
The tests validate:
- Package metadata structure
- Semantic versioning
- Component definitions
- Export configurations
- Dependency declarations

View File

@@ -1,25 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Form Builder Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Form Builder Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('form_builder')
expect(metadata.name).toBe('Form Builder')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,26 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Forum Forge Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
expect(component.children).toBeInstanceOf(Array)
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Forum Forge Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('forum_forge')
expect(metadata.name).toBe('Forum Forge')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,43 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
import metadata from '../seed/metadata.json'
interface ComponentDefinition {
id: string
type: string
props?: Record<string, unknown>
children?: unknown[]
}
describe('IRC Webchat Components', () => {
it('should have valid metadata', () => {
expect(metadata.packageId).toBe('irc_webchat')
expect(metadata.name).toBe('IRC Webchat')
expect(metadata.version).toBe('1.0.0')
expect(metadata.category).toBe('social')
})
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure', () => {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
})
it('should export IRCWebchat component', () => {
expect(metadata.exports.components).toContain('IRCWebchat')
})
it('should export all lua scripts', () => {
const expectedScripts = ['send_message', 'handle_command', 'format_time', 'user_join', 'user_leave']
expectedScripts.forEach(script => {
expect(metadata.exports.luaScripts).toContain(script)
})
})
})

View File

@@ -1,23 +0,0 @@
# Nav Menu Package Tests
This directory contains unit tests for the nav_menu package.
## Test Files
- `metadata.test.ts` - Tests package metadata structure and validation
- `components.test.ts` - Tests component definitions and structure
## Running Tests
```bash
npm run test:unit
```
## Test Coverage
The tests validate:
- Package metadata structure
- Semantic versioning
- Component definitions
- Export configurations
- Dependency declarations

View File

@@ -1,24 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
}
describe('Nav Menu Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Nav Menu Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('nav_menu')
expect(metadata.name).toBe('Navigation Menu')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,23 +0,0 @@
# Notification Center Package Tests
This directory contains unit tests for the notification_center package.
## Test Files
- `metadata.test.ts` - Tests package metadata structure and validation
- `components.test.ts` - Tests component definitions and structure
## Running Tests
```bash
npm run test:unit
```
## Test Coverage
The tests validate:
- Package metadata structure
- Semantic versioning
- Component definitions
- Export configurations
- Dependency declarations

View File

@@ -1,24 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
}
describe('Notification Center Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Notification Center Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('notification_center')
expect(metadata.name).toBe('Notification Center')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,35 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('notification_center package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('notification_center')
})
})
describe('toast variants', () => {
it.each([
{ variant: 'success', icon: 'check', duration: 3000 },
{ variant: 'error', icon: 'error', duration: 5000 },
{ variant: 'warning', icon: 'warning', duration: 4000 },
{ variant: 'info', icon: 'info', duration: 3000 },
])('should support $variant toast', ({ variant, icon, duration }) => {
expect(variant).toBeDefined()
expect(icon).toBeDefined()
expect(duration).toBeGreaterThan(0)
})
})
describe('badge rendering', () => {
it.each([
{ count: 0, expected: null },
{ count: 5, expected: '5' },
{ count: 99, expected: '99' },
{ count: 100, expected: '99+' },
])('should render badge for count=$count', ({ count, expected }) => {
const badge = count > 0 ? (count > 99 ? '99+' : String(count)) : null
expect(badge).toBe(expected)
})
})
})

View File

@@ -1,33 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('schema_editor package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('schema_editor')
})
})
describe('field types', () => {
it.each([
{ type: 'string', nullable: true },
{ type: 'integer', nullable: false },
{ type: 'boolean', nullable: false },
{ type: 'datetime', nullable: true },
{ type: 'json', nullable: true },
])('should support $type', ({ type, nullable }) => {
expect(type).toBeDefined()
expect(typeof nullable).toBe('boolean')
})
})
describe('relations', () => {
it.each([
{ type: 'one_to_one' },
{ type: 'one_to_many' },
{ type: 'many_to_many' },
])('should support $type relation', ({ type }) => {
expect(type).toBeDefined()
})
})
})

View File

@@ -1,95 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
import components from '../seed/components.json'
import scriptsManifest from '../seed/scripts/manifest.json'
describe('Screenshot Analyzer Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.name).toBe('screenshot_analyzer')
expect(metadata.version).toBe('1.0.0')
expect(metadata.description).toBeDefined()
})
it('should have correct minLevel for God access', () => {
expect(metadata.minLevel).toBe(5)
})
it('should have demo category', () => {
expect(metadata.category).toBe('demo')
})
it('should have browser bindings enabled', () => {
expect(metadata.bindings).toBeDefined()
expect(metadata.bindings.dbal).toBe(false)
expect(metadata.bindings.browser).toBe(true)
})
it('should export components', () => {
expect(metadata.exports.components).toContain('ScreenshotAnalyzer')
expect(metadata.exports.components).toContain('UploadSection')
expect(metadata.exports.components).toContain('ResultPanel')
expect(metadata.exports.components).toContain('PageInfo')
})
it('should export scripts', () => {
expect(metadata.exports.scripts).toContain('init')
expect(metadata.exports.scripts).toContain('capture')
expect(metadata.exports.scripts).toContain('analyze')
expect(metadata.exports.scripts).toContain('page_info')
})
})
describe('Screenshot Analyzer Package Components', () => {
it('should define ScreenshotAnalyzer component', () => {
expect(components.ScreenshotAnalyzer).toBeDefined()
expect(components.ScreenshotAnalyzer.type).toBe('ScreenshotAnalyzer')
expect(components.ScreenshotAnalyzer.category).toBe('demo')
})
it('should define ScreenshotAnalyzer with browser bindings', () => {
expect(components.ScreenshotAnalyzer.bindings?.browser).toBe(true)
})
it('should define UploadSection with browser bindings', () => {
expect(components.UploadSection).toBeDefined()
expect(components.UploadSection.bindings?.browser).toBe(true)
})
it('should define ResultPanel component', () => {
expect(components.ResultPanel).toBeDefined()
expect(components.ResultPanel.bindings?.browser).toBe(false)
})
it('should define PageInfo with browser bindings', () => {
expect(components.PageInfo).toBeDefined()
expect(components.PageInfo.bindings?.browser).toBe(true)
})
it('should have valid component configs', () => {
Object.values(components).forEach((component: unknown) => {
const comp = component as { type: string; category: string; config: { layout: string } }
expect(comp.type).toBeDefined()
expect(comp.category).toBeDefined()
expect(comp.config).toBeDefined()
expect(comp.config.layout).toBeDefined()
})
})
})
describe('Screenshot Analyzer Package Scripts', () => {
it('should have scripts manifest', () => {
expect(scriptsManifest.scripts).toBeDefined()
expect(scriptsManifest.scripts.length).toBeGreaterThan(0)
})
it.each([
['init', 'lifecycle'],
['capture', 'screenshot'],
['analyze', 'analysis'],
['page_info', 'browser'],
])('should have %s script in %s category', (name: string, category: string) => {
const script = scriptsManifest.scripts.find((s: { name: string }) => s.name === name)
expect(script).toBeDefined()
expect(script?.category).toBe(category)
})
})

View File

@@ -1,26 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Social Hub Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
expect(component.children).toBeInstanceOf(Array)
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Social Hub Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('social_hub')
expect(metadata.name).toBe('Social Hub')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,26 +0,0 @@
import { describe, it, expect } from 'vitest'
import components from '../seed/components.json'
interface ComponentDefinition {
id: string
type: string
children: unknown[]
}
describe('Stream Cast Components', () => {
it('should be a valid array', () => {
expect(components).toBeInstanceOf(Array)
})
it('should have valid component structure if components exist', () => {
if (components.length > 0) {
components.forEach((component: ComponentDefinition) => {
expect(component.id).toBeDefined()
expect(component.type).toBeDefined()
expect(typeof component.id).toBe('string')
expect(typeof component.type).toBe('string')
expect(component.children).toBeInstanceOf(Array)
})
}
})
})

View File

@@ -1,28 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('Stream Cast Package Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('stream_cast')
expect(metadata.name).toBe('Stream Cast')
expect(metadata.version).toBeDefined()
expect(metadata.description).toBeDefined()
})
it('should have correct package ID format', () => {
expect(metadata.packageId).toMatch(/^[a-z_]+$/)
})
it('should have semantic version', () => {
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should have exports defined', () => {
expect(metadata.exports).toBeDefined()
expect(metadata.exports.components).toBeInstanceOf(Array)
})
it('should have dependencies array', () => {
expect(metadata.dependencies).toBeInstanceOf(Array)
})
})

View File

@@ -1,31 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('ui_auth package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('ui_auth')
})
})
describe('access denied', () => {
it.each([
{ level: 2, message: 'User access required' },
{ level: 3, message: 'Admin access required' },
{ level: 4, message: 'God access required' },
{ level: 5, message: 'Super God access required' },
])('should show message for level $level', ({ message }) => {
expect(message).toBeDefined()
})
})
describe('auth gate', () => {
it.each([
{ user_level: 1, required: 2, allowed: false },
{ user_level: 2, required: 2, allowed: true },
{ user_level: 3, required: 2, allowed: true },
])('should gate level $user_level against required $required', ({ user_level, required, allowed }) => {
expect(user_level >= required).toBe(allowed)
})
})
})

View File

@@ -1,33 +0,0 @@
import { describe, it, expect } from 'vitest'
describe('ui_dialogs package', () => {
describe('metadata', () => {
it('should have valid package structure', async () => {
const metadata = await import('../seed/metadata.json')
expect(metadata.packageId).toBe('ui_dialogs')
})
})
describe('confirm dialog', () => {
it.each([
{ title: 'Delete Item', confirm: 'Delete', cancel: 'Cancel', destructive: true },
{ title: 'Save Changes', confirm: 'Save', cancel: 'Discard', destructive: false },
])('should render confirm dialog: $title', ({ title, confirm, cancel }) => {
expect(title).toBeDefined()
expect(confirm).toBeDefined()
expect(cancel).toBeDefined()
})
})
describe('alert dialog', () => {
it.each([
{ variant: 'info', icon: 'info' },
{ variant: 'success', icon: 'check' },
{ variant: 'warning', icon: 'warning' },
{ variant: 'error', icon: 'error' },
])('should render $variant alert', ({ variant, icon }) => {
expect(variant).toBeDefined()
expect(icon).toBeDefined()
})
})
})

View File

@@ -1,12 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Footer Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_footer')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should export AppFooter component', () => {
expect(metadata.exports.components).toContain('AppFooter')
})
})

View File

@@ -1,12 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Header Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_header')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should export AppHeader component', () => {
expect(metadata.exports.components).toContain('AppHeader')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_home package
-- Uses lua_test framework
describe("Home Page Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -1,18 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Home Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('ui_home')
expect(metadata.name).toBe('Home Page')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on ui_permissions', () => {
expect(metadata.dependencies).toContain('ui_permissions')
})
it('should export level1 page', () => {
expect(metadata.exports.pages).toContain('level1')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_intro package
-- Uses lua_test framework
describe("Intro Section Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,21 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_]+$", "desc": "lowercase with underscores only" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"export_types": [
{ "type": "components", "desc": "component exports" },
{ "type": "scripts", "desc": "lua script exports" }
],
"expected_components": [
{ "name": "IntroSection", "desc": "intro section component" }
]
}

View File

@@ -0,0 +1,30 @@
-- Metadata validation tests for ui_intro package
-- Uses lua_test framework
describe("Intro Section Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_intro")
expect(metadata.name).toBe("Intro Section")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
expect(metadata.exports.components).toBeType("table")
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
end)

View File

@@ -1,12 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Intro Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_intro')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should export IntroSection component', () => {
expect(metadata.exports.components).toContain('IntroSection')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_level2 package
-- Uses lua_test framework
describe("Level 2 User Dashboard Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,29 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_0-9]+$", "desc": "lowercase with underscores and numbers" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"required_dependencies": [
{ "dep": "ui_permissions", "desc": "permission handling" },
{ "dep": "ui_header", "desc": "application header" },
{ "dep": "ui_intro", "desc": "intro section" }
],
"min_levels": [
{ "minLevel": 2, "desc": "requires user-level access" }
],
"export_types": [
{ "type": "pages", "desc": "page exports" },
{ "type": "scripts", "desc": "lua script exports" }
],
"expected_pages": [
{ "name": "level2", "desc": "user dashboard page" }
]
}

View File

@@ -0,0 +1,45 @@
-- Metadata validation tests for ui_level2 package
-- Uses lua_test framework
describe("Level 2 User Dashboard Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_level2")
expect(metadata.name).toBe("Level 2 - User Dashboard")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_0-9]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
it("should depend on ui_permissions", function()
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == "ui_permissions" then found = true break end
end
expect(found).toBe(true)
end)
it("should require minLevel 2", function()
expect(metadata.minLevel).toBe(2)
end)
it("should export pages", function()
expect(metadata.exports.pages).toBeType("table")
end)
end)

View File

@@ -1,16 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Level 2 Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_level2')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on shared packages', () => {
expect(metadata.dependencies).toContain('ui_permissions')
expect(metadata.dependencies).toContain('ui_header')
})
it('should export level2 page', () => {
expect(metadata.exports.pages).toContain('level2')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_level3 package
-- Uses lua_test framework
describe("Level 3 Moderator Panel Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,29 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_0-9]+$", "desc": "lowercase with underscores and numbers" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"required_dependencies": [
{ "dep": "ui_permissions", "desc": "permission handling" },
{ "dep": "ui_header", "desc": "application header" },
{ "dep": "ui_intro", "desc": "intro section" }
],
"min_levels": [
{ "minLevel": 3, "desc": "requires moderator-level access" }
],
"export_types": [
{ "type": "pages", "desc": "page exports" },
{ "type": "scripts", "desc": "lua script exports" }
],
"expected_pages": [
{ "name": "level3", "desc": "moderator panel page" }
]
}

View File

@@ -0,0 +1,45 @@
-- Metadata validation tests for ui_level3 package
-- Uses lua_test framework
describe("Level 3 Moderator Panel Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_level3")
expect(metadata.name).toBe("Level 3 - Moderator Panel")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_0-9]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
it("should depend on ui_permissions", function()
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == "ui_permissions" then found = true break end
end
expect(found).toBe(true)
end)
it("should require minLevel 3", function()
expect(metadata.minLevel).toBe(3)
end)
it("should export pages", function()
expect(metadata.exports.pages).toBeType("table")
end)
end)

View File

@@ -1,16 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Level 3 Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_level3')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on shared packages', () => {
expect(metadata.dependencies).toContain('ui_permissions')
expect(metadata.dependencies).toContain('ui_header')
})
it('should export level3 page', () => {
expect(metadata.exports.pages).toContain('level3')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_level4 package
-- Uses lua_test framework
describe("Level 4 Admin Panel Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,31 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_0-9]+$", "desc": "lowercase with underscores and numbers" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"required_dependencies": [
{ "dep": "ui_permissions", "desc": "permission handling" },
{ "dep": "ui_header", "desc": "application header" },
{ "dep": "ui_intro", "desc": "intro section" },
{ "dep": "user_manager", "desc": "user management" },
{ "dep": "admin_dialog", "desc": "admin dialogs" }
],
"min_levels": [
{ "minLevel": 4, "desc": "requires admin-level access" }
],
"export_types": [
{ "type": "pages", "desc": "page exports" },
{ "type": "scripts", "desc": "lua script exports" }
],
"expected_pages": [
{ "name": "level4", "desc": "admin panel page" }
]
}

View File

@@ -0,0 +1,45 @@
-- Metadata validation tests for ui_level4 package
-- Uses lua_test framework
describe("Level 4 Admin Panel Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_level4")
expect(metadata.name).toBe("Level 4 - Admin Panel")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_0-9]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
it("should depend on ui_permissions", function()
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == "ui_permissions" then found = true break end
end
expect(found).toBe(true)
end)
it("should require minLevel 4", function()
expect(metadata.minLevel).toBe(4)
end)
it("should export pages", function()
expect(metadata.exports.pages).toBeType("table")
end)
end)

View File

@@ -1,16 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Level 4 Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_level4')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on shared packages', () => {
expect(metadata.dependencies).toContain('ui_permissions')
expect(metadata.dependencies).toContain('ui_header')
})
it('should export level4 page', () => {
expect(metadata.exports.pages).toContain('level4')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_level5 package
-- Uses lua_test framework
describe("Level 5 God Panel Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,31 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_0-9]+$", "desc": "lowercase with underscores and numbers" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"required_dependencies": [
{ "dep": "ui_permissions", "desc": "permission handling" },
{ "dep": "ui_header", "desc": "application header" },
{ "dep": "ui_intro", "desc": "intro section" },
{ "dep": "schema_editor", "desc": "schema editing" },
{ "dep": "workflow_editor", "desc": "workflow editing" }
],
"min_levels": [
{ "minLevel": 5, "desc": "requires god-level access" }
],
"export_types": [
{ "type": "pages", "desc": "page exports" },
{ "type": "scripts", "desc": "lua script exports" }
],
"expected_pages": [
{ "name": "level5", "desc": "god panel page" }
]
}

View File

@@ -0,0 +1,45 @@
-- Metadata validation tests for ui_level5 package
-- Uses lua_test framework
describe("Level 5 God Panel Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_level5")
expect(metadata.name).toBe("Level 5 - God Panel")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_0-9]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
it("should depend on ui_permissions", function()
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == "ui_permissions" then found = true break end
end
expect(found).toBe(true)
end)
it("should require minLevel 5", function()
expect(metadata.minLevel).toBe(5)
end)
it("should export pages", function()
expect(metadata.exports.pages).toBeType("table")
end)
end)

View File

@@ -1,16 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Level 5 Metadata', () => {
it('should have valid structure', () => {
expect(metadata.packageId).toBe('ui_level5')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on shared packages', () => {
expect(metadata.dependencies).toContain('ui_permissions')
expect(metadata.dependencies).toContain('ui_header')
})
it('should export level5 page', () => {
expect(metadata.exports.pages).toContain('level5')
})
})

View File

@@ -0,0 +1,6 @@
{
"component_fields": [
{ "field": "id", "type": "string", "desc": "unique identifier" },
{ "field": "type", "type": "string", "desc": "component type" }
]
}

View File

@@ -0,0 +1,21 @@
-- Component validation tests for ui_pages package
-- Uses lua_test framework
describe("UI Pages Bundle Components", function()
local components = load_cases("components.json")
it("should be a valid array", function()
expect(components).toBeType("table")
end)
it("should have valid component structure if components exist", function()
if #components > 0 then
for _, component in ipairs(components) do
expect(component.id).toBeTruthy()
expect(component.type).toBeTruthy()
expect(component.id).toBeType("string")
expect(component.type).toBeType("string")
end
end
end)
end)

View File

@@ -0,0 +1,32 @@
{
"package_id_validation": [
{ "pattern": "^[a-z_]+$", "desc": "lowercase with underscores only" }
],
"version_validation": [
{ "pattern": "^%d+%.%d+%.%d+$", "desc": "semantic version format" }
],
"required_fields": [
{ "field": "packageId", "desc": "package identifier" },
{ "field": "name", "desc": "display name" },
{ "field": "version", "desc": "version string" },
{ "field": "description", "desc": "package description" }
],
"required_dependencies": [
{ "dep": "ui_permissions", "desc": "permission handling" },
{ "dep": "ui_header", "desc": "application header" },
{ "dep": "ui_footer", "desc": "application footer" },
{ "dep": "ui_intro", "desc": "intro section" },
{ "dep": "ui_login", "desc": "login page" },
{ "dep": "ui_home", "desc": "home page" },
{ "dep": "ui_level2", "desc": "user dashboard" },
{ "dep": "ui_level3", "desc": "moderator panel" },
{ "dep": "ui_level4", "desc": "admin panel" },
{ "dep": "ui_level5", "desc": "god panel" },
{ "dep": "ui_level6", "desc": "supergod panel" }
],
"export_types": [
{ "type": "pages", "desc": "page exports" },
{ "type": "scripts", "desc": "lua script exports" },
{ "type": "components", "desc": "component exports" }
]
}

View File

@@ -0,0 +1,48 @@
-- Metadata validation tests for ui_pages package
-- Uses lua_test framework
describe("UI Pages Bundle Package Metadata", function()
local metadata = load_cases("metadata.json")
it("should have valid package structure", function()
expect(metadata.packageId).toBe("ui_pages")
expect(metadata.name).toBe("UI Pages Bundle")
expect(metadata.version).toBeTruthy()
expect(metadata.description).toBeTruthy()
end)
it("should have correct package ID format", function()
expect(metadata.packageId).toMatch("^[a-z_]+$")
end)
it("should have semantic version", function()
expect(metadata.version).toMatch("^%d+%.%d+%.%d+$")
end)
it("should have exports defined", function()
expect(metadata.exports).toBeTruthy()
end)
it("should have dependencies array", function()
expect(metadata.dependencies).toBeType("table")
end)
it("should depend on ui_permissions", function()
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == "ui_permissions" then found = true break end
end
expect(found).toBe(true)
end)
it("should bundle all level packages", function()
local levelPkgs = { "ui_login", "ui_home", "ui_level2", "ui_level3", "ui_level4", "ui_level5", "ui_level6" }
for _, pkg in ipairs(levelPkgs) do
local found = false
for _, dep in ipairs(metadata.dependencies) do
if dep == pkg then found = true break end
end
expect(found).toBe(true)
end
end)
end)

View File

@@ -1,45 +0,0 @@
import { describe, it, expect } from 'vitest'
import metadata from '../seed/metadata.json'
describe('UI Pages Bundle Metadata', () => {
it('should have valid package structure', () => {
expect(metadata.packageId).toBe('ui_pages')
expect(metadata.name).toBe('UI Pages Bundle')
expect(metadata.version).toMatch(/^\d+\.\d+\.\d+$/)
})
it('should depend on ui_permissions', () => {
expect(metadata.dependencies).toContain('ui_permissions')
})
it('should depend on ui_header', () => {
expect(metadata.dependencies).toContain('ui_header')
})
it('should depend on ui_footer', () => {
expect(metadata.dependencies).toContain('ui_footer')
})
it('should depend on ui_intro', () => {
expect(metadata.dependencies).toContain('ui_intro')
})
it('should depend on ui_login', () => {
expect(metadata.dependencies).toContain('ui_login')
})
it('should depend on ui_home', () => {
expect(metadata.dependencies).toContain('ui_home')
})
it('should depend on all level packages', () => {
expect(metadata.dependencies).toContain('ui_level2')
expect(metadata.dependencies).toContain('ui_level3')
expect(metadata.dependencies).toContain('ui_level4')
expect(metadata.dependencies).toContain('ui_level5')
})
it('should be in ui category', () => {
expect(metadata.category).toBe('ui')
})
})