mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
95 lines
2.5 KiB
JavaScript
95 lines
2.5 KiB
JavaScript
var expect = require("chai").expect;
|
|
|
|
module.exports = function (helpers) {
|
|
var component = helpers.mount(require.resolve("./index"), {});
|
|
|
|
var previousComponents = {};
|
|
|
|
function checkOrder(letters) {
|
|
component.input = { letters: letters };
|
|
component.update();
|
|
|
|
var divs = component.getEl("root").querySelectorAll("div");
|
|
|
|
expect(divs.length).to.equal(letters.length);
|
|
|
|
var newComponents = {};
|
|
|
|
for (var i = 0; i < letters.length; i++) {
|
|
var letter = letters[i];
|
|
|
|
var componentForValue = component.getComponent(letter);
|
|
expect(componentForValue != null).to.equal(true);
|
|
newComponents[letter] = componentForValue;
|
|
|
|
if (previousComponents[letter]) {
|
|
expect(previousComponents[letter]).to.equal(componentForValue);
|
|
}
|
|
|
|
expect(divs[i].id).to.equal(letter);
|
|
expect(divs[i].innerHTML).to.equal(letter);
|
|
}
|
|
|
|
Object.keys(previousComponents).forEach(function (letter) {
|
|
if (!(letter in newComponents)) {
|
|
expect(previousComponents[letter].isDestroyed()).to.equal(true);
|
|
}
|
|
});
|
|
|
|
previousComponents = newComponents;
|
|
}
|
|
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Single component swap
|
|
checkOrder(["a", "c", "b", "d", "e"]);
|
|
|
|
// Single component removal (remove 'C')
|
|
checkOrder(["a", "b", "d", "e"]);
|
|
|
|
// Single component addition
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Double component addition
|
|
checkOrder(["a", "b", "b1", "b2", "c", "d", "e"]);
|
|
|
|
// Double component removal
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Swap b and d
|
|
checkOrder(["a", "d", "c", "b", "e"]);
|
|
|
|
// Swap b and d back to normal
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Swap a and c
|
|
checkOrder(["c", "b", "a", "d", "e"]);
|
|
|
|
// Swap c and a back to normal
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Single component addition to START
|
|
checkOrder(["1", "a", "b", "c", "d", "e"]);
|
|
|
|
// Double component addition to START
|
|
checkOrder(["3", "2", "1", "a", "b", "c", "d", "e"]);
|
|
|
|
// Single component removal from START
|
|
checkOrder(["2", "1", "a", "b", "c", "d", "e"]);
|
|
|
|
// Double component removal from START
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
|
|
// Single component addition to END
|
|
checkOrder(["a", "b", "c", "d", "e", "f"]);
|
|
|
|
// Double component addition to END
|
|
checkOrder(["a", "b", "c", "d", "e", "f", "g", "h"]);
|
|
|
|
// Single component removal from END
|
|
checkOrder(["a", "b", "c", "d", "e", "f", "g"]);
|
|
|
|
// Double component removal from END
|
|
checkOrder(["a", "b", "c", "d", "e"]);
|
|
};
|