feat: add frontend README and backend test database
- Create frontend/README.md with setup, testing, and API integration instructions - Add backend test database file for local testing - Implement README validation tests to ensure documentation completeness - Update project documentation to reflect new structure and features
This commit is contained in:
78
tests/readme-validation.spec.ts
Normal file
78
tests/readme-validation.spec.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
describe('README Validation - Phase 9.5', () => {
|
||||
it('Test 1: README.md exists in root', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
expect(fs.existsSync(readmePath)).toBe(true);
|
||||
});
|
||||
|
||||
it('Test 2: README.md contains # Quasar heading', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/^# Quasar/m);
|
||||
});
|
||||
|
||||
it('Test 3: README.md contains Features section', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/## Features/);
|
||||
});
|
||||
|
||||
it('Test 4: README.md contains Quick Start section', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/## Quick Start/);
|
||||
});
|
||||
|
||||
it('Test 5: README.md contains Installation subsection', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/### Installation/);
|
||||
});
|
||||
|
||||
it('Test 6: README.md contains Testing section', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/## Testing/);
|
||||
});
|
||||
|
||||
it('Test 7: README.md contains link to SECURITY.md', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/\[SECURITY\.md\]\(SECURITY\.md\)/);
|
||||
});
|
||||
|
||||
it('Test 8: README.md contains link to docs/API_KEYS.md', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/\[docs\/API_KEYS\.md\]\(docs\/API_KEYS\.md\)/) ||
|
||||
expect(content).toMatch(/docs\/API_KEYS\.md/);
|
||||
});
|
||||
|
||||
it('Test 9: README.md contains Project Structure section', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/## Project Structure/);
|
||||
});
|
||||
|
||||
it('Test 10: README.md contains folder tree with backend/frontend', () => {
|
||||
const readmePath = path.join(__dirname, '..', 'README.md');
|
||||
const content = fs.readFileSync(readmePath, 'utf-8');
|
||||
expect(content).toMatch(/backend/);
|
||||
expect(content).toMatch(/frontend/);
|
||||
expect(content).toMatch(/tests/);
|
||||
});
|
||||
|
||||
it('Test 11: frontend/README.md exists', () => {
|
||||
const frontendReadmePath = path.join(__dirname, '..', 'frontend', 'README.md');
|
||||
expect(fs.existsSync(frontendReadmePath)).toBe(true);
|
||||
});
|
||||
|
||||
it('Test 12: frontend/README.md contains Setup instructions', () => {
|
||||
const frontendReadmePath = path.join(__dirname, '..', 'frontend', 'README.md');
|
||||
const content = fs.readFileSync(frontendReadmePath, 'utf-8');
|
||||
expect(content).toMatch(/## Setup/) || expect(content).toMatch(/setup/i);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user