@pinata/sdk
Version:
Official SDK for the Pinata IPFS platform
121 lines (112 loc) • 3.82 kB
text/typescript
import queryBuilder from '../../../../src/commands/pinning/pinJobs/queryBuilder';
const baseUrl = 'testing.com/test';
const badFilterValue = 'badFilterValue';
const goodHashToPin = 'Qma6e8dovfLyiG2UUfdkSHNPAySzrWLX9qVXb44v1muqcp';
describe('queryBuilder no params provided', () => {
test('if no baseUrl is provided', () => {
// expect(() => {
// queryBuilder();
// }).toThrow('no baseUrl provided');
});
test('if no filters are provided, return a non filtered url', () => {
expect(queryBuilder(baseUrl)).toEqual(baseUrl);
});
});
describe('queryBuilder multiple filters', () => {
test('one bad filter and one good are provided', () => {
const filter = {
limit: 5,
offset: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Invalid offset: ${badFilterValue}. Please provide a positive integer for the offset`);
});
test('two good filters are provided', () => {
const filter = {
status: 'searching',
offset: 5
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?status=searching&offset=5`);
});
});
describe('queryBuilder filter: sort', () => {
test('unknown sort is provided', () => {
const filter = {
sort: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Unknown sort value: ${badFilterValue} provided`);
});
test('good sort value is provided', () => {
const filter = {
sort: 'ASC'
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?sort=ASC`);
});
});
describe('queryBuilder filter: status', () => {
test('unknown status is provided', () => {
const filter = {
status: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Unknown status value: ${badFilterValue} provided`);
});
test('good status value is provided', () => {
const filter = {
status: 'searching'
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?status=searching`);
});
});
describe('queryBuilder filter: ipfs_pin_hash', () => {
test('bad hash is provided', () => {
const filter = {
ipfs_pin_hash: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Invalid IPFS hash: ${badFilterValue}`);
});
test('good hash is provided', () => {
const filter = {
ipfs_pin_hash: goodHashToPin
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?ipfs_pin_hash=${goodHashToPin}`);
});
});
describe('queryBuilder filter: limit', () => {
test('bad hash is provided', () => {
const filter = {
limit: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Invalid limit: ${badFilterValue}. Valid limits are 1-100`);
});
test('good limit is provided', () => {
const filter = {
limit: 5
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?limit=5`);
});
});
describe('queryBuilder filter: offset', () => {
test('bad hash is provided', () => {
const filter = {
offset: badFilterValue
};
expect(() => {
queryBuilder(baseUrl, filter);
}).toThrow(`Invalid offset: ${badFilterValue}. Please provide a positive integer for the offset`);
});
test('good offset is provided', () => {
const filter = {
offset: 5
};
expect(queryBuilder(baseUrl, filter)).toEqual(`${baseUrl}?offset=5`);
});
});