mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-02 10:33:39 +00:00
300e3a616c
* test: reduce oversized expectation literals to representative examples * test: shrink oversized fixtures instead of trimming assertions Cut the real-world fixtures down to a representative set of entries that still covers every parser shape, and assert the complete output again with a single toEqual.
99 lines
3.2 KiB
TypeScript
99 lines
3.2 KiB
TypeScript
import { Fixtures } from '~test/fixtures.ts';
|
|
import * as httpMock from '~test/http-mock.ts';
|
|
import { getPkgReleases } from '../index.ts';
|
|
import { RubyVersionDatasource } from './index.ts';
|
|
|
|
const datasource = RubyVersionDatasource.id;
|
|
|
|
describe('modules/datasource/ruby-version/index', () => {
|
|
describe('getReleases', () => {
|
|
it('parses real data', async () => {
|
|
httpMock
|
|
.scope('https://www.ruby-lang.org')
|
|
.get('/en/downloads/releases/')
|
|
.reply(200, Fixtures.get('releases.html'));
|
|
const res = await getPkgReleases({
|
|
datasource,
|
|
packageName: 'ruby',
|
|
});
|
|
expect(res).toEqual({
|
|
homepage: 'https://www.ruby-lang.org',
|
|
sourceUrl: 'https://github.com/ruby/ruby',
|
|
registryUrl: 'https://www.ruby-lang.org/',
|
|
releases: [
|
|
{
|
|
version: '1.6.7',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2002/03/01/167-is-released/',
|
|
releaseTimestamp: '2002-03-01T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '1.8.7',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2008/05/31/ruby-1-8-7-has-been-released/',
|
|
releaseTimestamp: '2008-05-31T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '1.9.3-p551',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2014/11/13/ruby-1-9-3-p551-is-released/',
|
|
releaseTimestamp: '2014-11-13T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '2.0.0-p648',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2015/12/16/ruby-2-0-0-p648-released/',
|
|
releaseTimestamp: '2015-12-16T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '2.5.3',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2018/10/18/ruby-2-5-3-released/',
|
|
releaseTimestamp: '2018-10-18T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '2.6.0-preview3',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2018/11/06/ruby-2-6-0-preview3-released/',
|
|
releaseTimestamp: '2018-11-06T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '2.6.0-rc2',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2018/12/15/ruby-2-6-0-rc2-released/',
|
|
releaseTimestamp: '2018-12-15T00:00:00.000Z',
|
|
},
|
|
{
|
|
version: '2.6.0',
|
|
changelogUrl:
|
|
'https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/',
|
|
releaseTimestamp: '2018-12-25T00:00:00.000Z',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it('returns null for empty result', async () => {
|
|
httpMock
|
|
.scope('https://www.ruby-lang.org')
|
|
.get('/en/downloads/releases/')
|
|
.reply(200, {});
|
|
const res = await getPkgReleases({
|
|
datasource,
|
|
packageName: 'ruby',
|
|
});
|
|
expect(res).toBeNull();
|
|
});
|
|
|
|
it('throws for 404', async () => {
|
|
httpMock
|
|
.scope('https://www.ruby-lang.org')
|
|
.get('/en/downloads/releases/')
|
|
.reply(404);
|
|
await expect(
|
|
getPkgReleases({ datasource, packageName: 'ruby' }),
|
|
).rejects.toThrow('external-host-error');
|
|
});
|
|
});
|
|
});
|