feat: migrate comprehensive courses to sessions
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { dirname, resolve } from 'node:path'
|
||||
|
||||
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
||||
const srcRoot = resolve(root, 'src')
|
||||
const failures = []
|
||||
|
||||
const expectIncludes = (content, expected, label) => {
|
||||
if (!content.includes(expected)) failures.push(`${label} is missing: ${expected}`)
|
||||
}
|
||||
|
||||
const expectExcludes = (content, unexpected, label) => {
|
||||
if (content.includes(unexpected)) failures.push(`${label} should not contain: ${unexpected}`)
|
||||
}
|
||||
|
||||
const courseApi = readFileSync(resolve(srcRoot, 'modules/comprehensive/api/course.js'), 'utf8')
|
||||
const bookingApi = readFileSync(resolve(srcRoot, 'modules/comprehensive/api/booking.js'), 'utf8')
|
||||
|
||||
expectIncludes(courseApi, "url: '/api/sessions'", 'session list endpoint')
|
||||
expectIncludes(courseApi, 'url: `/api/sessions/${id}`', 'session detail endpoint')
|
||||
expectIncludes(courseApi, 'data: { session_id: sessionId }', 'booking payload')
|
||||
expectExcludes(courseApi, "url: '/api/courses'", 'legacy course endpoint')
|
||||
expectIncludes(bookingApi, 'session_id: backendBooking.session_id', 'booking session id')
|
||||
expectIncludes(bookingApi, 'session: toBookingSession(backendBooking.session)', 'booking session mapper')
|
||||
expectExcludes(bookingApi, 'course: toBookingCourse(backendBooking.course)', 'legacy booking course')
|
||||
|
||||
if (failures.length) {
|
||||
console.error(`Comprehensive session contract verification failed with ${failures.length} issue(s):`)
|
||||
for (const failure of failures) console.error(`- ${failure}`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
console.log('Comprehensive session contract verification passed.')
|
||||
Reference in New Issue
Block a user