60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
159 lines
3.5 KiB
JavaScript
159 lines
3.5 KiB
JavaScript
const META = Symbol('proc-log.meta')
|
|
module.exports = {
|
|
META: META,
|
|
output: {
|
|
LEVELS: [
|
|
'standard',
|
|
'error',
|
|
'buffer',
|
|
'flush',
|
|
],
|
|
KEYS: {
|
|
standard: 'standard',
|
|
error: 'error',
|
|
buffer: 'buffer',
|
|
flush: 'flush',
|
|
},
|
|
standard: function (...args) {
|
|
return process.emit('output', 'standard', ...args)
|
|
},
|
|
error: function (...args) {
|
|
return process.emit('output', 'error', ...args)
|
|
},
|
|
buffer: function (...args) {
|
|
return process.emit('output', 'buffer', ...args)
|
|
},
|
|
flush: function (...args) {
|
|
return process.emit('output', 'flush', ...args)
|
|
},
|
|
},
|
|
log: {
|
|
LEVELS: [
|
|
'notice',
|
|
'error',
|
|
'warn',
|
|
'info',
|
|
'verbose',
|
|
'http',
|
|
'silly',
|
|
'timing',
|
|
'pause',
|
|
'resume',
|
|
],
|
|
KEYS: {
|
|
notice: 'notice',
|
|
error: 'error',
|
|
warn: 'warn',
|
|
info: 'info',
|
|
verbose: 'verbose',
|
|
http: 'http',
|
|
silly: 'silly',
|
|
timing: 'timing',
|
|
pause: 'pause',
|
|
resume: 'resume',
|
|
},
|
|
error: function (...args) {
|
|
return process.emit('log', 'error', ...args)
|
|
},
|
|
notice: function (...args) {
|
|
return process.emit('log', 'notice', ...args)
|
|
},
|
|
warn: function (...args) {
|
|
return process.emit('log', 'warn', ...args)
|
|
},
|
|
info: function (...args) {
|
|
return process.emit('log', 'info', ...args)
|
|
},
|
|
verbose: function (...args) {
|
|
return process.emit('log', 'verbose', ...args)
|
|
},
|
|
http: function (...args) {
|
|
return process.emit('log', 'http', ...args)
|
|
},
|
|
silly: function (...args) {
|
|
return process.emit('log', 'silly', ...args)
|
|
},
|
|
timing: function (...args) {
|
|
return process.emit('log', 'timing', ...args)
|
|
},
|
|
pause: function () {
|
|
return process.emit('log', 'pause')
|
|
},
|
|
resume: function () {
|
|
return process.emit('log', 'resume')
|
|
},
|
|
},
|
|
time: {
|
|
LEVELS: [
|
|
'start',
|
|
'end',
|
|
],
|
|
KEYS: {
|
|
start: 'start',
|
|
end: 'end',
|
|
},
|
|
start: function (name, fn) {
|
|
process.emit('time', 'start', name)
|
|
function end () {
|
|
return process.emit('time', 'end', name)
|
|
}
|
|
if (typeof fn === 'function') {
|
|
const res = fn()
|
|
if (res && res.finally) {
|
|
return res.finally(end)
|
|
}
|
|
end()
|
|
return res
|
|
}
|
|
return end
|
|
},
|
|
end: function (name) {
|
|
return process.emit('time', 'end', name)
|
|
},
|
|
},
|
|
input: {
|
|
LEVELS: [
|
|
'start',
|
|
'end',
|
|
'read',
|
|
],
|
|
KEYS: {
|
|
start: 'start',
|
|
end: 'end',
|
|
read: 'read',
|
|
},
|
|
start: function (...args) {
|
|
// Support callback for backwards compatibility and pass additional args to event
|
|
let fn
|
|
if (typeof args[0] === 'function') {
|
|
fn = args.shift()
|
|
}
|
|
process.emit('input', 'start', ...args)
|
|
function end () {
|
|
return process.emit('input', 'end', ...args)
|
|
}
|
|
if (typeof fn === 'function') {
|
|
const res = fn()
|
|
if (res && res.finally) {
|
|
return res.finally(end)
|
|
}
|
|
end()
|
|
return res
|
|
}
|
|
return end
|
|
},
|
|
end: function (...args) {
|
|
return process.emit('input', 'end', ...args)
|
|
},
|
|
read: function (...args) {
|
|
let resolve, reject
|
|
const promise = new Promise((_resolve, _reject) => {
|
|
resolve = _resolve
|
|
reject = _reject
|
|
})
|
|
process.emit('input', 'read', resolve, reject, ...args)
|
|
return promise
|
|
},
|
|
},
|
|
}
|