axios-axios/test/specs/instance.spec.js
Dmitriy Mozgovoy c008e57fe4
Added axios.formToJSON method; (#4735)
* Draft

* Added `formDataToJSON` helper;
Added `axios.formToJSON` method;
Added client tests;

Co-authored-by: Jay <jasonsaayman@gmail.com>
2022-05-25 08:21:40 +02:00

158 lines
3.6 KiB
JavaScript

describe('instance', function () {
beforeEach(function () {
jasmine.Ajax.install();
});
afterEach(function () {
jasmine.Ajax.uninstall();
});
it('should have the same methods as default instance', function () {
var instance = axios.create();
for (var prop in axios) {
if ([
'Axios',
'AxiosError',
'create',
'Cancel',
'CanceledError',
'CancelToken',
'isCancel',
'all',
'spread',
'getUri',
'isAxiosError',
'VERSION',
'default',
'toFormData',
'formToJSON'
].indexOf(prop) > -1) {
continue;
}
expect(typeof instance[prop]).toBe(typeof axios[prop]);
}
});
it('should make an http request without verb helper', function (done) {
var instance = axios.create();
instance('/foo');
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
});
});
it('should make an http request with url instead of baseURL', function (done) {
var instance = axios.create({
url: 'https://api.example.com'
});
instance('/foo');
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
});
});
it('should make an http request', function (done) {
var instance = axios.create();
instance.get('/foo');
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
});
});
it('should use instance options', function (done) {
var instance = axios.create({ timeout: 1000 });
instance.get('/foo');
getAjaxRequest().then(function (request) {
expect(request.timeout).toBe(1000);
done();
});
});
it('should have defaults.headers', function () {
var instance = axios.create({
baseURL: 'https://api.example.com'
});
expect(typeof instance.defaults.headers, 'object');
expect(typeof instance.defaults.headers.common, 'object');
});
it('should have interceptors on the instance', function (done) {
axios.interceptors.request.use(function (config) {
config.foo = true;
return config;
});
var instance = axios.create();
instance.interceptors.request.use(function (config) {
config.bar = true;
return config;
});
var response;
instance.get('/foo').then(function (res) {
response = res;
});
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200
});
setTimeout(function () {
expect(response.config.foo).toEqual(undefined);
expect(response.config.bar).toEqual(true);
done();
}, 100);
});
});
it('should have getUri on the instance', function() {
var instance = axios.create({
baseURL: 'https://api.example.com'
});
var options = {
url: 'foo/bar',
params: {
name: 'axios'
}
};
expect(instance.getUri(options)).toBe('https://api.example.com/foo/bar?name=axios');
});
it('should correctly build url without baseURL', function () {
var instance = axios.create();
var options = {
url: 'foo/bar?foo=bar',
params: {
name: 'axios'
}
};
expect(instance.getUri(options)).toBe('foo/bar?foo=bar&name=axios');
});
it('should correctly discard url hash mark', function () {
var instance = axios.create();
var options = {
baseURL: 'https://api.example.com',
url: 'foo/bar?foo=bar#hash',
params: {
name: 'axios'
}
};
expect(instance.getUri(options)).toBe('https://api.example.com/foo/bar?foo=bar&name=axios');
});
});