match form data in any order
This commit is contained in:
parent
75d0747e70
commit
a19e5b1bcd
@ -88,7 +88,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
this.findStub = function(url, data) {
|
this.findStub = function(url, data) {
|
||||||
for (var i = stubs.length - 1; i >= 0; i--) {
|
for (var i = stubs.length - 1; i >= 0; i--) {
|
||||||
var stub = stubs[i];
|
var stub = stubs[i];
|
||||||
if (stub.url === url && (!stub.data || stub.data === data)) {
|
if (stub.matches(url, data)) {
|
||||||
return stub;
|
return stub;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -246,9 +246,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function RequestStub(url, data) {
|
function RequestStub(url, stubData) {
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.data = data;
|
this.data = stubData ? stubData.split('&').sort().join('&') : undefined;
|
||||||
|
|
||||||
this.andReturn = function(options) {
|
this.andReturn = function(options) {
|
||||||
this.status = options.status || 200;
|
this.status = options.status || 200;
|
||||||
@ -256,6 +256,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
this.contentType = options.contentType;
|
this.contentType = options.contentType;
|
||||||
this.responseText = options.responseText;
|
this.responseText = options.responseText;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.matches = function(url, data) {
|
||||||
|
return this.url === url && (!this.data || this.data === (data && data.split('&').sort().join('&')));
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof window === "undefined" && typeof exports === "object") {
|
if (typeof window === "undefined" && typeof exports === "object") {
|
||||||
|
@ -33,7 +33,7 @@ describe("mockAjax", function() {
|
|||||||
mockAjax.install();
|
mockAjax.install();
|
||||||
|
|
||||||
mockAjax.requests.track({url: '/testurl'});
|
mockAjax.requests.track({url: '/testurl'});
|
||||||
mockAjax.stubs.addStub({url: '/bobcat'});
|
mockAjax.stubRequest('/bobcat');
|
||||||
|
|
||||||
expect(mockAjax.requests.count()).toEqual(1);
|
expect(mockAjax.requests.count()).toEqual(1);
|
||||||
expect(mockAjax.stubs.findStub('/bobcat')).toBeDefined();
|
expect(mockAjax.stubs.findStub('/bobcat')).toBeDefined();
|
||||||
|
@ -66,7 +66,7 @@ describe("Webmock style mocking", function() {
|
|||||||
|
|
||||||
describe("stubbing with form data", function() {
|
describe("stubbing with form data", function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
mockAjax.stubRequest("http://example.com/someApi", 'foo=bar').andReturn({responseText: "form", status: 201});
|
mockAjax.stubRequest("http://example.com/someApi", 'foo=bar&baz=quux').andReturn({responseText: "form", status: 201});
|
||||||
});
|
});
|
||||||
|
|
||||||
var postRequest = function(data) {
|
var postRequest = function(data) {
|
||||||
@ -83,14 +83,21 @@ describe("Webmock style mocking", function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
it("uses the form data stub when the data matches", function() {
|
it("uses the form data stub when the data matches", function() {
|
||||||
postRequest('foo=bar');
|
postRequest('foo=bar&baz=quux');
|
||||||
|
|
||||||
|
expect(response.status).toEqual(201);
|
||||||
|
expect(response.responseText).toEqual('form');
|
||||||
|
});
|
||||||
|
|
||||||
|
it("matches data params in any order", function() {
|
||||||
|
postRequest('baz=quux&foo=bar');
|
||||||
|
|
||||||
expect(response.status).toEqual(201);
|
expect(response.status).toEqual(201);
|
||||||
expect(response.responseText).toEqual('form');
|
expect(response.responseText).toEqual('form');
|
||||||
});
|
});
|
||||||
|
|
||||||
it("falls back to the stub without data specified if the data doesn't match", function() {
|
it("falls back to the stub without data specified if the data doesn't match", function() {
|
||||||
postRequest('foo=baz');
|
postRequest('foo=bar');
|
||||||
|
|
||||||
expect(response.status).toEqual(200);
|
expect(response.status).toEqual(200);
|
||||||
expect(response.responseText).toEqual('hi!');
|
expect(response.responseText).toEqual('hi!');
|
||||||
|
Loading…
Reference in New Issue
Block a user