Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
brainfood
/
rivets
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
491c56db
authored
2012-07-20 23:03:03 -0700
by
Michael Richards
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Split out the core routine unit tests from the functional style tests.
1 parent
9b3d6099
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
127 additions
and
110 deletions
spec/index.html
spec/rivets/functional.js
spec/rivets.js → spec/rivets/routines.js
spec/index.html
View file @
491c56d
...
...
@@ -2,7 +2,7 @@
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>
Rivets test suite
</title>
<title>
Rivets
.js
test suite
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"lib/jasmine.css"
>
...
...
@@ -14,7 +14,8 @@
<script
type=
"text/javascript"
src=
"matchers.js"
></script>
<script
type=
"text/javascript"
src=
"mock.data.js"
></script>
<script
type=
"text/javascript"
src=
"rivets/binding.js"
></script>
<script
type=
"text/javascript"
src=
"rivets.js"
></script>
<script
type=
"text/javascript"
src=
"rivets/routines.js"
></script>
<script
type=
"text/javascript"
src=
"rivets/functional.js"
></script>
<script
type=
"text/javascript"
>
(
function
()
{
...
...
spec/rivets/functional.js
0 → 100644
View file @
491c56d
describe
(
'Functional'
,
function
()
{
var
data
,
bindData
,
el
,
input
;
beforeEach
(
function
()
{
data
=
new
Data
({
foo
:
'bar'
});
bindData
=
{
data
:
data
};
el
=
document
.
createElement
(
'div'
);
input
=
document
.
createElement
(
'input'
);
input
.
setAttribute
(
'type'
,
'text'
);
rivets
.
configure
({
preloadData
:
true
,
adapter
:
{
subscribe
:
function
(
obj
,
keypath
,
callback
)
{
obj
.
on
(
keypath
,
callback
);
},
read
:
function
(
obj
,
keypath
)
{
return
obj
.
get
(
keypath
);
},
publish
:
function
(
obj
,
keypath
,
value
)
{
attributes
=
{};
attributes
[
keypath
]
=
value
;
obj
.
set
(
attributes
);
}
}
});
});
describe
(
'Adapter'
,
function
()
{
it
(
'should read the initial value'
,
function
()
{
spyOn
(
data
,
'get'
);
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
get
).
toHaveBeenCalledWith
(
'foo'
);
});
it
(
'should read the initial value unless preloadData is false'
,
function
()
{
rivets
.
configure
({
preloadData
:
false
});
spyOn
(
data
,
'get'
);
el
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
get
).
not
.
toHaveBeenCalled
();
});
it
(
'should subscribe to updates'
,
function
()
{
spyOn
(
data
,
'on'
);
el
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
on
).
toHaveBeenCalled
();
});
});
describe
(
'Binds'
,
function
()
{
describe
(
'Text'
,
function
()
{
it
(
'should set the text content of the element'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
textContent
||
el
.
innerText
).
toBe
(
data
.
get
(
'foo'
));
});
it
(
'should correctly handle HTML in the content'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
value
=
'<b>Fail</b>'
;
data
.
set
({
foo
:
value
});
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
textContent
||
el
.
innerText
).
toBe
(
value
);
});
});
describe
(
'HTML'
,
function
()
{
it
(
'should set the html content of the element'
,
function
()
{
el
.
setAttribute
(
'data-html'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
el
).
toHaveTheTextContent
(
data
.
get
(
'foo'
));
});
it
(
'should correctly handle HTML in the content'
,
function
()
{
el
.
setAttribute
(
'data-html'
,
'data.foo'
);
value
=
'<b>Fail</b>'
;
data
.
set
({
foo
:
value
});
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
innerHTML
).
toBe
(
value
);
});
});
describe
(
'Value'
,
function
()
{
it
(
'should set the value of the element'
,
function
()
{
input
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
input
,
bindData
);
expect
(
input
.
value
).
toBe
(
data
.
get
(
'foo'
));
});
});
});
describe
(
'Updates'
,
function
()
{
it
(
'should change the value'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
data
.
set
({
foo
:
'some new value'
});
expect
(
el
).
toHaveTheTextContent
(
data
.
get
(
'foo'
));
});
});
describe
(
'Input'
,
function
()
{
it
(
'should update the model value'
,
function
()
{
input
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
input
,
bindData
);
input
.
value
=
'some new value'
;
var
event
=
document
.
createEvent
(
'HTMLEvents'
)
event
.
initEvent
(
'change'
,
true
,
true
);
input
.
dispatchEvent
(
event
);
expect
(
input
.
value
).
toBe
(
data
.
get
(
'foo'
));
});
});
});
spec/rivets.js
→
spec/rivets
/routines
.js
View file @
491c56d
describe
(
'R
ivet
s'
,
function
()
{
var
data
,
bindData
,
el
,
input
;
describe
(
'R
outine
s'
,
function
()
{
var
el
,
input
;
beforeEach
(
function
()
{
data
=
new
Data
({
foo
:
'bar'
});
bindData
=
{
data
:
data
};
el
=
document
.
createElement
(
'div'
);
input
=
document
.
createElement
(
'input'
);
input
.
setAttribute
(
'type'
,
'text'
);
rivets
.
configure
({
preloadData
:
true
,
adapter
:
{
subscribe
:
function
(
obj
,
keypath
,
callback
)
{
obj
.
on
(
keypath
,
callback
);
},
read
:
function
(
obj
,
keypath
)
{
return
obj
.
get
(
keypath
);
},
publish
:
function
(
obj
,
keypath
,
value
)
{
attributes
=
{};
attributes
[
keypath
]
=
value
;
obj
.
set
(
attributes
);
}
subscribe
:
function
()
{},
unsubscribe
:
function
()
{},
read
:
function
()
{},
publish
:
function
()
{}
}
});
});
describe
(
'Adapter'
,
function
()
{
it
(
'should read the initial value'
,
function
()
{
spyOn
(
data
,
'get'
);
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
get
).
toHaveBeenCalledWith
(
'foo'
);
});
it
(
'should read the initial value unless preloadData is false'
,
function
()
{
rivets
.
configure
({
preloadData
:
false
});
spyOn
(
data
,
'get'
);
el
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
get
).
not
.
toHaveBeenCalled
();
});
it
(
'should subscribe to updates'
,
function
()
{
spyOn
(
data
,
'on'
);
el
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
data
.
on
).
toHaveBeenCalled
();
});
el
=
document
.
createElement
(
'div'
);
input
=
document
.
createElement
(
'input'
);
input
.
setAttribute
(
'type'
,
'text'
);
});
describe
(
'Routines'
,
function
()
{
describe
(
'text'
,
function
()
{
it
(
"sets the element's text content"
,
function
()
{
rivets
.
routines
.
text
(
el
,
'<em>gluten-free</em>'
);
...
...
@@ -201,68 +166,4 @@ describe('Rivets', function() {
});
});
});
});
describe
(
'Binds'
,
function
()
{
describe
(
'Text'
,
function
()
{
it
(
'should set the text content of the element'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
textContent
||
el
.
innerText
).
toBe
(
data
.
get
(
'foo'
));
});
it
(
'should correctly handle HTML in the content'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
value
=
'<b>Fail</b>'
;
data
.
set
({
foo
:
value
});
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
textContent
||
el
.
innerText
).
toBe
(
value
);
});
});
describe
(
'HTML'
,
function
()
{
it
(
'should set the html content of the element'
,
function
()
{
el
.
setAttribute
(
'data-html'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
expect
(
el
).
toHaveTheTextContent
(
data
.
get
(
'foo'
));
});
it
(
'should correctly handle HTML in the content'
,
function
()
{
el
.
setAttribute
(
'data-html'
,
'data.foo'
);
value
=
'<b>Fail</b>'
;
data
.
set
({
foo
:
value
});
rivets
.
bind
(
el
,
bindData
);
expect
(
el
.
innerHTML
).
toBe
(
value
);
});
});
describe
(
'Value'
,
function
()
{
it
(
'should set the value of the element'
,
function
()
{
input
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
input
,
bindData
);
expect
(
input
.
value
).
toBe
(
data
.
get
(
'foo'
));
});
});
});
describe
(
'Updates'
,
function
()
{
it
(
'should change the value'
,
function
()
{
el
.
setAttribute
(
'data-text'
,
'data.foo'
);
rivets
.
bind
(
el
,
bindData
);
data
.
set
({
foo
:
'some new value'
});
expect
(
el
).
toHaveTheTextContent
(
data
.
get
(
'foo'
));
});
});
describe
(
'Input'
,
function
()
{
it
(
'should update the model value'
,
function
()
{
input
.
setAttribute
(
'data-value'
,
'data.foo'
);
rivets
.
bind
(
input
,
bindData
);
input
.
value
=
'some new value'
;
var
event
=
document
.
createEvent
(
'HTMLEvents'
)
event
.
initEvent
(
'change'
,
true
,
true
);
input
.
dispatchEvent
(
event
);
expect
(
input
.
value
).
toBe
(
data
.
get
(
'foo'
));
});
});
});
...
...
Please
register
or
sign in
to post a comment