feat: Add schema check and logging tests for project tasks and notes

This commit is contained in:
Chop
2025-06-19 22:13:08 +02:00
parent 3762f2e6f8
commit f0e3bf6eaa
5 changed files with 70 additions and 13 deletions

10
check-schema.mjs Normal file
View File

@@ -0,0 +1,10 @@
import db from "./src/lib/db.js";
console.log("Database schema for notes table:");
console.log(db.prepare("PRAGMA table_info(notes)").all());
console.log("\nDatabase schema for project_tasks table:");
console.log(db.prepare("PRAGMA table_info(project_tasks)").all());
console.log("\nSample notes to check is_system column:");
console.log(db.prepare("SELECT * FROM notes LIMIT 5").all());

View File

@@ -503,7 +503,6 @@ export default function ProjectTasksSection({ projectId }) {
</div>
</td>
</tr>
{/* Description row (expandable) */}
{task.description && expandedDescriptions[task.id] && (
<tr className="bg-blue-50">
@@ -516,7 +515,8 @@ export default function ProjectTasksSection({ projectId }) {
</div>
</td>
</tr>
)} {/* Notes row (expandable) */}
)}{" "}
{/* Notes row (expandable) */}
{expandedNotes[task.id] && (
<tr className="bg-gray-50">
<td colSpan="6" className="px-4 py-4">
@@ -533,9 +533,9 @@ export default function ProjectTasksSection({ projectId }) {
<div
key={note.note_id}
className={`p-3 rounded border flex justify-between items-start ${
note.is_system
? 'bg-blue-50 border-blue-200'
: 'bg-white border-gray-200'
note.is_system
? "bg-blue-50 border-blue-200"
: "bg-white border-gray-200"
}`}
>
<div className="flex-1">

View File

@@ -20,11 +20,9 @@ export function getNotesByTaskId(task_id) {
}
export function addNoteToTask(task_id, note, is_system = false) {
db.prepare(`INSERT INTO notes (task_id, note, is_system) VALUES (?, ?, ?)`).run(
task_id,
note,
is_system ? 1 : 0
);
db.prepare(
`INSERT INTO notes (task_id, note, is_system) VALUES (?, ?, ?)`
).run(task_id, note, is_system ? 1 : 0);
}
export function deleteNote(note_id) {

View File

@@ -62,7 +62,7 @@ export function getProjectTasks(projectId) {
export function createProjectTask(data) {
let result;
let taskName;
if (data.task_template_id) {
// Creating from template - explicitly set custom_max_wait_days to NULL so COALESCE uses template value
const stmt = db.prepare(`
@@ -75,7 +75,7 @@ export function createProjectTask(data) {
data.status || "pending",
data.priority || "normal"
);
// Get the template name for the log
const templateStmt = db.prepare("SELECT name FROM tasks WHERE task_id = ?");
const template = templateStmt.get(data.task_template_id);
@@ -94,7 +94,7 @@ export function createProjectTask(data) {
data.status || "pending",
data.priority || "normal"
);
taskName = data.custom_task_name;
}

49
test-logging.mjs Normal file
View File

@@ -0,0 +1,49 @@
import db from "./src/lib/db.js";
import {
createProjectTask,
updateProjectTaskStatus,
} from "./src/lib/queries/tasks.js";
import { getNotesByTaskId } from "./src/lib/queries/notes.js";
console.log("Testing automatic logging system...\n");
// Test 1: Create a new task and check if system note is created
console.log("Test 1: Creating a new task...");
try {
const result = createProjectTask({
project_id: 1, // Assuming project ID 1 exists
custom_task_name: "Test Task for Logging",
custom_description: "Testing automatic note creation",
custom_max_wait_days: 7,
priority: "high",
status: "pending",
});
const taskId = result.lastInsertRowid;
console.log(`✓ Task created with ID: ${taskId}`);
// Check if system note was created
const notes = getNotesByTaskId(taskId);
console.log(`✓ Notes found: ${notes.length}`);
console.log("Notes:", notes);
// Test 2: Update task status and check if system note is created
console.log("\nTest 2: Updating task status...");
updateProjectTaskStatus(taskId, "in_progress");
console.log("✓ Task status updated to in_progress");
// Check if new system note was created
const updatedNotes = getNotesByTaskId(taskId);
console.log(`✓ Notes after status update: ${updatedNotes.length}`);
console.log("Updated notes:", updatedNotes);
// Clean up - delete test task
console.log("\nCleaning up test data...");
db.prepare("DELETE FROM notes WHERE task_id = ?").run(taskId);
db.prepare("DELETE FROM project_tasks WHERE id = ?").run(taskId);
console.log("✓ Test data cleaned up");
} catch (error) {
console.error("❌ Error during testing:", error);
}
console.log("\nTest completed.");