Files
shields/services/apm/apm.tester.js
T

62 lines
1.8 KiB
JavaScript

'use strict'
const { ServiceTester } = require('../tester')
const { invalidJSON } = require('../response-fixtures')
const { isMetric, isVPlusTripleDottedVersion } = require('../test-validators')
const t = (module.exports = new ServiceTester({
id: 'apm',
title: 'Atom Package Manager',
}))
t.create('Downloads')
.get('/dm/vim-mode.json')
.expectBadge({ label: 'downloads', message: isMetric })
t.create('Version')
.get('/v/vim-mode.json')
.expectBadge({ label: 'apm', message: isVPlusTripleDottedVersion })
t.create('License')
.get('/l/vim-mode.json')
.expectBadge({ label: 'license', message: 'MIT' })
t.create('Downloads | Package not found')
.get('/dm/notapackage.json')
.expectBadge({ label: 'downloads', message: 'package not found' })
t.create('Version | Package not found')
.get('/v/notapackage.json')
.expectBadge({ label: 'apm', message: 'package not found' })
t.create('License | Package not found')
.get('/l/notapackage.json')
.expectBadge({ label: 'license', message: 'package not found' })
t.create('Invalid version')
.get('/dm/vim-mode.json')
.intercept(nock =>
nock('https://atom.io')
.get('/api/packages/vim-mode')
.reply([200, '{"releases":{}}'])
)
.expectBadge({ label: 'downloads', message: 'unparseable json response' })
t.create('Invalid License')
.get('/l/vim-mode.json')
.intercept(nock =>
nock('https://atom.io')
.get('/api/packages/vim-mode')
.reply([200, '{"metadata":{}}'])
)
.expectBadge({ label: 'license', message: 'unparseable json response' })
t.create('Unexpected response')
.get('/dm/vim-mode.json')
.intercept(nock =>
nock('https://atom.io')
.get('/api/packages/vim-mode')
.reply(invalidJSON)
)
.expectBadge({ label: 'downloads', message: 'unparseable json response' })