diff --git a/package.json b/package.json index b8a2400..c41432d 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,12 @@ }, "devDependencies": { "chai": "^4.1.2", - "chai-as-promised": "^7.1.1", "coveralls": "^3.0.1", - "eslint": "^4.19.1", + "eslint": "^5.0.1", "istanbul": "^0.4.5", "mocha": "^5.2.0", "mocha-lcov-reporter": "^1.3.0", "proxyquire": "^2.0.1", - "sinon": "^4.2.2", - "sinon-stub-promise": "^4.0.0" + "sinon": "^6.0.1" } } diff --git a/test/Bitbucket.js b/test/Bitbucket.js index f7a4503..cada87b 100644 --- a/test/Bitbucket.js +++ b/test/Bitbucket.js @@ -1,6 +1,7 @@ -let expect = require('chai').expect, +let chai = require('chai'), sinon = require('sinon'), - proxyquire = require('proxyquire'); + proxyquire = require('proxyquire'), + expect = chai.expect; describe('Bitbucket', function() { let Bitbucket, @@ -94,7 +95,7 @@ describe('Bitbucket', function() { let promise; beforeEach(function() { - promise = sinon.stub().returnsPromise(); + promise = sinon.stub(); Bitbucket = proxyquire('../lib/Bitbucket', { 'request-promise': promise @@ -110,7 +111,9 @@ describe('Bitbucket', function() { let result = client.obtainTokens(); // assert - expect(result.rejectValue.toString()).to.equal('Error: Can not fetch client tokens. Stack trace: foobar'); + return result.catch((err) => { + expect(err.toString()).to.equal('Error: Can not fetch client tokens. Stack trace: foobar'); + }); }); it('should throw an error if response is not valid JSON', function() { @@ -122,7 +125,9 @@ describe('Bitbucket', function() { let result = client.obtainTokens(); // assert - expect(result.rejectValue.toString()).to.equal('Error: Can not fetch client tokens. Stack trace: Error: Cannot parse tokens. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); + return result.catch((err) => { + expect(err.toString()).to.equal('Error: Can not fetch client tokens. Stack trace: Error: Cannot parse tokens. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); + }); }); it('should set access and refresh tokens if request is successful', function() { @@ -135,11 +140,13 @@ describe('Bitbucket', function() { // act let client = new Bitbucket(clientId, clientSecret, accessToken, refreshToken); - client.obtainTokens(); + let result = client.obtainTokens(); // assert - expect(client.accessToken).to.equal(response.access_token); - expect(client.refreshToken).to.equal(response.refresh_token); + return result.then(() => { + expect(client.accessToken).to.equal(response.access_token); + expect(client.refreshToken).to.equal(response.refresh_token); + }); }); }); @@ -147,7 +154,7 @@ describe('Bitbucket', function() { let promise; beforeEach(function() { - promise = sinon.stub().returnsPromise(); + promise = sinon.stub(); Bitbucket = proxyquire('../lib/Bitbucket', { 'request-promise': promise @@ -163,7 +170,9 @@ describe('Bitbucket', function() { let result = client.refreshTokens(); // assert - expect(result.rejectValue.toString()).to.equal('Error: Can not refresh access token by given refresh: refreshToken. Stack trace: foobar'); + return result.catch((err) => { + expect(err.toString()).to.equal('Error: Can not refresh access token by given refresh: refreshToken. Stack trace: foobar'); + }); }); it('should throw an error if response is not valid JSON', function() { @@ -175,8 +184,9 @@ describe('Bitbucket', function() { let result = client.refreshTokens(); // assert - expect(result.rejectValue.toString()).to.equal('Error: Can not refresh access token by given refresh: refreshToken. Stack trace: Error: Cannot parse tokens. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); - + return result.catch((err) => { + expect(err.toString()).to.equal('Error: Can not refresh access token by given refresh: refreshToken. Stack trace: Error: Cannot parse tokens. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); + }); }); it('should refresh access token by given refresh token', function() { @@ -188,10 +198,12 @@ describe('Bitbucket', function() { // act let client = new Bitbucket(clientId, clientSecret, accessToken, refreshToken); - client.refreshTokens(); + let result = client.refreshTokens(); // assert - expect(client.accessToken).to.equal(response.access_token); + return result.then(() => { + expect(client.accessToken).to.equal(response.access_token); + }); }); }); diff --git a/test/Jira.js b/test/Jira.js index 97f174d..9fa6bbf 100644 --- a/test/Jira.js +++ b/test/Jira.js @@ -1,13 +1,8 @@ let chai = require('chai'), - chaiAsPromised = require('chai-as-promised'), sinon = require('sinon'), - sinonStubPromise = require('sinon-stub-promise'), proxyquire = require('proxyquire'), expect = chai.expect; -sinonStubPromise(sinon); -chai.use(chaiAsPromised); - describe('Jira', function() { let Jira, domain, @@ -122,7 +117,7 @@ describe('Jira', function() { let promise; beforeEach(function() { - promise = sinon.stub().returnsPromise(); + promise = sinon.stub(); Jira = proxyquire('../lib/Jira', { 'request-promise': promise @@ -198,7 +193,9 @@ describe('Jira', function() { let result = jira.transitionIssue(issueId, options); // assert - expect(result.rejectValue.toString()).to.equal('Error: Can not transition issue FOO-666 to 323. Stack trace: bad request'); + return result.catch((err) => { + expect(err.toString()).to.equal('Error: Can not transition issue FOO-666 to 323. Stack trace: bad request'); + }); }); it('should return empty response if successful', function() { diff --git a/test/PullRequests.js b/test/PullRequests.js index b5f6aca..d0cfb50 100644 --- a/test/PullRequests.js +++ b/test/PullRequests.js @@ -1,13 +1,8 @@ let chai = require('chai'), - chaiAsPromised = require('chai-as-promised'), sinon = require('sinon'), - sinonStubPromise = require('sinon-stub-promise'), proxyquire = require('proxyquire'), expect = chai.expect; -sinonStubPromise(sinon); -chai.use(chaiAsPromised); - describe('PullRequests', function() { let PullRequests, bitbucket, @@ -137,9 +132,9 @@ describe('PullRequests', function() { let promise; beforeEach(function() { - promise = sinon.stub().returnsPromise(); + promise = sinon.stub(); bitbucket = { - refreshTokens: sinon.stub().returnsPromise() + refreshTokens: sinon.stub() }; PullRequests = proxyquire('../lib/PullRequests', { @@ -175,101 +170,119 @@ describe('PullRequests', function() { it('should use user search query instead of building new one', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ q: 'state="MERGED"', state: 'OPEN' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'state="MERGED"', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'state="MERGED"', + page: 1 + }); }); }); it('should build new search query if q is missing', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ state: 'OPEN' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'state="OPEN"', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'state="OPEN"', + page: 1 + }); }); }); it('should build new search query with updated on parameter', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ updatedOn: '6-06-6006' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'updated_on >= 6-06-6006', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'updated_on >= 6-06-6006', + page: 1 + }); }); }); it('should build new search query with destination branch name parameter', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ destinationBranch: 'foobar' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'destination.branch.name="foobar"', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'destination.branch.name="foobar"', + page: 1 + }); }); }); it('should append updatedOn parameter to state', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ state: 'MERGED', updatedOn: '6-06-6006' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'state="MERGED" AND updated_on >= 6-06-6006', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'state="MERGED" AND updated_on >= 6-06-6006', + page: 1 + }); }); }); it('should append branch name parameter to state and updatedOn', function() { // arrange + promise.resolves(); // act let pullRequests = new PullRequests(bitbucket, username, repoSlug); - pullRequests.getPullRequests({ + let result = pullRequests.getPullRequests({ state: 'MERGED', updatedOn: '6-06-6006', destinationBranch: 'foobar' }); // assert - expect(promise.getCall(0).args[0].qs).to.eql({ - q: 'state="MERGED" AND updated_on >= 6-06-6006 AND destination.branch.name="foobar"', - page: 1 + return result.catch(() => { + expect(promise.getCall(0).args[0].qs).to.eql({ + q: 'state="MERGED" AND updated_on >= 6-06-6006 AND destination.branch.name="foobar"', + page: 1 + }); }); }); @@ -285,7 +298,9 @@ describe('PullRequests', function() { }); // assert - expect(pullRequestsData.rejectValue.toString()).to.equal('Error: PullRequests: Can not refresh access token. Stack trace: bad tokens'); + return pullRequestsData.catch((err) => { + expect(err.toString()).to.equal('Error: PullRequests: Can not refresh access token. Stack trace: bad tokens'); + }); }); it('should throw an error if response is rejected but can refresh tokens', function() { @@ -300,7 +315,9 @@ describe('PullRequests', function() { }); // assert - expect(pullRequestsData.rejectValue.toString()).to.equal('Error: PullRequests: Can not refresh access token. Stack trace: Error: Maximum number of refresh token retries exceeded. Stack trace: bad request'); + return pullRequestsData.catch((err) => { + expect(err.toString()).to.equal('Error: PullRequests: Can not refresh access token. Stack trace: Error: Maximum number of refresh token retries exceeded. Stack trace: bad request'); + }); }); it('should throw an error if response is not valid JSON', function() { @@ -314,7 +331,9 @@ describe('PullRequests', function() { }); // assert - expect(pullRequestsData.rejectValue.toString()).to.equal('Error: Maximum number of refresh token retries exceeded. Stack trace: Error: Can not parse pull requests. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); + return pullRequestsData.catch((err) => { + expect(err.toString()).to.equal('Error: Maximum number of refresh token retries exceeded. Stack trace: Error: Can not parse pull requests. Stack trace: SyntaxError: Unexpected token o in JSON at position 1'); + }); }); it('should return serialized pull requests', function() { @@ -365,7 +384,9 @@ describe('PullRequests', function() { }); // assert - return expect(pullRequestsData).to.eventually.eql(expected); + return pullRequestsData.then((data) => { + expect(data).to.eql(expected); + }); }); it('should return serialized pull requests and skip PR id if pattern not match', function() { @@ -416,7 +437,9 @@ describe('PullRequests', function() { }); // assert - return expect(pullRequestsData).to.eventually.eql(expected); + return pullRequestsData.then((data) => { + expect(data).to.eql(expected); + }); }); it('should concatinate pull requests if more than one have same target branch', function() { @@ -487,7 +510,9 @@ describe('PullRequests', function() { }, firstPagePrs); // assert - return expect(pullRequestsData).to.eventually.eql(expected); + return pullRequestsData.then((data) => { + expect(data).to.eql(expected); + }); }); it('should set jira URLs if option is passed', function() { @@ -545,7 +570,9 @@ describe('PullRequests', function() { }); // assert - return expect(pullRequestsData).to.eventually.eql(expected); + return pullRequestsData.then((data) => { + expect(data).to.eql(expected); + }); }); it('should get pull requests from second page', function() { @@ -631,7 +658,9 @@ describe('PullRequests', function() { }); // assert - return expect(pullRequestsData).to.eventually.eql(expected); + return pullRequestsData.then((data) => { + expect(data).to.eql(expected); + }); }); }); }); \ No newline at end of file