Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- var makeRequest = function(url,callback,opt) {
- var xhr;
- if (XMLHttpRequest) { // Mozilla, Safari, ...
- xhr = new XMLHttpRequest();
- } else if (ActiveXObject) { // IE
- try {
- xhr = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e) {
- try {
- xhr = new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch (e) {}
- }
- }
- if (!xhr) {
- callback.call(this,
- 'Giving up :( Cannot create an XMLHTTP instance',
- null);
- return false;
- }
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4) {
- if (xhr.status === 200) {
- var data = xhr.responseText;
- if(opt && !opt.raw) {
- try {
- data = JSON.parse(data);
- } catch (e) {
- callback.call(this, e,null);
- return;
- }
- }
- callback.call(this,null,data);
- } else {
- callback.call(this,
- 'There was a problem with the request.',
- null);
- }
- }
- };
- var params = '';
- if (opt && opt.params && typeof(opt.params) == 'object') {
- for( var key in opt.params) {
- params += encodeURIComponent(opt.params[key]);
- }
- }
- var method = opt && opt.method ? opt.method : 'GET';
- if (method == 'GET') {
- url = params.length > 0 ? url+'?'+params : url;
- xhr.open('GET', url);
- xhr.send();
- } else if (method == 'POST') {
- var data = opt && opt.data ? opt.data : params;
- xhr.open('POST', url);
- xhr.send(JSON.stringify(data));
- }
- return xhr;
- }
- if(typeof module !== 'undefined' && module.exports) {
- module.exports = makeRequest;
- }
- if(typeof window!== 'undefined') {
- window.getJSONData = makeRequest;
- }
- })();
- var expect = require('chai').expect,
- getJSON = require('../'),
- sinon = require('sinon');
- describe('get-json-data test the request', function() {
- beforeEach(function() {
- this.xhr = sinon.useFakeXMLHttpRequest();
- var requests = this.requests = [];
- this.xhr.onCreate = function (xhr) {
- requests.push(xhr);
- };
- });
- afterEach(function() {
- this.xhr.restore();
- });
- it('get json data', function() {
- var callback = sinon.spy();
- getJSON('/some/json', callback);
- expect(this.requests.length).to.equal(1);
- this.requests[0].respond(200,
- {"Content-Type": "application/json"},
- '{"id": 1, "name": "foo"}');
- sinon.assert.calledWith(callback, {"id": 1, "name": "foo"});
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement