describe('CiBuildReader', () => {
const CI_BUILD_URL = `${SETTINGS.gateUrl}/ci/builds`;
let $http: IHttpBackendService;
let ciBuildReader: CiBuildReader;
beforeEach(mock.module(API_SERVICE, CI_BUILD_READ_SERVICE));
beforeEach(mock.inject((_$httpBackend_: IHttpBackendService,
_ciBuildReader_: CiBuildReader) => {
$http = _$httpBackend_;
ciBuildReader = _ciBuildReader_;
}));
beforeEach(() => {
CiFilterModel.searchFilter = 'none';
});
afterEach(() => {
CiFilterModel.searchFilter = null;
$http.verifyNoOutstandingExpectation();
$http.verifyNoOutstandingRequest();
});
function getBuild(buildId = 'buildId', completionStatus = 'COMPLETE'): ICiBuild {
return {
buildNumber: Math.floor(Math.random() * 100),
change: null,
completedAt: moment.now(),
completionStatus: completionStatus,
id: buildId,
repositoryId: 'repoId',
startedAt: moment.now() - 10000
};
}
it('should retrieve a list of transformed builds', () => {
const repoType = 'r_rt';
const projectKey = 'r_pk';
const repoSlug = 'r_rs';
$http.expectGET(`${CI_BUILD_URL}?repoType=${repoType}&projectKey=${projectKey}&repoSlug=${repoSlug}&filter=${CiFilterModel.searchFilter}`)
.respond(200, {data: [getBuild(), getBuild('buildId', 'INCOMPLETE')]});
let result: ICiBuild[] = null;
ciBuildReader.getBuilds(repoType, projectKey, repoSlug).then((builds: ICiBuild[]) => result = builds);
$http.flush();
expect(result.length).toBe(2);
result.forEach((build: ICiBuild) => {
expect(build.startTime).toBe(build.startedAt);
expect(build.endTime).toBe(build.completedAt);
expect(build.isRunning).toBe(build.completionStatus === 'INCOMPLETE');
expect(build.runningTimeInMs).toBeDefined();
})
});
it('should retrieve a list of running builds', () => {
const repoType = 'r_rt';
const projectKey = 'r_pk';
const repoSlug = 'r_rs';
$http.expectGET(`${CI_BUILD_URL}?repoType=${repoType}&projectKey=${projectKey}&repoSlug=${repoSlug}&completionStatus=INCOMPLETE`)
.respond(200, {data: [getBuild(), getBuild('buildId', 'INCOMPLETE')]});
let result: ICiBuild[] = null;
ciBuildReader.getRunningBuilds(repoType, projectKey, repoSlug).then((builds: ICiBuild[]) => result = builds);
$http.flush();
expect(result.length).toBe(2);
result.forEach((build: ICiBuild) => {
expect(build.startTime).toBe(build.startedAt);
expect(build.endTime).toBe(build.completedAt);
expect(build.isRunning).toBe(build.completionStatus === 'INCOMPLETE');
expect(build.runningTimeInMs).toBeDefined();
})
});
it('should retrieve the transformed build details', () => {
const buildId = 'bd_bid';
$http.expectGET(`${CI_BUILD_URL}/${buildId}`)
.respond(200, getBuild());
let build: ICiBuild = null;
ciBuildReader.getBuildDetails(buildId).then((b: ICiBuild) => build = b);
$http.flush();
expect(build.startTime).toBe(build.startedAt);
expect(build.endTime).toBe(build.completedAt);
expect(build.isRunning).toBe(build.completionStatus === 'INCOMPLETE');
expect(build.runningTimeInMs).toBeDefined();
});
it('should set the default start to -1 when not specified for build output requests', () => {
const buildId = 'bo_bid';
$http.expectGET(`${CI_BUILD_URL}/${buildId}/output?start=-1&limit=${CiBuildReader.MAX_LINES}`)
.respond(200, {});
ciBuildReader.getBuildOutput(buildId);
$http.flush();
});
it('should use the specified start parameter value for build output requests', () => {
const buildId = 'bo_bid';
const start = 20;
//.........这里部分代码省略.........
请发表评论