Skip to content

Instantly share code, notes, and snippets.

@ravasthi
Forked from mavenlink/loadFixture.js
Last active January 3, 2016 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ravasthi/8478820 to your computer and use it in GitHub Desktop.
Save ravasthi/8478820 to your computer and use it in GitHub Desktop.
Update original to use jQuery.ajax instead of jasmine.XmlHttpRequest. It should play better with jasmine 2.0.
var uniqueLoadIndicator = null;
// Loads fixure markup into the DOM as a child of the jasmine_content div
spec.loadFixture = function(fixtureName) {
var $destination = $('#jasmine_content');
uniqueLoadIndicator = null;
var indicatorScript = "<script>uniqueLoadIndicator = 'loaded';</s" + "cript>";
// get the markup, inject it into the dom
$destination.html(spec.fixtureHtml(fixtureName) + indicatorScript);
while (uniqueLoadIndicator != "loaded") {
//
if (console) console.log("Browser wasn't ready... sleeping.");
spec.retrieveFixture(fixtureName);
}
uniqueLoadIndicator = null;
// keep track of fixture count to fail specs that
// call loadFixture() more than once
spec.loadFixtureCount++;
};
// Returns fixture markup as a string. Useful for fixtures that
// represent the response text of ajax requests.
spec.readFixture = function(fixtureName) {
return spec.fixtureHtml(fixtureName);
};
spec.readJSON = function(fixtureName) {
var data = spec.fixtureHtml(fixtureName);
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
};
spec.fixtureHtml = function(fixtureName) {
if (!spec.cachedFixtures[fixtureName]) {
spec.cachedFixtures[fixtureName] = spec.retrieveFixture(fixtureName);
}
return spec.cachedFixtures[fixtureName];
};
spec.retrieveFixture = function(fixtureName) {
// construct a path to the fixture, including a cache-busting timestamp
var path = '/spec/javascripts/fixtures/' + fixtureName + "?" + new Date().getTime();
var responseText;
// retrieve the fixture markup via xhr request to jasmine server
try {
$.ajax(path, {
dataType: "html",
complete: function(xhr, status) {
responseText = xhr.responseText;
},
error: function(xhr, status, error) {
throw new Error("Couldn't load fixture with key: '" + fixtureName + "'. No such file: '" + path + "'.");
}
});
} catch(e) {
throw new Error("couldn't fetch " + path + ": " + e);
}
return responseText;
};
spec.loadFixtureCount = 0;
spec.cachedFixtures = {};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment