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.
259 lines
6.3 KiB
JavaScript
259 lines
6.3 KiB
JavaScript
var common = require('../common');
|
|
var assert = common.assert;
|
|
var fake = common.fake.create();
|
|
var retry = require(common.dir.lib + '/retry');
|
|
|
|
(function testReset() {
|
|
var error = new Error('some error');
|
|
var operation = retry.operation([1, 2, 3]);
|
|
var attempts = 0;
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var expectedFinishes = 1;
|
|
var finishes = 0;
|
|
|
|
var fn = function() {
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
if (operation.retry(error)) {
|
|
return;
|
|
}
|
|
|
|
finishes++
|
|
assert.equal(expectedFinishes, finishes);
|
|
assert.strictEqual(attempts, 4);
|
|
assert.strictEqual(operation.attempts(), attempts);
|
|
assert.strictEqual(operation.mainError(), error);
|
|
|
|
if (finishes < 2) {
|
|
attempts = 0;
|
|
expectedFinishes++;
|
|
operation.reset();
|
|
fn()
|
|
} else {
|
|
finalCallback();
|
|
}
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|
|
|
|
(function testErrors() {
|
|
var operation = retry.operation();
|
|
|
|
var error = new Error('some error');
|
|
var error2 = new Error('some other error');
|
|
operation._errors.push(error);
|
|
operation._errors.push(error2);
|
|
|
|
assert.deepEqual(operation.errors(), [error, error2]);
|
|
})();
|
|
|
|
(function testMainErrorReturnsMostFrequentError() {
|
|
var operation = retry.operation();
|
|
var error = new Error('some error');
|
|
var error2 = new Error('some other error');
|
|
|
|
operation._errors.push(error);
|
|
operation._errors.push(error2);
|
|
operation._errors.push(error);
|
|
|
|
assert.strictEqual(operation.mainError(), error);
|
|
})();
|
|
|
|
(function testMainErrorReturnsLastErrorOnEqualCount() {
|
|
var operation = retry.operation();
|
|
var error = new Error('some error');
|
|
var error2 = new Error('some other error');
|
|
|
|
operation._errors.push(error);
|
|
operation._errors.push(error2);
|
|
|
|
assert.strictEqual(operation.mainError(), error2);
|
|
})();
|
|
|
|
(function testAttempt() {
|
|
var operation = retry.operation();
|
|
var fn = new Function();
|
|
|
|
var timeoutOpts = {
|
|
timeout: 1,
|
|
cb: function() {}
|
|
};
|
|
operation.attempt(fn, timeoutOpts);
|
|
|
|
assert.strictEqual(fn, operation._fn);
|
|
assert.strictEqual(timeoutOpts.timeout, operation._operationTimeout);
|
|
assert.strictEqual(timeoutOpts.cb, operation._operationTimeoutCb);
|
|
})();
|
|
|
|
(function testRetry() {
|
|
var error = new Error('some error');
|
|
var operation = retry.operation([1, 2, 3]);
|
|
var attempts = 0;
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var fn = function() {
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
if (operation.retry(error)) {
|
|
return;
|
|
}
|
|
|
|
assert.strictEqual(attempts, 4);
|
|
assert.strictEqual(operation.attempts(), attempts);
|
|
assert.strictEqual(operation.mainError(), error);
|
|
finalCallback();
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|
|
|
|
(function testRetryForever() {
|
|
var error = new Error('some error');
|
|
var operation = retry.operation({ retries: 3, forever: true });
|
|
var attempts = 0;
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var fn = function() {
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
if (attempts !== 6 && operation.retry(error)) {
|
|
return;
|
|
}
|
|
|
|
assert.strictEqual(attempts, 6);
|
|
assert.strictEqual(operation.attempts(), attempts);
|
|
assert.strictEqual(operation.mainError(), error);
|
|
finalCallback();
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|
|
|
|
(function testRetryForeverNoRetries() {
|
|
var error = new Error('some error');
|
|
var delay = 50
|
|
var operation = retry.operation({
|
|
retries: null,
|
|
forever: true,
|
|
minTimeout: delay,
|
|
maxTimeout: delay
|
|
});
|
|
|
|
var attempts = 0;
|
|
var startTime = new Date().getTime();
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var fn = function() {
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
if (attempts !== 4 && operation.retry(error)) {
|
|
return;
|
|
}
|
|
|
|
var endTime = new Date().getTime();
|
|
var minTime = startTime + (delay * 3);
|
|
var maxTime = minTime + 20 // add a little headroom for code execution time
|
|
assert(endTime >= minTime)
|
|
assert(endTime < maxTime)
|
|
assert.strictEqual(attempts, 4);
|
|
assert.strictEqual(operation.attempts(), attempts);
|
|
assert.strictEqual(operation.mainError(), error);
|
|
finalCallback();
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|
|
|
|
(function testStop() {
|
|
var error = new Error('some error');
|
|
var operation = retry.operation([1, 2, 3]);
|
|
var attempts = 0;
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var fn = function() {
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
|
|
if (attempts === 2) {
|
|
operation.stop();
|
|
|
|
assert.strictEqual(attempts, 2);
|
|
assert.strictEqual(operation.attempts(), attempts);
|
|
assert.strictEqual(operation.mainError(), error);
|
|
finalCallback();
|
|
}
|
|
|
|
if (operation.retry(error)) {
|
|
return;
|
|
}
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|
|
|
|
(function testMaxRetryTime() {
|
|
var error = new Error('some error');
|
|
var maxRetryTime = 30;
|
|
var operation = retry.operation({
|
|
minTimeout: 1,
|
|
maxRetryTime: maxRetryTime
|
|
});
|
|
var attempts = 0;
|
|
|
|
var finalCallback = fake.callback('finalCallback');
|
|
fake.expectAnytime(finalCallback);
|
|
|
|
var longAsyncFunction = function (wait, callback){
|
|
setTimeout(callback, wait);
|
|
};
|
|
|
|
var fn = function() {
|
|
var startTime = new Date().getTime();
|
|
operation.attempt(function(currentAttempt) {
|
|
attempts++;
|
|
assert.equal(currentAttempt, attempts);
|
|
|
|
if (attempts !== 2) {
|
|
if (operation.retry(error)) {
|
|
return;
|
|
}
|
|
} else {
|
|
var curTime = new Date().getTime();
|
|
longAsyncFunction(maxRetryTime - (curTime - startTime - 1), function(){
|
|
if (operation.retry(error)) {
|
|
assert.fail('timeout should be occurred');
|
|
return;
|
|
}
|
|
|
|
assert.strictEqual(operation.mainError(), error);
|
|
finalCallback();
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
fn();
|
|
})();
|