'use strict'; const Joi = require('joi'); const ServiceTester = require('../service-tester'); const { isMetric, isMetricOverTimePeriod } = require('../test-validators'); const t = new ServiceTester({ id: 'sourceforge', title: 'SourceForge' }); module.exports = t; t.create('total downloads') .get('/dt/sevenzip.json') .expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetric, })); t.create('monthly downloads') .get('/dm/sevenzip.json') .expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetricOverTimePeriod, })); t.create('weekly downloads') .get('/dw/sevenzip.json') .expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetricOverTimePeriod, })); t.create('daily downloads') .get('/dd/sevenzip.json') .expectJSONTypes(Joi.object().keys({ name: 'downloads', value: isMetricOverTimePeriod, })); t.create('invalid project') .get('/dd/invalid.json') .expectJSON({ name: 'downloads', value: 'invalid', }); t.create('total downloads (connection error)') .get('/dt/sevenzip.json') .networkOff() .expectJSON({ name: 'downloads', value: 'inaccessible' });