Files
gnezim 60e2149072 Add comprehensive e2e test suites for Tasks 16-25
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.
2026-04-05 19:25:03 +03:00

65 lines
2.1 KiB
JavaScript

/**
* JSON Schema link handler
* Licensed under AFL-2.1 OR BSD-3-Clause
*/
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], function () {
return factory();
});
} else if (typeof module === 'object' && module.exports) {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals
root.jsonSchemaLinks = factory();
}
}(this, function () {// setup primitive classes to be JSON Schema types
var exports = {};
exports.cacheLinks = true;
exports.getLink = function(relation, instance, schema){
// gets the URI of the link for the given relation based on the instance and schema
// for example:
// getLink(
// "brother",
// {"brother_id":33},
// {links:[{rel:"brother", href:"Brother/{brother_id}"}]}) ->
// "Brother/33"
var links = schema.__linkTemplates;
if(!links){
links = {};
var schemaLinks = schema.links;
if(schemaLinks && schemaLinks instanceof Array){
schemaLinks.forEach(function(link){
/* // TODO: allow for multiple same-name relations
if(links[link.rel]){
if(!(links[link.rel] instanceof Array)){
links[link.rel] = [links[link.rel]];
}
}*/
links[link.rel] = link.href;
});
}
if(exports.cacheLinks){
schema.__linkTemplates = links;
}
}
var linkTemplate = links[relation];
return linkTemplate && exports.substitute(linkTemplate, instance);
};
exports.substitute = function(linkTemplate, instance){
return linkTemplate.replace(/\{([^\}]*)\}/g, function(t, property){
var value = instance[decodeURIComponent(property)];
if(value instanceof Array){
// the value is an array, it should produce a URI like /Table/(4,5,8) and store.get() should handle that as an array of values
return '(' + value.join(',') + ')';
}
return value;
});
};
return exports;
}));