Browse Source
Add proper console output for jasmine tests and proper include. Creates new test for running with continuous integration or for local watch
pull/258/head
Add proper console output for jasmine tests and proper include. Creates new test for running with continuous integration or for local watch
pull/258/head
jlukic
11 years ago
10 changed files with 1167 additions and 117 deletions
Unified View
Diff Options
-
2.travis.yml
-
144Gruntfile.js
-
71package.json
-
320test/coverage/PhantomJS 1.9.2 (Linux)/index.html
-
1test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css
-
1test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js
-
1test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_005413.json
-
705test/helpers/jasmine-jquery.js
-
32test/karma.conf.js
-
7test/modules/modal.js
@ -1,41 +1,42 @@ |
|||||
{ |
{ |
||||
"name" : "semantic", |
|
||||
"title" : "Semantic UI", |
|
||||
"description" : "Semantic empowers designers and developers by creating a shared vocabulary for UI.", |
|
||||
"homepage" : "http://www.semantic-ui.com", |
|
||||
"author" : "Jack Lukic <jacklukic@gmail.com>", |
|
||||
|
"name": "semantic", |
||||
|
"title": "Semantic UI", |
||||
|
"description": "Semantic empowers designers and developers by creating a shared vocabulary for UI.", |
||||
|
"homepage": "http://www.semantic-ui.com", |
||||
|
"author": "Jack Lukic <jacklukic@gmail.com>", |
||||
"license": "MIT", |
"license": "MIT", |
||||
|
|
||||
"dependencies" : { |
|
||||
"docpad" : "~6.53.4", |
|
||||
"docpad-plugin-eco" : "~2.0.2", |
|
||||
"docpad-plugin-ghpages" : "~2.4.0", |
|
||||
"docpad-plugin-partials" : "~2.8.0" |
|
||||
|
"dependencies": { |
||||
|
"docpad": "~6.53.4", |
||||
|
"docpad-plugin-eco": "~2.0.2", |
||||
|
"docpad-plugin-ghpages": "~2.4.0", |
||||
|
"docpad-plugin-partials": "~2.8.0" |
||||
}, |
}, |
||||
"devDependencies": { |
"devDependencies": { |
||||
"grunt" : "~0.4.1", |
|
||||
"grunt-contrib-watch" : "~0.5.3", |
|
||||
"grunt-contrib-clean" : "~0.5.0", |
|
||||
"grunt-contrib-uglify" : "~0.2.2", |
|
||||
"grunt-contrib-cssmin" : "~0.6.1", |
|
||||
"grunt-contrib-less" : "~0.7.0", |
|
||||
"grunt-contrib-copy" : "~0.4.1", |
|
||||
"grunt-docco" : "~0.2.0", |
|
||||
"grunt-bower-task" : "~0.3.1", |
|
||||
"grunt-css" : "~0.5.4", |
|
||||
"grunt-contrib-compress" : "~0.5.2", |
|
||||
"grunt-contrib-concat" : "~0.3.0", |
|
||||
"grunt-docco-multi" : "0.0.2", |
|
||||
"grunt-cssjanus" : "~0.1.1", |
|
||||
"karma-script-launcher" : "~0.1.0", |
|
||||
"karma-chrome-launcher" : "~0.1.0", |
|
||||
"karma-firefox-launcher" : "~0.1.0", |
|
||||
"karma-html2js-preprocessor" : "~0.1.0", |
|
||||
"karma-jasmine" : "~0.1.3", |
|
||||
"karma-requirejs" : "~0.1.0", |
|
||||
"karma-coffee-preprocessor" : "~0.1.0", |
|
||||
"karma-phantomjs-launcher" : "~0.1.0", |
|
||||
"karma" : "~0.10.2", |
|
||||
"grunt-karma" : "~0.6.2" |
|
||||
|
"grunt": "~0.4.1", |
||||
|
"grunt-contrib-watch": "~0.5.3", |
||||
|
"grunt-contrib-clean": "~0.5.0", |
||||
|
"grunt-contrib-uglify": "~0.2.2", |
||||
|
"grunt-contrib-cssmin": "~0.6.1", |
||||
|
"grunt-contrib-less": "~0.7.0", |
||||
|
"grunt-contrib-copy": "~0.4.1", |
||||
|
"grunt-docco": "~0.2.0", |
||||
|
"grunt-bower-task": "~0.3.1", |
||||
|
"grunt-css": "~0.5.4", |
||||
|
"grunt-contrib-compress": "~0.5.2", |
||||
|
"grunt-contrib-concat": "~0.3.0", |
||||
|
"grunt-docco-multi": "0.0.2", |
||||
|
"grunt-cssjanus": "~0.1.1", |
||||
|
"karma-script-launcher": "~0.1.0", |
||||
|
"karma-chrome-launcher": "~0.1.0", |
||||
|
"karma-firefox-launcher": "~0.1.0", |
||||
|
"karma-html2js-preprocessor": "~0.1.0", |
||||
|
"karma-jasmine": "~0.1.3", |
||||
|
"karma-requirejs": "~0.1.0", |
||||
|
"karma-coffee-preprocessor": "~0.1.0", |
||||
|
"karma-phantomjs-launcher": "~0.1.0", |
||||
|
"karma": "~0.10.2", |
||||
|
"grunt-karma": "~0.6.2", |
||||
|
"karma-coverage": "~0.1.0", |
||||
|
"karma-spec-reporter": "0.0.5" |
||||
} |
} |
||||
} |
} |
@ -0,0 +1,320 @@ |
|||||
|
<!doctype html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<title>Code coverage report for All files</title> |
||||
|
<meta charset="utf-8"> |
||||
|
|
||||
|
<link rel="stylesheet" href="prettify.css"> |
||||
|
|
||||
|
<style> |
||||
|
body, html { |
||||
|
margin:0; padding: 0; |
||||
|
} |
||||
|
body { |
||||
|
font-family: Helvetica Neue, Helvetica,Arial; |
||||
|
font-size: 10pt; |
||||
|
} |
||||
|
div.header, div.footer { |
||||
|
background: #eee; |
||||
|
padding: 1em; |
||||
|
} |
||||
|
div.header { |
||||
|
z-index: 100; |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
border-bottom: 1px solid #666; |
||||
|
width: 100%; |
||||
|
} |
||||
|
div.footer { |
||||
|
border-top: 1px solid #666; |
||||
|
} |
||||
|
div.body { |
||||
|
margin-top: 10em; |
||||
|
} |
||||
|
div.meta { |
||||
|
font-size: 90%; |
||||
|
text-align: center; |
||||
|
} |
||||
|
h1, h2, h3 { |
||||
|
font-weight: normal; |
||||
|
} |
||||
|
h1 { |
||||
|
font-size: 12pt; |
||||
|
} |
||||
|
h2 { |
||||
|
font-size: 10pt; |
||||
|
} |
||||
|
pre { |
||||
|
font-family: Consolas, Menlo, Monaco, monospace; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
line-height: 14px; |
||||
|
font-size: 14px; |
||||
|
-moz-tab-size: 2; |
||||
|
-o-tab-size: 2; |
||||
|
tab-size: 2; |
||||
|
} |
||||
|
|
||||
|
div.path { font-size: 110%; } |
||||
|
div.path a:link, div.path a:visited { color: #000; } |
||||
|
table.coverage { border-collapse: collapse; margin:0; padding: 0 } |
||||
|
|
||||
|
table.coverage td { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
color: #111; |
||||
|
vertical-align: top; |
||||
|
} |
||||
|
table.coverage td.line-count { |
||||
|
width: 50px; |
||||
|
text-align: right; |
||||
|
padding-right: 5px; |
||||
|
} |
||||
|
table.coverage td.line-coverage { |
||||
|
color: #777 !important; |
||||
|
text-align: right; |
||||
|
border-left: 1px solid #666; |
||||
|
border-right: 1px solid #666; |
||||
|
} |
||||
|
|
||||
|
table.coverage td.text { |
||||
|
} |
||||
|
|
||||
|
table.coverage td span.cline-any { |
||||
|
display: inline-block; |
||||
|
padding: 0 5px; |
||||
|
width: 40px; |
||||
|
} |
||||
|
table.coverage td span.cline-neutral { |
||||
|
background: #eee; |
||||
|
} |
||||
|
table.coverage td span.cline-yes { |
||||
|
background: #b5d592; |
||||
|
color: #999; |
||||
|
} |
||||
|
table.coverage td span.cline-no { |
||||
|
background: #fc8c84; |
||||
|
} |
||||
|
|
||||
|
.cstat-yes { color: #111; } |
||||
|
.cstat-no { background: #fc8c84; color: #111; } |
||||
|
.fstat-no { background: #ffc520; color: #111 !important; } |
||||
|
.cbranch-no { background: yellow !important; color: #111; } |
||||
|
.missing-if-branch { |
||||
|
display: inline-block; |
||||
|
margin-right: 10px; |
||||
|
position: relative; |
||||
|
padding: 0 4px; |
||||
|
background: black; |
||||
|
color: yellow; |
||||
|
xtext-decoration: line-through; |
||||
|
} |
||||
|
.missing-if-branch .typ { |
||||
|
color: inherit !important; |
||||
|
} |
||||
|
|
||||
|
.entity, .metric { font-weight: bold; } |
||||
|
.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; } |
||||
|
.metric small { font-size: 80%; font-weight: normal; color: #666; } |
||||
|
|
||||
|
div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; } |
||||
|
div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; } |
||||
|
div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; } |
||||
|
div.coverage-summary th.file { border-right: none !important; } |
||||
|
div.coverage-summary th.pic { border-left: none !important; text-align: right; } |
||||
|
div.coverage-summary th.pct { border-right: none !important; } |
||||
|
div.coverage-summary th.abs { border-left: none !important; text-align: right; } |
||||
|
div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; } |
||||
|
div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; } |
||||
|
div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; } |
||||
|
div.coverage-summary td.pic { min-width: 120px !important; } |
||||
|
div.coverage-summary a:link { text-decoration: none; color: #000; } |
||||
|
div.coverage-summary a:visited { text-decoration: none; color: #333; } |
||||
|
div.coverage-summary a:hover { text-decoration: underline; } |
||||
|
div.coverage-summary tfoot td { border-top: 1px solid #666; } |
||||
|
|
||||
|
div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator { |
||||
|
height: 10px; |
||||
|
width: 7px; |
||||
|
display: inline-block; |
||||
|
margin-left: 0.5em; |
||||
|
} |
||||
|
div.coverage-summary .yui3-datatable-sort-indicator { |
||||
|
background: url("http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent; |
||||
|
} |
||||
|
div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator { |
||||
|
background-position: 0 -20px; |
||||
|
} |
||||
|
div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator { |
||||
|
background-position: 0 -10px; |
||||
|
} |
||||
|
|
||||
|
.high { background: #b5d592 !important; } |
||||
|
.medium { background: #ffe87c !important; } |
||||
|
.low { background: #fc8c84 !important; } |
||||
|
|
||||
|
span.cover-fill, span.cover-empty { |
||||
|
display:inline-block; |
||||
|
border:1px solid #444; |
||||
|
background: white; |
||||
|
height: 12px; |
||||
|
} |
||||
|
span.cover-fill { |
||||
|
background: #ccc; |
||||
|
border-right: 1px solid #444; |
||||
|
} |
||||
|
span.cover-empty { |
||||
|
background: white; |
||||
|
border-left: none; |
||||
|
} |
||||
|
span.cover-full { |
||||
|
border-right: none !important; |
||||
|
} |
||||
|
pre.prettyprint { |
||||
|
border: none !important; |
||||
|
padding: 0 !important; |
||||
|
margin: 0 !important; |
||||
|
} |
||||
|
.com { color: #999 !important; } |
||||
|
</style> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div class="header high"> |
||||
|
<h1>Code coverage report for <span class="entity">All files</span></h1> |
||||
|
<h2> |
||||
|
|
||||
|
Statements: <span class="metric">100% <small>(0 / 0)</small></span> |
||||
|
|
||||
|
|
||||
|
Branches: <span class="metric">100% <small>(0 / 0)</small></span> |
||||
|
|
||||
|
|
||||
|
Functions: <span class="metric">100% <small>(0 / 0)</small></span> |
||||
|
|
||||
|
|
||||
|
Lines: <span class="metric">100% <small>(0 / 0)</small></span> |
||||
|
|
||||
|
</h2> |
||||
|
<div class="path"></div> |
||||
|
</div> |
||||
|
<div class="body"> |
||||
|
<div class="coverage-summary"> |
||||
|
<table> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th> |
||||
|
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> |
||||
|
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> |
||||
|
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
|
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> |
||||
|
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
|
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> |
||||
|
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
|
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> |
||||
|
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody></tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="footer"> |
||||
|
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Oct 14 2013 01:12:43 GMT-0400 (EDT)</div> |
||||
|
</div> |
||||
|
|
||||
|
<script src="prettify.js"></script> |
||||
|
|
||||
|
<script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script> |
||||
|
<script> |
||||
|
|
||||
|
YUI().use('datatable', function (Y) { |
||||
|
|
||||
|
var formatters = { |
||||
|
pct: function (o) { |
||||
|
o.className += o.record.get('classes')[o.column.key]; |
||||
|
try { |
||||
|
return o.value.toFixed(2) + '%'; |
||||
|
} catch (ex) { return o.value + '%'; } |
||||
|
}, |
||||
|
html: function (o) { |
||||
|
o.className += o.record.get('classes')[o.column.key]; |
||||
|
return o.record.get(o.column.key + '_html'); |
||||
|
} |
||||
|
}, |
||||
|
defaultFormatter = function (o) { |
||||
|
o.className += o.record.get('classes')[o.column.key]; |
||||
|
return o.value; |
||||
|
}; |
||||
|
|
||||
|
function getColumns(theadNode) { |
||||
|
var colNodes = theadNode.all('tr th'), |
||||
|
cols = [], |
||||
|
col; |
||||
|
colNodes.each(function (colNode) { |
||||
|
col = { |
||||
|
key: colNode.getAttribute('data-col'), |
||||
|
label: colNode.get('innerHTML') || ' ', |
||||
|
sortable: !colNode.getAttribute('data-nosort'), |
||||
|
className: colNode.getAttribute('class'), |
||||
|
type: colNode.getAttribute('data-type'), |
||||
|
allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html' |
||||
|
}; |
||||
|
col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter; |
||||
|
cols.push(col); |
||||
|
}); |
||||
|
return cols; |
||||
|
} |
||||
|
|
||||
|
function getRowData(trNode, cols) { |
||||
|
var tdNodes = trNode.all('td'), |
||||
|
i, |
||||
|
row = { classes: {} }, |
||||
|
node, |
||||
|
name; |
||||
|
for (i = 0; i < cols.length; i += 1) { |
||||
|
name = cols[i].key; |
||||
|
node = tdNodes.item(i); |
||||
|
row[name] = node.getAttribute('data-value') || node.get('innerHTML'); |
||||
|
row[name + '_html'] = node.get('innerHTML'); |
||||
|
row.classes[name] = node.getAttribute('class'); |
||||
|
//Y.log('Name: ' + name + '; Value: ' + row[name]); |
||||
|
if (cols[i].type === 'number') { row[name] = row[name] * 1; } |
||||
|
} |
||||
|
//Y.log(row); |
||||
|
return row; |
||||
|
} |
||||
|
|
||||
|
function getData(tbodyNode, cols) { |
||||
|
var data = []; |
||||
|
tbodyNode.all('tr').each(function (trNode) { |
||||
|
data.push(getRowData(trNode, cols)); |
||||
|
}); |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
function replaceTable(node) { |
||||
|
if (!node) { return; } |
||||
|
var cols = getColumns(node.one('thead')), |
||||
|
data = getData(node.one('tbody'), cols), |
||||
|
table, |
||||
|
parent = node.get('parentNode'); |
||||
|
|
||||
|
table = new Y.DataTable({ |
||||
|
columns: cols, |
||||
|
data: data, |
||||
|
sortBy: 'file' |
||||
|
}); |
||||
|
parent.set('innerHTML', ''); |
||||
|
table.render(parent); |
||||
|
} |
||||
|
|
||||
|
Y.on('domready', function () { |
||||
|
replaceTable(Y.one('div.coverage-summary table')); |
||||
|
if (typeof prettyPrint === 'function') { |
||||
|
prettyPrint(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1 @@ |
|||||
|
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} |
1
test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1 @@ |
|||||
|
{} |
@ -0,0 +1,705 @@ |
|||||
|
/*! |
||||
|
Jasmine-jQuery: a set of jQuery helpers for Jasmine tests. |
||||
|
|
||||
|
Version 1.5.91 |
||||
|
|
||||
|
https://github.com/velesin/jasmine-jquery
|
||||
|
|
||||
|
Copyright (c) 2010-2013 Wojciech Zawistowski, Travis Jeffery |
||||
|
|
||||
|
Permission is hereby granted, free of charge, to any person obtaining |
||||
|
a copy of this software and associated documentation files (the |
||||
|
"Software"), to deal in the Software without restriction, including |
||||
|
without limitation the rights to use, copy, modify, merge, publish, |
||||
|
distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
permit persons to whom the Software is furnished to do so, subject to |
||||
|
the following conditions: |
||||
|
|
||||
|
The above copyright notice and this permission notice shall be |
||||
|
included in all copies or substantial portions of the Software. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
+function (jasmine, $) { "use strict"; |
||||
|
|
||||
|
jasmine.spiedEventsKey = function (selector, eventName) { |
||||
|
return [$(selector).selector, eventName].toString() |
||||
|
} |
||||
|
|
||||
|
jasmine.getFixtures = function () { |
||||
|
return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures() |
||||
|
} |
||||
|
|
||||
|
jasmine.getStyleFixtures = function () { |
||||
|
return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures() |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures = function () { |
||||
|
this.containerId = 'jasmine-fixtures' |
||||
|
this.fixturesCache_ = {} |
||||
|
this.fixturesPath = 'spec/javascripts/fixtures' |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.set = function (html) { |
||||
|
this.cleanUp() |
||||
|
return this.createContainer_(html) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.appendSet= function (html) { |
||||
|
this.addToContainer_(html) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.preload = function () { |
||||
|
this.read.apply(this, arguments) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.load = function () { |
||||
|
this.cleanUp() |
||||
|
this.createContainer_(this.read.apply(this, arguments)) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.appendLoad = function () { |
||||
|
this.addToContainer_(this.read.apply(this, arguments)) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.read = function () { |
||||
|
var htmlChunks = [] |
||||
|
, fixtureUrls = arguments |
||||
|
|
||||
|
for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) { |
||||
|
htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex])) |
||||
|
} |
||||
|
|
||||
|
return htmlChunks.join('') |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.clearCache = function () { |
||||
|
this.fixturesCache_ = {} |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.cleanUp = function () { |
||||
|
$('#' + this.containerId).remove() |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.sandbox = function (attributes) { |
||||
|
var attributesToSet = attributes || {} |
||||
|
return $('<div id="sandbox" />').attr(attributesToSet) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.createContainer_ = function (html) { |
||||
|
var container = $('<div>') |
||||
|
.attr('id', this.containerId) |
||||
|
.html(html) |
||||
|
|
||||
|
$(document.body).append(container) |
||||
|
return container |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.addToContainer_ = function (html){ |
||||
|
var container = $(document.body).find('#'+this.containerId).append(html) |
||||
|
if(!container.length){ |
||||
|
this.createContainer_(html) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.getFixtureHtml_ = function (url) { |
||||
|
if (typeof this.fixturesCache_[url] === 'undefined') { |
||||
|
this.loadFixtureIntoCache_(url) |
||||
|
} |
||||
|
return this.fixturesCache_[url] |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) { |
||||
|
var self = this |
||||
|
, url = this.makeFixtureUrl_(relativeUrl) |
||||
|
, request = $.ajax({ |
||||
|
async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
|
||||
|
cache: false, |
||||
|
url: url, |
||||
|
success: function (data, status, $xhr) { |
||||
|
self.fixturesCache_[relativeUrl] = $xhr.responseText |
||||
|
}, |
||||
|
error: function (jqXHR, status, errorThrown) { |
||||
|
throw new Error('Fixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')') |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.makeFixtureUrl_ = function (relativeUrl){ |
||||
|
return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl |
||||
|
} |
||||
|
|
||||
|
jasmine.Fixtures.prototype.proxyCallTo_ = function (methodName, passedArguments) { |
||||
|
return this[methodName].apply(this, passedArguments) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
jasmine.StyleFixtures = function () { |
||||
|
this.fixturesCache_ = {} |
||||
|
this.fixturesNodes_ = [] |
||||
|
this.fixturesPath = 'spec/javascripts/fixtures' |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.set = function (css) { |
||||
|
this.cleanUp() |
||||
|
this.createStyle_(css) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.appendSet = function (css) { |
||||
|
this.createStyle_(css) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.preload = function () { |
||||
|
this.read_.apply(this, arguments) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.load = function () { |
||||
|
this.cleanUp() |
||||
|
this.createStyle_(this.read_.apply(this, arguments)) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.appendLoad = function () { |
||||
|
this.createStyle_(this.read_.apply(this, arguments)) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.cleanUp = function () { |
||||
|
while(this.fixturesNodes_.length) { |
||||
|
this.fixturesNodes_.pop().remove() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.createStyle_ = function (html) { |
||||
|
var styleText = $('<div></div>').html(html).text() |
||||
|
, style = $('<style>' + styleText + '</style>') |
||||
|
|
||||
|
this.fixturesNodes_.push(style) |
||||
|
$('head').append(style) |
||||
|
} |
||||
|
|
||||
|
jasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache |
||||
|
jasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read |
||||
|
jasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_ |
||||
|
jasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_ |
||||
|
jasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_ |
||||
|
jasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_ |
||||
|
|
||||
|
jasmine.getJSONFixtures = function () { |
||||
|
return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures() |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures = function () { |
||||
|
this.fixturesCache_ = {} |
||||
|
this.fixturesPath = 'spec/javascripts/fixtures/json' |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.load = function () { |
||||
|
this.read.apply(this, arguments) |
||||
|
return this.fixturesCache_ |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.read = function () { |
||||
|
var fixtureUrls = arguments |
||||
|
|
||||
|
for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) { |
||||
|
this.getFixtureData_(fixtureUrls[urlIndex]) |
||||
|
} |
||||
|
|
||||
|
return this.fixturesCache_ |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.clearCache = function () { |
||||
|
this.fixturesCache_ = {} |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.getFixtureData_ = function (url) { |
||||
|
if (!this.fixturesCache_[url]) this.loadFixtureIntoCache_(url) |
||||
|
return this.fixturesCache_[url] |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) { |
||||
|
var self = this |
||||
|
, url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl |
||||
|
|
||||
|
$.ajax({ |
||||
|
async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
|
||||
|
cache: false, |
||||
|
dataType: 'json', |
||||
|
url: url, |
||||
|
success: function (data) { |
||||
|
self.fixturesCache_[relativeUrl] = data |
||||
|
}, |
||||
|
error: function (jqXHR, status, errorThrown) { |
||||
|
throw new Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')') |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
jasmine.JSONFixtures.prototype.proxyCallTo_ = function (methodName, passedArguments) { |
||||
|
return this[methodName].apply(this, passedArguments) |
||||
|
} |
||||
|
|
||||
|
jasmine.JQuery = function () {} |
||||
|
|
||||
|
jasmine.JQuery.browserTagCaseIndependentHtml = function (html) { |
||||
|
return $('<div/>').append(html).html() |
||||
|
} |
||||
|
|
||||
|
jasmine.JQuery.elementToString = function (element) { |
||||
|
var domEl = $(element).get(0) |
||||
|
|
||||
|
if (domEl === undefined || domEl.cloneNode) |
||||
|
return $('<div />').append($(element).clone()).html() |
||||
|
else |
||||
|
return element.toString() |
||||
|
} |
||||
|
|
||||
|
jasmine.JQuery.matchersClass = {} |
||||
|
|
||||
|
!function (namespace) { |
||||
|
var data = { |
||||
|
spiedEvents: {} |
||||
|
, handlers: [] |
||||
|
} |
||||
|
|
||||
|
namespace.events = { |
||||
|
spyOn: function (selector, eventName) { |
||||
|
var handler = function (e) { |
||||
|
data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = jasmine.util.argsToArray(arguments) |
||||
|
} |
||||
|
|
||||
|
$(selector).on(eventName, handler) |
||||
|
data.handlers.push(handler) |
||||
|
|
||||
|
return { |
||||
|
selector: selector, |
||||
|
eventName: eventName, |
||||
|
handler: handler, |
||||
|
reset: function (){ |
||||
|
delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
args: function (selector, eventName) { |
||||
|
var actualArgs = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] |
||||
|
|
||||
|
if (!actualArgs) { |
||||
|
throw "There is no spy for " + eventName + " on " + selector.toString() + ". Make sure to create a spy using spyOnEvent." |
||||
|
} |
||||
|
|
||||
|
return actualArgs |
||||
|
}, |
||||
|
|
||||
|
wasTriggered: function (selector, eventName) { |
||||
|
return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]) |
||||
|
}, |
||||
|
|
||||
|
wasTriggeredWith: function (selector, eventName, expectedArgs, env) { |
||||
|
var actualArgs = jasmine.JQuery.events.args(selector, eventName).slice(1) |
||||
|
if (Object.prototype.toString.call(expectedArgs) !== '[object Array]') { |
||||
|
actualArgs = actualArgs[0] |
||||
|
} |
||||
|
return env.equals_(expectedArgs, actualArgs) |
||||
|
}, |
||||
|
|
||||
|
wasPrevented: function (selector, eventName) { |
||||
|
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] |
||||
|
, e = args ? args[0] : undefined |
||||
|
|
||||
|
return e && e.isDefaultPrevented() |
||||
|
}, |
||||
|
|
||||
|
wasStopped: function (selector, eventName) { |
||||
|
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] |
||||
|
, e = args ? args[0] : undefined |
||||
|
return e && e.isPropagationStopped() |
||||
|
}, |
||||
|
|
||||
|
cleanUp: function () { |
||||
|
data.spiedEvents = {} |
||||
|
data.handlers = [] |
||||
|
} |
||||
|
} |
||||
|
}(jasmine.JQuery) |
||||
|
|
||||
|
!function (){ |
||||
|
var jQueryMatchers = { |
||||
|
toHaveClass: function (className) { |
||||
|
return this.actual.hasClass(className) |
||||
|
}, |
||||
|
|
||||
|
toHaveCss: function (css){ |
||||
|
for (var prop in css){ |
||||
|
var value = css[prop] |
||||
|
// see issue #147 on gh
|
||||
|
;if (value === 'auto' && this.actual.get(0).style[prop] === 'auto') continue |
||||
|
if (this.actual.css(prop) !== value) return false |
||||
|
} |
||||
|
return true |
||||
|
}, |
||||
|
|
||||
|
toBeVisible: function () { |
||||
|
return this.actual.is(':visible') |
||||
|
}, |
||||
|
|
||||
|
toBeHidden: function () { |
||||
|
return this.actual.is(':hidden') |
||||
|
}, |
||||
|
|
||||
|
toBeSelected: function () { |
||||
|
return this.actual.is(':selected') |
||||
|
}, |
||||
|
|
||||
|
toBeChecked: function () { |
||||
|
return this.actual.is(':checked') |
||||
|
}, |
||||
|
|
||||
|
toBeEmpty: function () { |
||||
|
return this.actual.is(':empty') |
||||
|
}, |
||||
|
|
||||
|
toExist: function () { |
||||
|
return this.actual.length |
||||
|
}, |
||||
|
|
||||
|
toHaveLength: function (length) { |
||||
|
return this.actual.length === length |
||||
|
}, |
||||
|
|
||||
|
toHaveAttr: function (attributeName, expectedAttributeValue) { |
||||
|
return hasProperty(this.actual.attr(attributeName), expectedAttributeValue) |
||||
|
}, |
||||
|
|
||||
|
toHaveProp: function (propertyName, expectedPropertyValue) { |
||||
|
return hasProperty(this.actual.prop(propertyName), expectedPropertyValue) |
||||
|
}, |
||||
|
|
||||
|
toHaveId: function (id) { |
||||
|
return this.actual.attr('id') == id |
||||
|
}, |
||||
|
|
||||
|
toHaveHtml: function (html) { |
||||
|
return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html) |
||||
|
}, |
||||
|
|
||||
|
toContainHtml: function (html){ |
||||
|
var actualHtml = this.actual.html() |
||||
|
, expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html) |
||||
|
|
||||
|
return (actualHtml.indexOf(expectedHtml) >= 0) |
||||
|
}, |
||||
|
|
||||
|
toHaveText: function (text) { |
||||
|
var trimmedText = $.trim(this.actual.text()) |
||||
|
|
||||
|
if (text && $.isFunction(text.test)) { |
||||
|
return text.test(trimmedText) |
||||
|
} else { |
||||
|
return trimmedText == text |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
toContainText: function (text) { |
||||
|
var trimmedText = $.trim(this.actual.text()) |
||||
|
|
||||
|
if (text && $.isFunction(text.test)) { |
||||
|
return text.test(trimmedText) |
||||
|
} else { |
||||
|
return trimmedText.indexOf(text) != -1 |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
toHaveValue: function (value) { |
||||
|
return this.actual.val() === value |
||||
|
}, |
||||
|
|
||||
|
toHaveData: function (key, expectedValue) { |
||||
|
return hasProperty(this.actual.data(key), expectedValue) |
||||
|
}, |
||||
|
|
||||
|
toBe: function (selector) { |
||||
|
return this.actual.is(selector) |
||||
|
}, |
||||
|
|
||||
|
toContain: function (selector) { |
||||
|
return this.actual.find(selector).length |
||||
|
}, |
||||
|
|
||||
|
toBeMatchedBy: function (selector) { |
||||
|
return this.actual.filter(selector).length |
||||
|
}, |
||||
|
|
||||
|
toBeDisabled: function (selector){ |
||||
|
return this.actual.is(':disabled') |
||||
|
}, |
||||
|
|
||||
|
toBeFocused: function (selector) { |
||||
|
return this.actual[0] === this.actual[0].ownerDocument.activeElement |
||||
|
}, |
||||
|
|
||||
|
toHandle: function (event) { |
||||
|
var events = $._data(this.actual.get(0), "events") |
||||
|
|
||||
|
if(!events || !event || typeof event !== "string") { |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
var namespaces = event.split(".") |
||||
|
, eventType = namespaces.shift() |
||||
|
, sortedNamespaces = namespaces.slice(0).sort() |
||||
|
, namespaceRegExp = new RegExp("(^|\\.)" + sortedNamespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") |
||||
|
|
||||
|
if(events[eventType] && namespaces.length) { |
||||
|
for(var i = 0; i < events[eventType].length; i++) { |
||||
|
var namespace = events[eventType][i].namespace |
||||
|
|
||||
|
if(namespaceRegExp.test(namespace)) { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
return events[eventType] && events[eventType].length > 0 |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
toHandleWith: function (eventName, eventHandler) { |
||||
|
var normalizedEventName = eventName.split('.')[0] |
||||
|
, stack = $._data(this.actual.get(0), "events")[normalizedEventName] |
||||
|
|
||||
|
for (var i = 0; i < stack.length; i++) { |
||||
|
if (stack[i].handler == eventHandler) return true |
||||
|
} |
||||
|
|
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var hasProperty = function (actualValue, expectedValue) { |
||||
|
if (expectedValue === undefined) return actualValue !== undefined |
||||
|
|
||||
|
return actualValue == expectedValue |
||||
|
} |
||||
|
|
||||
|
var bindMatcher = function (methodName) { |
||||
|
var builtInMatcher = jasmine.Matchers.prototype[methodName] |
||||
|
|
||||
|
jasmine.JQuery.matchersClass[methodName] = function () { |
||||
|
if (this.actual |
||||
|
&& (this.actual instanceof $ |
||||
|
|| jasmine.isDomNode(this.actual))) { |
||||
|
this.actual = $(this.actual) |
||||
|
var result = jQueryMatchers[methodName].apply(this, arguments) |
||||
|
, element |
||||
|
|
||||
|
if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== "HTML") |
||||
|
this.actual = jasmine.JQuery.elementToString(this.actual) |
||||
|
|
||||
|
return result |
||||
|
} |
||||
|
|
||||
|
if (builtInMatcher) { |
||||
|
return builtInMatcher.apply(this, arguments) |
||||
|
} |
||||
|
|
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
for(var methodName in jQueryMatchers) { |
||||
|
bindMatcher(methodName) |
||||
|
} |
||||
|
}() |
||||
|
|
||||
|
beforeEach(function () { |
||||
|
this.addMatchers(jasmine.JQuery.matchersClass) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenTriggeredOn: function (selector) { |
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + this.actual + " to have been triggered on " + selector, |
||||
|
"Expected event " + this.actual + " not to have been triggered on " + selector |
||||
|
] |
||||
|
} |
||||
|
return jasmine.JQuery.events.wasTriggered(selector, this.actual) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenTriggered: function (){ |
||||
|
var eventName = this.actual.eventName |
||||
|
, selector = this.actual.selector |
||||
|
|
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + eventName + " to have been triggered on " + selector, |
||||
|
"Expected event " + eventName + " not to have been triggered on " + selector |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
return jasmine.JQuery.events.wasTriggered(selector, eventName) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenTriggeredOnAndWith: function () { |
||||
|
var selector = arguments[0] |
||||
|
, expectedArgs = arguments[1] |
||||
|
, wasTriggered = jasmine.JQuery.events.wasTriggered(selector, this.actual) |
||||
|
|
||||
|
this.message = function () { |
||||
|
if (wasTriggered) { |
||||
|
var actualArgs = jasmine.JQuery.events.args(selector, this.actual, expectedArgs)[1] |
||||
|
return [ |
||||
|
"Expected event " + this.actual + " to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs), |
||||
|
"Expected event " + this.actual + " not to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs) |
||||
|
] |
||||
|
} else { |
||||
|
return [ |
||||
|
"Expected event " + this.actual + " to have been triggered on " + selector, |
||||
|
"Expected event " + this.actual + " not to have been triggered on " + selector |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return wasTriggered && jasmine.JQuery.events.wasTriggeredWith(selector, this.actual, expectedArgs, this.env) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenPreventedOn: function (selector) { |
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + this.actual + " to have been prevented on " + selector, |
||||
|
"Expected event " + this.actual + " not to have been prevented on " + selector |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
return jasmine.JQuery.events.wasPrevented(selector, this.actual) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenPrevented: function () { |
||||
|
var eventName = this.actual.eventName |
||||
|
, selector = this.actual.selector |
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + eventName + " to have been prevented on " + selector, |
||||
|
"Expected event " + eventName + " not to have been prevented on " + selector |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
return jasmine.JQuery.events.wasPrevented(selector, eventName) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenStoppedOn: function (selector) { |
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + this.actual + " to have been stopped on " + selector, |
||||
|
"Expected event " + this.actual + " not to have been stopped on " + selector |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
return jasmine.JQuery.events.wasStopped(selector, this.actual) |
||||
|
} |
||||
|
}) |
||||
|
this.addMatchers({ |
||||
|
toHaveBeenStopped: function () { |
||||
|
var eventName = this.actual.eventName |
||||
|
, selector = this.actual.selector |
||||
|
this.message = function () { |
||||
|
return [ |
||||
|
"Expected event " + eventName + " to have been stopped on " + selector, |
||||
|
"Expected event " + eventName + " not to have been stopped on " + selector |
||||
|
] |
||||
|
} |
||||
|
return jasmine.JQuery.events.wasStopped(selector, eventName) |
||||
|
} |
||||
|
}) |
||||
|
jasmine.getEnv().addEqualityTester(function (a, b) { |
||||
|
if(a instanceof jQuery && b instanceof jQuery) { |
||||
|
if(a.size() != b.size()) { |
||||
|
return jasmine.undefined |
||||
|
} |
||||
|
else if(a.is(b)) { |
||||
|
return true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return jasmine.undefined |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
afterEach(function () { |
||||
|
jasmine.getFixtures().cleanUp() |
||||
|
jasmine.getStyleFixtures().cleanUp() |
||||
|
jasmine.JQuery.events.cleanUp() |
||||
|
}) |
||||
|
}(window.jasmine, window.jQuery) |
||||
|
|
||||
|
+function (jasmine, global) { "use strict"; |
||||
|
|
||||
|
global.readFixtures = function () { |
||||
|
return jasmine.getFixtures().proxyCallTo_('read', arguments) |
||||
|
} |
||||
|
|
||||
|
global.preloadFixtures = function () { |
||||
|
jasmine.getFixtures().proxyCallTo_('preload', arguments) |
||||
|
} |
||||
|
|
||||
|
global.loadFixtures = function () { |
||||
|
jasmine.getFixtures().proxyCallTo_('load', arguments) |
||||
|
} |
||||
|
|
||||
|
global.appendLoadFixtures = function () { |
||||
|
jasmine.getFixtures().proxyCallTo_('appendLoad', arguments) |
||||
|
} |
||||
|
|
||||
|
global.setFixtures = function (html) { |
||||
|
return jasmine.getFixtures().proxyCallTo_('set', arguments) |
||||
|
} |
||||
|
|
||||
|
global.appendSetFixtures = function () { |
||||
|
jasmine.getFixtures().proxyCallTo_('appendSet', arguments) |
||||
|
} |
||||
|
|
||||
|
global.sandbox = function (attributes) { |
||||
|
return jasmine.getFixtures().sandbox(attributes) |
||||
|
} |
||||
|
|
||||
|
global.spyOnEvent = function (selector, eventName) { |
||||
|
return jasmine.JQuery.events.spyOn(selector, eventName) |
||||
|
} |
||||
|
|
||||
|
global.preloadStyleFixtures = function () { |
||||
|
jasmine.getStyleFixtures().proxyCallTo_('preload', arguments) |
||||
|
} |
||||
|
|
||||
|
global.loadStyleFixtures = function () { |
||||
|
jasmine.getStyleFixtures().proxyCallTo_('load', arguments) |
||||
|
} |
||||
|
|
||||
|
global.appendLoadStyleFixtures = function () { |
||||
|
jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments) |
||||
|
} |
||||
|
|
||||
|
global.setStyleFixtures = function (html) { |
||||
|
jasmine.getStyleFixtures().proxyCallTo_('set', arguments) |
||||
|
} |
||||
|
|
||||
|
global.appendSetStyleFixtures = function (html) { |
||||
|
jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments) |
||||
|
} |
||||
|
|
||||
|
global.loadJSONFixtures = function () { |
||||
|
return jasmine.getJSONFixtures().proxyCallTo_('load', arguments) |
||||
|
} |
||||
|
|
||||
|
global.getJSONFixture = function (url) { |
||||
|
return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url] |
||||
|
} |
||||
|
}(jasmine, window); |
@ -1,5 +1,10 @@ |
|||||
describe("A suite", function() { |
|
||||
|
describe("UI Modal", function() { |
||||
it("contains spec with an expectation", function() { |
it("contains spec with an expectation", function() { |
||||
expect(true).toBe(true); |
expect(true).toBe(true); |
||||
}); |
}); |
||||
|
|
||||
|
it("contains another spec with another expectation", function() { |
||||
|
expect(true).toBe(true); |
||||
|
}); |
||||
|
|
||||
}); |
}); |
Write
Preview
Loading…
Cancel
Save