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:
2026-02-12 20:53:59 +01:00
parent ce54db38d9
commit c27e9bec7a
5 changed files with 578 additions and 61 deletions

View 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);
});
});