* 新增 changesDelay 配置,调用 /-/all/changes 接口时默认返回 delay 之前的 changes * 防止出现 since 和当前时间接近时,changes 异步插入,导致 changes 计算失败的问题
101 lines
3.0 KiB
JavaScript
101 lines
3.0 KiB
JavaScript
'use strict';
|
|
|
|
var should = require('should');
|
|
var request = require('supertest');
|
|
var mm = require('mm');
|
|
var config = require('../../../../config');
|
|
var app = require('../../../../servers/registry');
|
|
var utils = require('../../../utils');
|
|
var CHANGE_TYPE = require('../../../../services/common').CHANGE_TYPE;
|
|
|
|
describe('test/controllers/registry/package/changes.test.js', function () {
|
|
afterEach(mm.restore);
|
|
|
|
var since;
|
|
before(function (done) {
|
|
mm(config, 'changesDelay', 0);
|
|
setTimeout(() => {
|
|
since = Date.now();
|
|
var pkg = utils.getPackage('@cnpmtest/test_changes', '0.0.1', utils.admin, 'alpha');
|
|
request(app)
|
|
.put('/' + pkg.name)
|
|
.set('authorization', utils.adminAuth)
|
|
.send(pkg)
|
|
.expect(201, function() {
|
|
setTimeout(function() {
|
|
pkg = utils.getPackage('@cnpmtest/test_changes_gogo', '0.0.2', utils.admin, 'beta');
|
|
request(app)
|
|
.put('/' + pkg.name)
|
|
.set('authorization', utils.adminAuth)
|
|
.send(pkg)
|
|
.expect(201, done);
|
|
}, 2000);
|
|
});
|
|
}, 1000);
|
|
});
|
|
|
|
describe('GET /-/all/changes', function () {
|
|
it('should 200', function (done) {
|
|
request(app)
|
|
.get("/-/all/changes?since=" + since)
|
|
.expect(200, function (err, res) {
|
|
should.not.exist(err);
|
|
res.body.results.should.be.an.Array();
|
|
|
|
res.body.results
|
|
.filter(function (item) {
|
|
return item.type === CHANGE_TYPE.PACKAGE_VERSION_ADDED;
|
|
})
|
|
.length.should.equal(2);
|
|
res.body.results
|
|
.filter(function (item) {
|
|
return item.type === CHANGE_TYPE.PACKAGE_VERSION_ADDED;
|
|
})
|
|
.length.should.equal(2);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('changes delay should work', function(done) {
|
|
mm(config, 'changesDelay', 10000);
|
|
request(app)
|
|
.get("/-/all/changes?since=" + since)
|
|
.expect(200, function (err, res) {
|
|
should.not.exist(err);
|
|
res.body.results.should.be.an.Array();
|
|
res.body.results
|
|
.filter(function (item) {
|
|
return item.type === CHANGE_TYPE.PACKAGE_VERSION_ADDED;
|
|
})
|
|
.length.should.equal(0);
|
|
done();
|
|
});
|
|
})
|
|
|
|
it('since should work', function (done) {
|
|
var now = Date.now();
|
|
request(app)
|
|
.get("/-/all/changes?since=" + now + 5000)
|
|
.expect(200, function (err, res) {
|
|
should.not.exist(err);
|
|
res.body.results.should.be.an.Array();
|
|
res.body.results.length.should.equal(0);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('limit should work', function (done) {
|
|
mm(config, 'changesDelay', 0);
|
|
request(app)
|
|
.get('/-/all/changes?limit=1&since=' + since)
|
|
.expect(200, function (err, res) {
|
|
should.not.exist(err);
|
|
res.body.results.should.be.an.Array();
|
|
res.body.results.length.should.equal(1);
|
|
done();
|
|
});
|
|
});
|
|
|
|
});
|
|
});
|