Reduce boilerplate for creating new testers [npm appveyor gem uptimerobot clojars] (#1934)
This is a bit of sugar that reduces the boilerplate for creating testers in what I expect will become the standard case: a service in `foo/foo-thing.service.js` with its tests in `foo/foo-thing.tester.js`. This makes a small stylistic change, which is to name the service by its CamelCase class name rather than an invented snake-case ID. Whereas before the name was specified in `class FooThing extends Base[Json]Service` and a second time in the tester, it now only needs to be specified once.
This commit is contained in:
@@ -3,35 +3,15 @@
|
||||
const Joi = require('joi')
|
||||
const ServiceTester = require('../service-tester')
|
||||
|
||||
const {
|
||||
isVPlusDottedVersionAtLeastOne,
|
||||
isMetric,
|
||||
} = require('../test-validators')
|
||||
const isOrdinalNumber = Joi.string().regex(/^[1-9][0-9]+(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ)$/)
|
||||
const isOrdinalNumberDaily = Joi.string().regex(
|
||||
/^[1-9][0-9]+(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ) daily$/
|
||||
)
|
||||
const { isMetric } = require('../test-validators')
|
||||
|
||||
const t = new ServiceTester({ id: 'gem', title: 'Ruby Gems' })
|
||||
const t = new ServiceTester({
|
||||
id: 'gem-downloads',
|
||||
title: 'Ruby Gem Downloads',
|
||||
pathPrefix: '/gem',
|
||||
})
|
||||
module.exports = t
|
||||
|
||||
// version endpoint
|
||||
|
||||
t.create('version (valid)')
|
||||
.get('/v/formatador.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'gem',
|
||||
value: isVPlusDottedVersionAtLeastOne,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('version (not found)')
|
||||
.get('/v/not-a-package.json')
|
||||
.expectJSON({ name: 'gem', value: 'not found' })
|
||||
|
||||
// downloads endpoints
|
||||
|
||||
// total downloads
|
||||
t.create('total downloads (valid)')
|
||||
.get('/dt/rails.json')
|
||||
@@ -90,42 +70,3 @@ t.create('latest version downloads (valid)')
|
||||
t.create('latest version downloads (not found)')
|
||||
.get('/dtv/not-a-package.json')
|
||||
.expectJSON({ name: 'downloads', value: 'not found' })
|
||||
|
||||
// users endpoint
|
||||
|
||||
t.create('users (valid)')
|
||||
.get('/u/raphink.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'gems',
|
||||
value: Joi.string().regex(/^[0-9]+$/),
|
||||
})
|
||||
)
|
||||
|
||||
t.create('users (not found)')
|
||||
.get('/u/not-a-package.json')
|
||||
.expectJSON({ name: 'gems', value: 'not found' })
|
||||
|
||||
// rank endpoint
|
||||
|
||||
t.create('total rank (valid)')
|
||||
.get('/rt/rspec-puppet-facts.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'rank',
|
||||
value: isOrdinalNumber,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('daily rank (valid)')
|
||||
.get('/rd/rspec-puppet-facts.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'rank',
|
||||
value: isOrdinalNumberDaily,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('rank (not found)')
|
||||
.get('/rt/not-a-package.json')
|
||||
.expectJSON({ name: 'rank', value: 'not found' })
|
||||
20
services/gem/gem-owner.tester.js
Normal file
20
services/gem/gem-owner.tester.js
Normal file
@@ -0,0 +1,20 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const createServiceTester = require('../create-service-tester')
|
||||
|
||||
const t = createServiceTester()
|
||||
module.exports = t
|
||||
|
||||
t.create('users (valid)')
|
||||
.get('/raphink.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'gems',
|
||||
value: Joi.string().regex(/^[0-9]+$/),
|
||||
})
|
||||
)
|
||||
|
||||
t.create('users (not found)')
|
||||
.get('/not-a-package.json')
|
||||
.expectJSON({ name: 'gems', value: 'not found' })
|
||||
34
services/gem/gem-rank.tester.js
Normal file
34
services/gem/gem-rank.tester.js
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const createServiceTester = require('../create-service-tester')
|
||||
|
||||
const isOrdinalNumber = Joi.string().regex(/^[1-9][0-9]+(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ)$/)
|
||||
const isOrdinalNumberDaily = Joi.string().regex(
|
||||
/^[1-9][0-9]+(ᵗʰ|ˢᵗ|ⁿᵈ|ʳᵈ) daily$/
|
||||
)
|
||||
|
||||
const t = createServiceTester()
|
||||
module.exports = t
|
||||
|
||||
t.create('total rank (valid)')
|
||||
.get('/rt/rspec-puppet-facts.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'rank',
|
||||
value: isOrdinalNumber,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('daily rank (valid)')
|
||||
.get('/rd/rspec-puppet-facts.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'rank',
|
||||
value: isOrdinalNumberDaily,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('rank (not found)')
|
||||
.get('/rt/not-a-package.json')
|
||||
.expectJSON({ name: 'rank', value: 'not found' })
|
||||
22
services/gem/gem-version.tester.js
Normal file
22
services/gem/gem-version.tester.js
Normal file
@@ -0,0 +1,22 @@
|
||||
'use strict'
|
||||
|
||||
const Joi = require('joi')
|
||||
const createServiceTester = require('../create-service-tester')
|
||||
|
||||
const { isVPlusDottedVersionAtLeastOne } = require('../test-validators')
|
||||
|
||||
const t = createServiceTester()
|
||||
module.exports = t
|
||||
|
||||
t.create('version (valid)')
|
||||
.get('/formatador.json')
|
||||
.expectJSONTypes(
|
||||
Joi.object().keys({
|
||||
name: 'gem',
|
||||
value: isVPlusDottedVersionAtLeastOne,
|
||||
})
|
||||
)
|
||||
|
||||
t.create('version (not found)')
|
||||
.get('/not-a-package.json')
|
||||
.expectJSON({ name: 'gem', value: 'not found' })
|
||||
Reference in New Issue
Block a user