data-provider attr is now always an expression

This commit is contained in:
Patrick Steele-Idem 2014-09-22 11:46:18 -06:00
parent 0cfd079479
commit 96205fc607
16 changed files with 116 additions and 147 deletions

View File

@ -1011,7 +1011,7 @@ template.render({
```
```html
<async-fragment data-providers="${data.userProfileDataProvider}"
<async-fragment data-provider="data.userProfileDataProvider"
var="userProfile"
arg-userId="${data.userId}">

View File

@ -23,19 +23,19 @@
"events": "^1.0.2",
"htmlparser2": "^3.7.2",
"minimatch": "^0.2.14",
"property-handlers": "^0.2.1-beta",
"raptor-args": "^1.0.0-beta",
"raptor-json": "^1.0.0-beta",
"raptor-logging": "^1.0.0-beta",
"raptor-modules": "^1.0.0-beta",
"raptor-polyfill": "^1.0.0-beta",
"raptor-promises": "^1.0.0-beta",
"raptor-regexp": "^1.0.0-beta",
"async-writer": "^1.0.0-beta",
"raptor-strings": "^1.0.0-beta",
"property-handlers": "^0.2.1",
"raptor-args": "^1.0.0",
"raptor-json": "^1.0.0",
"raptor-logging": "^1.0.0",
"raptor-modules": "^1.0.0",
"raptor-polyfill": "^1.0.0",
"raptor-promises": "^1.0.0",
"raptor-regexp": "^1.0.0",
"async-writer": "^1.0.0",
"raptor-strings": "^1.0.0",
"marko-async": "^1.1.0",
"marko-layout": "^1.1.0",
"raptor-util": "^1.0.0-beta",
"raptor-util": "^1.0.0",
"sax": "^0.6.0"
},
"devDependencies": {
@ -43,8 +43,8 @@
"dustjs-linkedin": "^2.3.4",
"jshint": "^2.5.0",
"mocha": "~1.15.1",
"raptor-cache": "^1.0.0-beta",
"raptor-data-providers": "^1.0.0-beta",
"raptor-cache": "^1.0.0",
"raptor-data-providers": "^1.0.0",
"through": "^2.3.4"
},
"license": "Apache License v2.0",

View File

@ -2,7 +2,6 @@
var chai = require('chai');
chai.Assertion.includeStack = true;
require('chai').should();
var expect = require('chai').expect;
var nodePath = require('path');
var fs = require('fs');
@ -42,11 +41,6 @@ function testRender(path, data, done, options) {
require('../compiler').defaultOptions.checkUpToDate = false;
if (options.dataProviders) {
var dataProviders = require('raptor-data-providers').forContext(out);
dataProviders.register(options.dataProviders);
}
marko.render(inputPath, data, out)
.on('end', function() {
var output = out.getOutput();
@ -92,101 +86,85 @@ describe('marko/marko-async' , function() {
});
it('should render a simple template with async fragments correctly (1)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800)
}
});
testRender('test-project/html-templates/async-fragment-ordering.marko', {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800)
}, done);
});
it('should render a simple template with async fragments correctly (2)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(200),
'D3': delayedDataProvider(300),
'D4': delayedDataProvider(150)
}
});
testRender('test-project/html-templates/async-fragment-ordering.marko', {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(200),
'D3': delayedDataProvider(300),
'D4': delayedDataProvider(150)
}, done);
});
it('should render a simple template with async fragments correctly (3)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(800),
'D2': delayedDataProvider(200),
'D3': delayedDataProvider(300),
'D4': delayedDataProvider(100)
}
});
testRender('test-project/html-templates/async-fragment-ordering.marko', {
'D1': delayedDataProvider(800),
'D2': delayedDataProvider(200),
'D3': delayedDataProvider(300),
'D4': delayedDataProvider(100)
}, done);
});
it('should render a simple template with async fragments correctly (4)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(800),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(100)
}
});
testRender('test-project/html-templates/async-fragment-ordering.marko', {
'D1': delayedDataProvider(800),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(100)
}, done);
});
it('should render a less simple template with async fragments correctly (1)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(900),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(50)
}
});
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(900),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(50)
}, done);
});
it('should render a less simple template with async fragments correctly (2)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(900),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(200)
}
});
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
'D1': delayedDataProvider(100),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(900),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(200)
}, done);
});
it('should render a less simple template with async fragments correctly (3)', function(done) {
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(900),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(100),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(200)
}
});
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
'D1': delayedDataProvider(900),
'D2': delayedDataProvider(300),
'D3': delayedDataProvider(200),
'D4': delayedDataProvider(800),
'D5': delayedDataProvider(100),
'D6': delayedDataProvider(100),
'D7': delayedDataProvider(200)
}, done);
});
it("should allow for using macros inside async fragments", function(done) {
testRender('test-project/html-templates/async-fragment-macros.marko', {}, done, {
dataProviders: {
'D1': delayedDataProvider(100)
}
});
testRender('test-project/html-templates/async-fragment-macros.marko', {
'D1': delayedDataProvider(100)
}, done);
});
it("should allow for global data providers", function(done) {
require('raptor-data-providers').register({
testRender('test-project/html-templates/async-fragment-data-providers.marko', {
'sharedData': function(args, done) {
var deferred = require('raptor-promises').defer();
@ -197,14 +175,9 @@ describe('marko/marko-async' , function() {
}, 100);
return deferred.promise;
}
});
testRender('test-project/html-templates/async-fragment-data-providers.marko', {}, done, {
dataProviders: {
'contextData': delayedDataProvider(100, {name: "testContextData"})
}
});
},
'contextData': delayedDataProvider(100, {name: "testContextData"})
}, done);
});
it("should allow for data args", function(done) {
@ -233,15 +206,13 @@ describe('marko/marko-async' , function() {
};
testRender('test-project/html-templates/async-fragment-args.marko', {}, done, {
dataProviders: {
'userInfo': function(arg, done) {
setTimeout(function() {
done(null, users[arg.userId]);
}, 100);
}
testRender('test-project/html-templates/async-fragment-args.marko', {
'userInfo': function(arg, done) {
setTimeout(function() {
done(null, users[arg.userId]);
}, 100);
}
});
}, done);
});
it("should allow a data provider to be a promise", function(done) {
@ -251,13 +222,11 @@ describe('marko/marko-async' , function() {
deferred.resolve('Test promise');
}, 200);
testRender('test-project/html-templates/async-fragment-promise.marko', {}, done, {
dataProviders: {
'promiseData': function(arg, done) {
return deferred.promise;
}
testRender('test-project/html-templates/async-fragment-promise.marko', {
'promiseData': function(arg, done) {
return deferred.promise;
}
});
}, done);
});
it("should allow functions that return promises as data providers", function(done) {

View File

@ -1,3 +1,3 @@
<async-fragment data-provider="$data.nameDataProvider" var="name">
<async-fragment data-provider="data.nameDataProvider" var="name">
Hello $name!
</async-fragment>

View File

@ -1,6 +1,6 @@
<ul>
<li for="userId in [0, 1, 2, 3]">
<async-fragment data-provider="userInfo" var="userInfo" arg-userId="$userId">
<async-fragment data-provider="data.userInfo" var="userInfo" arg-userId="$userId">
<ul>
<li>
<b>Name:</b> $userInfo.name

View File

@ -1,7 +1,7 @@
<async-fragment data-provider="contextData" var="d1">
<async-fragment data-provider="data.contextData" var="d1">
$d1.name
</async-fragment>
<async-fragment data-provider="sharedData" var="d2">
<async-fragment data-provider="data.sharedData" var="d2">
$d2.name
</async-fragment>

View File

@ -1,3 +1,3 @@
<async-fragment data-provider="${data.userInfo}" var="userInfo">
<async-fragment data-provider="data.userInfo" var="userInfo">
Hello $userInfo.name
</async-fragment>

View File

@ -1,7 +1,7 @@
<def function="asyncMacro(num)">
$num
</def>1
<async-fragment data-provider="D1">
<async-fragment data-provider="data.D1" var="D1">
<invoke function="asyncMacro" num="2"/>
</async-fragment>
3

View File

@ -1,17 +1,17 @@
1
<async-fragment data-provider="D1" var="d1">
<async-fragment data-provider="data.D1" var="d1">
2
<async-fragment data-provider="D2" var="d2">
<async-fragment data-provider="data.D2" var="d2">
3
</async-fragment>
4
<async-fragment data-provider="D3" var="d3">
<async-fragment data-provider="data.D3" var="d3">
5
</async-fragment>
6
</async-fragment>
7
<async-fragment data-provider="D4" var="d4">
<async-fragment data-provider="data.D4" var="d4">
8
</async-fragment>
9

View File

@ -1,13 +1,13 @@
1
<async-fragment data-provider="D1">
<async-fragment data-provider="data.D1" var="d1">
2
<async-fragment data-provider="D2" var="d2">
<async-fragment data-provider="data.D2" var="d2">
3
</async-fragment>
4
<async-fragment data-provider="D3" var="d3">
<async-fragment data-provider="data.D3" var="d3">
5
<async-fragment data-provider="D4" var="d4">
<async-fragment data-provider="data.D4" var="d4">
6
</async-fragment>
7
@ -15,17 +15,17 @@
8
</async-fragment>
9
<async-fragment data-provider="D5" var="d5">
<async-fragment data-provider="data.D5" var="d5">
10
<async-fragment data-provider="D6" var="d6">
<async-fragment data-provider="data.D6" var="d6">
11
</async-fragment>
12
<async-fragment data-provider="D7" var="d7">
<async-fragment data-provider="data.D7" var="d7">
13
</async-fragment>
14
<async-fragment data-provider="D7" var="d7">
<async-fragment data-provider="data.D7" var="d7">
15
</async-fragment>
16

View File

@ -1,3 +1,3 @@
<async-fragment data-provider="promiseData" var="promiseData">
<async-fragment data-provider="data.promiseData" var="promiseData">
$promiseData
</async-fragment>

View File

@ -1,3 +1,3 @@
<async-fragment data-provider="${data.userInfo}" var="userInfo" timeout="100" timeout-message="Server is busy!">
<async-fragment data-provider="data.userInfo" var="userInfo" timeout="100" timeout-message="Server is busy!">
Hello World
</async-fragment>

View File

@ -2,7 +2,7 @@
<ul>
<li for="userId in [0, 1, 2, 3]">
<async-fragment dependency="userInfo" var="userInfo" arg-userId="$userId">
<async-fragment data-provider="data.userInfo" var="userInfo" arg-userId="$userId">
<ul>
<li>
<b>Name:</b> $userInfo.name

View File

@ -1,6 +1,6 @@
<c-template>
<async-fragment data-provider="${data.userInfo}" var="userInfo">
<async-fragment data-provider="data.userInfo" var="userInfo">
Hello $userInfo.name
</async-fragment>