routebar
Version:
A visual component for navigating between panel cells containing user content.
217 lines (205 loc) • 11.1 kB
JavaScript
define(['../js/main', './testsWrapper'], function(rb, TestsWrapper) {
'use strict';
function count(elem, length) {
var res = $(elem).length === length;
expect(res).toBe(true);
}
function checkScreen(screenName) {
return function () {
var curScreen = rb.Instances.rb1._screenManager.getCurScreen();
var res = screenName === curScreen.toString();
if (!res) {
console.log(screenName + ' != ' + curScreen.toString());
}
return res;
};
}
function nop() {
}
function nopDone(done) {
done();
}
function checkMarkup(niceMarkup) {
return function () {
var initMarkup = $('.rb').html();
var res = initMarkup === niceMarkup;
if (!res) {
console.log(initMarkup + ' != ' + niceMarkup);
}
return res;
};
}
function checkElementsPool(mainScreen, screens, elementsBySide) {
return function () {
var res = true;
var curRb = rb.Instances.rb1;
var mainScreenName = mainScreen.toString();
var elements = curRb._elementsPool._elements;
var count = 1 + screens.length;
res = res && Object.keys(elements).length === count;
!res && console.log('fail: Object.keys(elements).length === count', Object.keys(elements), Object.keys(elements).length, count);
res = res && elements[mainScreenName];
!res && console.log('fail: curScreen: elements[' + mainScreenName + '] not found', Object.keys(elements));
screens.forEach(function (screen) {
res = res && elements[screen.toString()];
!res && console.log('fail: elements[' + screen.toString() + '] not found', Object.keys(elements));
});
var element = elements[mainScreenName];
res = res && element.state === 'loaded';
!res && console.log('fail: element.state === "loaded"', element && element.state);
res = res && element.screen === mainScreen;
!res && console.log('fail: element.screen === mainScreen', element && element.screen && element.screen.toString(), mainScreen && mainScreen.toString());
res = res && element.element.is('.rb__center');
!res && console.log('fail: element.element.is(".rb__center")', element && element.element);
screens.forEach(function (screen) {
var element = elements[screen.toString()];
res = res && element.state === 'loaded';
!res && console.log('fail: element.state === "loaded"', element && element.state);
res = res && element.screen === screen;
!res && console.log('fail: element.screen === screen', element && element.screen && element.screen.toString(), screen && screen.toString());
});
res = res && curRb._elementsPool._elementsBySide['center'] === elementsBySide['center'];
!res && console.log('fail: curRb._elementsPool._elementsBySide["center"] === elementsBySide["center"]', curRb._elementsPool._elementsBySide["center"], elementsBySide["center"]);
res = res && curRb._elementsPool._elementsBySide['left'] === elementsBySide['left'];
!res && console.log('fail: curRb._elementsPool._elementsBySide["left"] === elementsBySide["left"]', curRb._elementsPool._elementsBySide["left"], elementsBySide["left"]);
res = res && curRb._elementsPool._elementsBySide['top'] === elementsBySide['top'];
!res && console.log('fail: curRb._elementsPool._elementsBySide["top"] === elementsBySide["top"]', curRb._elementsPool._elementsBySide["top"], elementsBySide["top"]);
res = res && curRb._elementsPool._elementsBySide['right'] === elementsBySide['right'];
!res && console.log('fail: curRb._elementsPool._elementsBySide["right"] === elementsBySide["right"]', curRb._elementsPool._elementsBySide["right"], elementsBySide["right"]);
res = res && curRb._elementsPool._elementsBySide['bottom'] === elementsBySide['bottom'];
!res && console.log('fail: curRb._elementsPool._elementsBySide["bottom"] === elementsBySide["bottom"]', curRb._elementsPool._elementsBySide["bottom"], elementsBySide["bottom"]);
return res;
};
}
function checkScreenManager(curScreen, sides) {
return function() {
var res = true;
var curRb = rb.Instances.rb1;
var screenManager = curRb._screenManager;
var screen = screenManager.getCurScreen();
res = res && screenManager.getCurScreen() && screenManager.getCurScreen() === curScreen;
!res && console.log('fail: screenManager.getCurScreen() && screenManager.getCurScreen() === curScreen', screenManager.getCurScreen() && screenManager.getCurScreen().toString(), curScreen && curScreen.toString());
res = res && screenManager._getLeft(screen) === sides.left;
!res && console.log('fail: screenManager._getLeft(screen) === sides.left', screenManager._getLeft(screen) && screenManager._getLeft(screen).toString(), sides.left && sides.left.toString());
res = res && screenManager._getTop(screen) === sides.top;
!res && console.log('fail: screenManager._getTop(screen) === sides.top', screenManager._getTop(screen) && screenManager._getTop(screen).toString(), sides.top && sides.top.toString());
res = res && screenManager._getTop(screen, true) === sides.topCycled;
!res && console.log('fail: screenManager._getTop(screen, true) === sides.topCycled', screenManager._getTop(screen, true) && screenManager._getTop(screen, true).toString(), sides.topCycled && sides.topCycled.toString());
res = res && screenManager._getRight(screen) === sides.right;
!res && console.log('fail: screenManager._getRight(screen) === sides.right', screenManager._getRight(screen) && screenManager._getRight(screen).toString(), sides.right && sides.right.toString());
res = res && screenManager._getBottom(screen) === sides.bottom;
!res && console.log('fail: screenManager._getBottom(screen) === sides.bottom', screenManager._getBottom(screen) && screenManager._getBottom(screen).toString(), sides.bottom && sides.bottom.toString());
res = res && screenManager._getBottom(screen, true) === sides.bottomCycled;
!res && console.log('fail: screenManager._getBottom(screen, true) === sides.bottomCycled', screenManager._getBottom(screen, true) && screenManager._getBottom(screen, true).toString(), sides.bottomCycled && sides.bottomCycled.toString());
return res;
};
}
function checkHistory(history) {
return function() {
var res = true;
var curRb = rb.Instances.rb1;
var screenManager = curRb._screenManager;
var curHistory = screenManager._history;
res = res && curHistory.length === history.length;
!res && console.log('fail: curHistory.length === history.length', curHistory.length, history.length);
history.forEach(function (historyStep, index) {
res = res && curHistory[index].lastScreen === historyStep.lastScreen;
!res && console.log('fail: curHistory[' + index + '].lastScreen === historyStep.lastScreen', index, curHistory[index].lastScreen && curHistory[index].lastScreen.toString(), historyStep.lastScreen && historyStep.lastScreen.toString());
res = res && curHistory[index].lastSide === historyStep.lastSide;
!res && console.log('fail: curHistory[' + index + '].lastSide === historyStep.lastSide', index, curHistory[index].lastSide && curHistory[index].lastSide.toString(), historyStep.lastSide && historyStep.lastSide.toString());
res = res && curHistory[index].side === historyStep.side;
!res && console.log('fail: curHistory[' + index + '].side === historyStep.side', index, curHistory[index].side && curHistory[index].side.toString(), historyStep.side && historyStep.side.toString());
res = res && curHistory[index].screen === historyStep.screen;
!res && console.log('fail: curHistory[' + index + '].screen === historyStep.screen', index, curHistory[index].screen && curHistory[index].screen.toString(), historyStep.screen && historyStep.screen.toString());
});
return res;
};
}
function move(side) {
return function (done) {
var rb1 = rb.Instances.rb1;
rb1.move(side).then(done, done);
}
}
function moveBack() {
return function (done) {
var rb1 = rb.Instances.rb1;
var res = rb1.moveBack();
if (res) {
res.then(done, done);
} else {
done();
}
}
}
function configure(config) {
return function (done) {
var rb1 = rb.Instances.rb1;
try {
rb1.configure(config);
} catch(e) {
console.error(e);
done(e);
}
done();
}
}
function setScreen(screen, isSaveHistory) {
return function (done) {
var rb1 = rb.Instances.rb1;
rb1.setScreen(screen, isSaveHistory).then(done, done);
}
}
function reload(side) {
return function (done) {
var rb1 = rb.Instances.rb1;
try {
rb1.reload(side);
} catch(e) {
console.error(e);
done(e);
}
done();
}
}
function goToScreen(screen, correctErr) {
return function (done) {
var rb1 = rb.Instances.rb1;
rb1.goToScreen(screen).then(done, function(err) {
if (correctErr) {
console.error(err);
expect(err instanceof correctErr).toBe(true);
}
done();
});
}
}
function checkError(correctError) {
return function (error) {
if (!error) return true;
var res = error instanceof correctError;
if (!res) {
console.error(error);
}
return res;
};//todo надо done(error) делать
}
return {
count: count,
checkScreen: checkScreen,
checkMarkup: checkMarkup,
checkElementsPool: checkElementsPool,
checkScreenManager: checkScreenManager,
checkHistory: checkHistory,
checkError: checkError,
nop: nop,
nopDone: nopDone,
move: move,
moveBack: moveBack,
configure: configure,
setScreen: setScreen,
reload: reload,
goToScreen: goToScreen,
TestsWrapper: TestsWrapper
};
});