mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Marko v3: Restored more of the tests from Marko v2
This commit is contained in:
parent
b676488693
commit
7d730049d9
@ -127,13 +127,16 @@ exports.createWalker = createWalker;
|
||||
exports.builder = Builder.DEFAULT_BUILDER;
|
||||
|
||||
var taglibLookup = require('./taglib-lookup');
|
||||
exports.taglibLookup = taglibLookup;
|
||||
exports.taglibLoader = require('./taglib-loader');
|
||||
|
||||
taglibLookup.registerTaglib(require.resolve('../taglibs/core/marko-taglib.json'));
|
||||
taglibLookup.registerTaglib(require.resolve('../taglibs/layout/marko-taglib.json'));
|
||||
taglibLookup.registerTaglib(require.resolve('../taglibs/html/marko-taglib.json'));
|
||||
|
||||
/*
|
||||
exports.Taglib = require('./Taglib');
|
||||
exports.loader = require('./taglib-loader');
|
||||
|
||||
exports.lookup = require('./taglib-lookup');
|
||||
exports.buildLookup = exports.lookup.buildLookup;
|
||||
exports.registerTaglib = exports.lookup.registerTaglib;
|
||||
|
||||
@ -14,6 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
exports.registerTaglib = registerTaglib;
|
||||
exports.buildLookup = buildLookup;
|
||||
exports.clearCaches = clearCaches;
|
||||
|
||||
var taglibLoader = require('../taglib-loader');
|
||||
var taglibFinder = require('../taglib-finder');
|
||||
@ -74,9 +77,4 @@ function registerTaglib(taglib) {
|
||||
|
||||
function clearCaches() {
|
||||
lookupCache = {};
|
||||
}
|
||||
|
||||
exports.excludeDir = taglibFinder.excludeDir;
|
||||
exports.registerTaglib = registerTaglib;
|
||||
exports.buildLookup = buildLookup;
|
||||
exports.clearCaches = clearCaches;
|
||||
}
|
||||
@ -47,6 +47,9 @@
|
||||
"@else-if": "argument",
|
||||
"@else": "argument",
|
||||
"@for": "argument",
|
||||
"transformer": "./core-transformer"
|
||||
"transformer": {
|
||||
"path": "./core-transformer",
|
||||
"priority": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
5
test/fixtures/taglib-custom-attribute/marko-taglib.json
vendored
Normal file
5
test/fixtures/taglib-custom-attribute/marko-taglib.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"<*>": {
|
||||
"@global-attribute": "boolean"
|
||||
}
|
||||
}
|
||||
3
test/fixtures/taglib-duplicate/foo-renderer.js
vendored
Normal file
3
test/fixtures/taglib-duplicate/foo-renderer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
exports.render = function(input, out) {
|
||||
|
||||
};
|
||||
6
test/fixtures/taglib-duplicate/marko-taglib.json
vendored
Normal file
6
test/fixtures/taglib-duplicate/marko-taglib.json
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"taglib-id": "taglib-duplicate",
|
||||
"<duplicate-foo>": {
|
||||
"renderer": "./foo-renderer.js"
|
||||
}
|
||||
}
|
||||
3
test/fixtures/taglib-duplicate/taglib-duplicate/bar-renderer.js
vendored
Normal file
3
test/fixtures/taglib-duplicate/taglib-duplicate/bar-renderer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
exports.render = function(input, out) {
|
||||
|
||||
};
|
||||
6
test/fixtures/taglib-duplicate/taglib-duplicate/marko-taglib.json
vendored
Normal file
6
test/fixtures/taglib-duplicate/taglib-duplicate/marko-taglib.json
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"taglib-id": "taglib-duplicate",
|
||||
"<duplicate-bar>": {
|
||||
"renderer": "./bar-renderer.js"
|
||||
}
|
||||
}
|
||||
7
test/fixtures/taglib-dynamic-attribute/marko-taglib.json
vendored
Normal file
7
test/fixtures/taglib-dynamic-attribute/marko-taglib.json
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"<test-dynamic-attribute>": {
|
||||
"renderer": "./renderer.js",
|
||||
"@foo": "string",
|
||||
"@*": "boolean"
|
||||
}
|
||||
}
|
||||
1
test/fixtures/taglib-dynamic-attribute/renderer.js
vendored
Normal file
1
test/fixtures/taglib-dynamic-attribute/renderer.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = function() {};
|
||||
3
test/fixtures/taglib-nested/foo-renderer.js
vendored
Normal file
3
test/fixtures/taglib-nested/foo-renderer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
exports.render = function(input, out) {
|
||||
out.write('nested/a');
|
||||
};
|
||||
10
test/fixtures/taglib-nested/marko-taglib.json
vendored
Normal file
10
test/fixtures/taglib-nested/marko-taglib.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"tags": {
|
||||
"nested-foo": {
|
||||
"renderer": "./foo-renderer.js",
|
||||
"attributes": {
|
||||
"attr1": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
25
test/fixtures/taglib-shorthand/marko-taglib.json
vendored
Normal file
25
test/fixtures/taglib-shorthand/marko-taglib.json
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"<shorthand-checkbox>": {
|
||||
"@label <label>": "string",
|
||||
"@checked": "boolean",
|
||||
"<checked>": "boolean"
|
||||
},
|
||||
"<shorthand-overlay>": {
|
||||
"nested-tags": {
|
||||
"body": {
|
||||
"@condensed": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"shorthand-button": {
|
||||
"@label": "string"
|
||||
},
|
||||
"shorthand-tabs": {
|
||||
"@tabs <tab>[]": {
|
||||
"@label": "string"
|
||||
},
|
||||
"@orientation": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
3
test/fixtures/taglib-transformers/bar-transformer.js
vendored
Normal file
3
test/fixtures/taglib-transformers/bar-transformer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
exports.transform = function (node, compiler, template) {
|
||||
|
||||
};
|
||||
3
test/fixtures/taglib-transformers/foo-transformer.js
vendored
Normal file
3
test/fixtures/taglib-transformers/foo-transformer.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
exports.transform = function (node, compiler, template) {
|
||||
|
||||
};
|
||||
18
test/fixtures/taglib-transformers/marko-taglib.json
vendored
Normal file
18
test/fixtures/taglib-transformers/marko-taglib.json
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"tags": {
|
||||
"transform-foo": {
|
||||
"transformer": {
|
||||
"name": "foo",
|
||||
"path": "./foo-transformer.js",
|
||||
"priority": -1
|
||||
}
|
||||
},
|
||||
"transform-bar": {
|
||||
"transformer": {
|
||||
"name": "bar",
|
||||
"path": "./bar-transformer.js",
|
||||
"priority": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@ require('chai').should();
|
||||
var expect = require('chai').expect;
|
||||
var nodePath = require('path');
|
||||
|
||||
xdescribe('taglib-loader' , function() {
|
||||
describe('taglib-loader' , function() {
|
||||
|
||||
beforeEach(function(done) {
|
||||
for (var k in require.cache) {
|
||||
@ -18,7 +18,7 @@ xdescribe('taglib-loader' , function() {
|
||||
});
|
||||
|
||||
it('should load a taglib with shorthand attributes and tags', function() {
|
||||
var taglibLoader = require('../compiler/taglibs').loader;
|
||||
var taglibLoader = require('../compiler').taglibLoader;
|
||||
var taglib = taglibLoader.load(nodePath.join(__dirname, 'fixtures/taglib-shorthand/marko-taglib.json'));
|
||||
expect(taglib != null).to.equal(true);
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ require('chai').should();
|
||||
var expect = require('chai').expect;
|
||||
var nodePath = require('path');
|
||||
|
||||
xdescribe('taglib-lookup' , function() {
|
||||
describe('taglib-lookup' , function() {
|
||||
|
||||
beforeEach(function(done) {
|
||||
for (var k in require.cache) {
|
||||
@ -18,33 +18,24 @@ xdescribe('taglib-lookup' , function() {
|
||||
});
|
||||
|
||||
it('should lookup core attributes for top-level template', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
// console.log('LOOKUP: ', Object.keys(lookup.attributes));
|
||||
var ifAttr = lookup.getAttribute('div', 'if');
|
||||
expect(ifAttr != null).to.equal(true);
|
||||
expect(ifAttr.type).to.equal('expression');
|
||||
expect(ifAttr.type).to.equal('argument');
|
||||
});
|
||||
|
||||
it('should lookup core tag for top-level template', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
var ifTag = lookup.getTag('if');
|
||||
expect(ifTag != null).to.equal(true);
|
||||
expect(ifTag.name).to.equal('if');
|
||||
});
|
||||
|
||||
it('should lookup core template for top-level template', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
// console.log(Object.keys(lookup.tags));
|
||||
var templateTag = lookup.getTag('c-template');
|
||||
expect(templateTag != null).to.equal(true);
|
||||
expect(templateTag.name).to.equal('c-template');
|
||||
});
|
||||
|
||||
it('should lookup custom tag for top-level template', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
var tag = lookup.getTag('test-hello');
|
||||
// console.log(Object.keys(lookup.tags));
|
||||
@ -52,35 +43,23 @@ xdescribe('taglib-lookup' , function() {
|
||||
expect(tag.name).to.equal('test-hello');
|
||||
});
|
||||
|
||||
it('should lookup custom attributes for top-level template', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
it('should allow for declared and dynamic attributes', function() {
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-dynamic-attribute'));
|
||||
// console.log(Object.keys(lookup.attributes));
|
||||
var attr = lookup.getAttribute('test-hello', 'name');
|
||||
var attr = lookup.getAttribute('test-dynamic-attribute', 'DYNAMIC');
|
||||
expect(attr != null).to.equal(true);
|
||||
expect(attr.type).to.equal('boolean');
|
||||
expect(attr.name).to.equal('*');
|
||||
|
||||
attr = lookup.getAttribute('test-dynamic-attribute', 'foo');
|
||||
expect(attr != null).to.equal(true);
|
||||
expect(attr.type).to.equal('string');
|
||||
|
||||
var attr2 = lookup.getAttribute('test-hello', 'splat');
|
||||
expect(attr2 != null).to.equal(true);
|
||||
expect(attr2.type).to.equal('number');
|
||||
|
||||
attr = lookup.getAttribute('test-hello', 'expr');
|
||||
expect(attr != null).to.equal(true);
|
||||
expect(attr.type).to.equal('expression');
|
||||
});
|
||||
|
||||
it('should allow for dynamic attributes', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
// console.log(Object.keys(lookup.attributes));
|
||||
var attr = lookup.getAttribute('test-hello', 'DYNAMIC');
|
||||
expect(attr != null).to.equal(true);
|
||||
expect(attr.type).to.equal('number');
|
||||
});
|
||||
|
||||
it('should lookup global attributes correctly', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-custom-attribute'));
|
||||
// console.log('LOOKUP: ', Object.keys(lookup.attributes));
|
||||
var attrDef = lookup.getAttribute('test-dynamic-attributes', 'global-attribute');
|
||||
expect(attrDef != null).to.equal(true);
|
||||
@ -88,7 +67,7 @@ xdescribe('taglib-lookup' , function() {
|
||||
});
|
||||
|
||||
it('should cache a lookup', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup1 = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
var lookup2 = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures'));
|
||||
var lookup3 = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-empty'));
|
||||
@ -99,7 +78,7 @@ xdescribe('taglib-lookup' , function() {
|
||||
});
|
||||
|
||||
it('should lookup nested tags', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-nested'));
|
||||
var tag = lookup.getTag('nested-foo');
|
||||
|
||||
@ -108,7 +87,7 @@ xdescribe('taglib-lookup' , function() {
|
||||
});
|
||||
|
||||
it('should lookup attributes for nested tags', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-nested'));
|
||||
// console.log(Object.keys(lookup.attributes));
|
||||
var attr = lookup.getAttribute('nested-foo', 'attr1');
|
||||
@ -119,20 +98,20 @@ xdescribe('taglib-lookup' , function() {
|
||||
it('should lookup tag transformers correctly for un-namespaced tags', function() {
|
||||
var transformers = [];
|
||||
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-nested'));
|
||||
|
||||
lookup.forEachTagTransformer('div', function(transformer) {
|
||||
transformers.push(transformer);
|
||||
});
|
||||
|
||||
expect(transformers.length).to.equal(2);
|
||||
expect(transformers.length).to.equal(1);
|
||||
});
|
||||
|
||||
it('should lookup tag transformers correctly for namespaced tag with transformer', function() {
|
||||
var transformers;
|
||||
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup;
|
||||
// lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/nested'));
|
||||
|
||||
@ -150,40 +129,36 @@ xdescribe('taglib-lookup' , function() {
|
||||
transformers.push(transformer);
|
||||
});
|
||||
|
||||
expect(transformers.length).to.equal(3);
|
||||
expect(transformers.length).to.equal(2);
|
||||
expect(transformers[0].path.indexOf('foo')).to.not.equal(-1);
|
||||
expect(transformers[1].path.indexOf('core-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers[2].path.indexOf('html-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers[1].path.indexOf('core-transformer')).to.not.equal(-1);
|
||||
|
||||
transformers = [];
|
||||
lookup.forEachTagTransformer('transform-bar', function(transformer) {
|
||||
transformers.push(transformer);
|
||||
});
|
||||
|
||||
expect(transformers.length).to.equal(3);
|
||||
expect(transformers[0].path.indexOf('core-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers.length).to.equal(2);
|
||||
expect(transformers[0].path.indexOf('core-transformer')).to.not.equal(-1);
|
||||
expect(transformers[1].path.indexOf('bar')).to.not.equal(-1);
|
||||
expect(transformers[2].path.indexOf('html-tag-transformer')).to.not.equal(-1);
|
||||
});
|
||||
|
||||
it('should lookup tag transformers core tag with custom node', function() {
|
||||
var transformers = [];
|
||||
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-nested'));
|
||||
|
||||
lookup.forEachTagTransformer('else', function(transformer) {
|
||||
transformers.push(transformer);
|
||||
});
|
||||
|
||||
expect(transformers.length).to.equal(3);
|
||||
expect(transformers[0].path.indexOf('core-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers[1].path.indexOf('else-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers[2].path.indexOf('html-tag-transformer')).to.not.equal(-1);
|
||||
expect(transformers.length).to.equal(1);
|
||||
expect(transformers[0].path.indexOf('core-transformer')).to.not.equal(-1);
|
||||
});
|
||||
|
||||
it('should de-duplicate taglibs', function() {
|
||||
var taglibLookup = require('../compiler/taglib-lookup');
|
||||
var taglibLookup = require('../compiler').taglibLookup;
|
||||
var lookup = taglibLookup.buildLookup(nodePath.join(__dirname, 'fixtures/taglib-duplicate/taglib-duplicate'));
|
||||
|
||||
// The "duplicate-bar" tag was declared in the lower
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user