mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
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:
@@ -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
|
||||
@@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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
|
||||
@@ -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')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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
|
||||
@@ -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')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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
|
||||
@@ -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')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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
|
||||
@@ -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')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_home/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_home/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_intro/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_intro/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
21
packages/ui_intro/seed/scripts/tests/metadata.cases.json
Normal file
21
packages/ui_intro/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
30
packages/ui_intro/seed/scripts/tests/metadata.test.lua
Normal file
30
packages/ui_intro/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_level2/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_level2/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
29
packages/ui_level2/seed/scripts/tests/metadata.cases.json
Normal file
29
packages/ui_level2/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
45
packages/ui_level2/seed/scripts/tests/metadata.test.lua
Normal file
45
packages/ui_level2/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_level3/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_level3/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
29
packages/ui_level3/seed/scripts/tests/metadata.cases.json
Normal file
29
packages/ui_level3/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
45
packages/ui_level3/seed/scripts/tests/metadata.test.lua
Normal file
45
packages/ui_level3/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_level4/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_level4/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
31
packages/ui_level4/seed/scripts/tests/metadata.cases.json
Normal file
31
packages/ui_level4/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
45
packages/ui_level4/seed/scripts/tests/metadata.test.lua
Normal file
45
packages/ui_level4/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_level5/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_level5/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
31
packages/ui_level5/seed/scripts/tests/metadata.cases.json
Normal file
31
packages/ui_level5/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
45
packages/ui_level5/seed/scripts/tests/metadata.test.lua
Normal file
45
packages/ui_level5/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component_fields": [
|
||||
{ "field": "id", "type": "string", "desc": "unique identifier" },
|
||||
{ "field": "type", "type": "string", "desc": "component type" }
|
||||
]
|
||||
}
|
||||
21
packages/ui_pages/seed/scripts/tests/components.test.lua
Normal file
21
packages/ui_pages/seed/scripts/tests/components.test.lua
Normal 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)
|
||||
32
packages/ui_pages/seed/scripts/tests/metadata.cases.json
Normal file
32
packages/ui_pages/seed/scripts/tests/metadata.cases.json
Normal 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" }
|
||||
]
|
||||
}
|
||||
48
packages/ui_pages/seed/scripts/tests/metadata.test.lua
Normal file
48
packages/ui_pages/seed/scripts/tests/metadata.test.lua
Normal 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)
|
||||
@@ -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')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user