diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 00000000..2f207a28 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,3 @@ +{ + "exit": true +} diff --git a/test-basic/documents-data-movement-removeAllUris.js b/test-basic/documents-data-movement-removeAllUris.js index 385d6336..77040d9f 100644 --- a/test-basic/documents-data-movement-removeAllUris.js +++ b/test-basic/documents-data-movement-removeAllUris.js @@ -15,8 +15,7 @@ let removeStream = new Stream.PassThrough({objectMode: true}); let uris = []; describe('data movement removeAllUris', function() { - this.timeout(15000); - beforeEach(function (done) { + beforeEach(async function() { let readable = new Stream.Readable({objectMode: true}); removeStream = new Stream.PassThrough({objectMode: true}); uris = []; @@ -33,142 +32,132 @@ describe('data movement removeAllUris', function() { readable.push(null); removeStream.push(null); - dbWriter.documents.writeAll(readable,{ - onCompletion: ((summary) => { - done(); - }) + await new Promise((resolve) => { + dbWriter.documents.writeAll(readable, { + onCompletion: resolve + }); }); }); - it('should removeAllUris documents with onCompletion, concurrentRequests options', done => { - dbWriter.documents.removeAllUris(removeStream,{ - concurrentRequests : {multipleOf:'hosts', multiplier:4}, - onCompletion: ((summary) => { - try { - summary.docsRemovedSuccessfully.should.be.equal(100); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - verifyDocs(done); - } catch(err) { - done(err); - } - }) + it('should removeAllUris documents with onCompletion, concurrentRequests options', async () => { + const summary = await new Promise((resolve) => { + dbWriter.documents.removeAllUris(removeStream, { + concurrentRequests: {multipleOf: 'hosts', multiplier: 4}, + onCompletion: resolve + }); }); + summary.docsRemovedSuccessfully.should.be.equal(100); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await verifyDocs(); }); - it('should removeAllUris documents with onBatchSuccess and batchSize options', done => { - - dbWriter.documents.removeAllUris(removeStream, { - onBatchSuccess: (function(progress, documents) { - progress.docsRemovedSuccessfully.should.be.greaterThanOrEqual(10); - progress.docsFailedToBeRemoved.should.be.equal(0); - progress.timeElapsed.should.be.greaterThanOrEqual(0); - documents.length.should.equal(10); - }), - batchSize:10, - onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(100); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - verifyDocs(done); - }) + it('should removeAllUris documents with onBatchSuccess and batchSize options', async () => { + const summary = await new Promise((resolve, reject) => { + dbWriter.documents.removeAllUris(removeStream, { + onBatchSuccess: (function (progress, documents) { + try { + progress.docsRemovedSuccessfully.should.be.greaterThanOrEqual(10); + progress.docsFailedToBeRemoved.should.be.equal(0); + progress.timeElapsed.should.be.greaterThanOrEqual(0); + documents.length.should.equal(10); + } catch (err) { + reject(err); + } + }), + batchSize: 10, + onCompletion: resolve + }); }); + summary.docsRemovedSuccessfully.should.be.equal(100); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await verifyDocs(); }); - it('should throw error with invalid batchSize and inputKind as array option', function(done){ + it('should throw error with invalid batchSize and inputKind as array option', async function(){ try{ - dbWriter.documents.removeAllUris(removeStream,{ + await dbWriter.documents.removeAllUris(removeStream,{ batchSize:10, inputKind:'array' }); } catch(err){ err.toString().should.equal('Error: batchSize not expected when inputKind is array.'); - dbWriter.documents.remove(uris) - .result(function(response) {done();}) - .catch(error => done(error)); + await dbWriter.documents.remove(uris).result(); } }); - it('should removeAllUris documents with inputKind as array', done => { - + it('should removeAllUris documents with inputKind as array', async () => { removeStream = new Stream.Readable({objectMode: true}); - for(let i=0; i+10<=uris.length; i=i+10){ - removeStream.push(uris.slice(i,i+10)); + for (let i = 0; i + 10 <= uris.length; i = i + 10) { + removeStream.push(uris.slice(i, i + 10)); } removeStream.push(null); - dbWriter.documents.removeAllUris(removeStream,{ - inputKind:'aRRaY', - onBatchSuccess: (function(progress, documents) { - try{ - documents.length.should.equal(10); - } catch(error){ - done(error); - } - }), - onCompletion: ((summary) => { - try{ - summary.docsRemovedSuccessfully.should.be.equal(100); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - verifyDocs(done); - } catch(error){ - done(error); - } - }) + await new Promise((resolve, reject) => { + dbWriter.documents.removeAllUris(removeStream, { + inputKind: 'aRRaY', + onBatchSuccess: (function (progress, documents) { + try { + documents.length.should.equal(10); + } catch (error) { + reject(error); + } + }), + onCompletion: ((summary) => { + try { + summary.docsRemovedSuccessfully.should.be.equal(100); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + resolve(summary); + } catch (error) { + reject(error); + } + }) + }); }); + await verifyDocs(); }); - it('should throw error with invalid concurrentRequests option', function(done){ + it('should throw error with invalid concurrentRequests option', async function(){ try{ - dbWriter.documents.removeAllUris(removeStream,{ + await dbWriter.documents.removeAllUris(removeStream,{ concurrentRequests: {multipleOf: 'invalid', multiplier: 4} }); } catch(err){ err.toString().should.equal('Error: Invalid value for multipleOf. Value must be forests or hosts.'); - dbWriter.documents.remove(uris) - .result(function(response) {done();}) - .catch(error => done(error)); + await dbWriter.documents.remove(uris).result(); } }); - it('should queryToRemoveAll documents with onCompletion option', function(done){ - - dbWriter.documents.queryToRemoveAll(query,{ - onCompletion:((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(100); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - verifyDocs(done); - }) + it('should queryToRemoveAll documents with onCompletion option', async function(){ + const summary = await new Promise((resolve) => { + dbWriter.documents.queryToRemoveAll(query, { + onCompletion: resolve + }); }); + summary.docsRemovedSuccessfully.should.be.equal(100); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await verifyDocs(); }); - it('should queryToRemoveAll documents with onCompletion, concurrentRequestsas', - done => { - + it('should queryToRemoveAll documents with onCompletion, concurrentRequestsas', async () => { + const summary = await new Promise((resolve) => { dbWriter.documents.queryToRemoveAll(query, { - concurrentRequests : {multipleOf:'hosts', multiplier:4}, - onCompletion: ((summary) => { - try { - summary.docsRemovedSuccessfully.should.be.equal(100); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - verifyDocs(done); - } catch(err) { - done(err); - } - }) + concurrentRequests: {multipleOf: 'hosts', multiplier: 4}, + onCompletion: resolve }); }); + summary.docsRemovedSuccessfully.should.be.equal(100); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await verifyDocs(); + }); }); -function verifyDocs(done){ - dbWriter.documents.read(uris) - .result(function (documents) { - documents.length.should.equal(0); - }) - .then(()=> done()) - .catch(err=> done(err)); +async function verifyDocs(){ + const documents = await dbWriter.documents.read(uris).result(); + documents.length.should.equal(0); } diff --git a/test-complete/nodejs-dmsdk-removeAllUris.js b/test-complete/nodejs-dmsdk-removeAllUris.js index b09269f7..0c0d6c00 100644 --- a/test-complete/nodejs-dmsdk-removeAllUris.js +++ b/test-complete/nodejs-dmsdk-removeAllUris.js @@ -19,7 +19,7 @@ let uris = []; describe('Functional tests - data movement - nodejs-dmsdk-removeAllUris', function () { this.timeout(15000); - beforeEach(function (done) { + beforeEach(async function () { let readable = new Stream.Readable({ objectMode: true }); removeStream = new Stream.PassThrough({ objectMode: true }); uris = []; @@ -36,132 +36,129 @@ describe('Functional tests - data movement - nodejs-dmsdk-removeAllUris', functi readable.push(null); removeStream.push(null); - dbWriter.documents.writeAll(readable, { - onCompletion: ((summary) => { - done(); - }) + await new Promise((resolve) => { + dbWriter.documents.writeAll(readable, { + onCompletion: (() => { + resolve(); + }) + }); }); - }); - it('delete Non Existent docs', function (done) { - + it('delete Non Existent docs', async function () { removeStream = new Stream.PassThrough({ objectMode: true }); removeStream.push('nonExistent.json'); removeStream.push('nonExistent2.json'); removeStream.push(null); - dbWriter.documents.removeAllUris(removeStream, { - concurrentRequests: { multipleOf: 'hosts', multiplier: 4 }, - onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(2); - summary.docsFailedToBeRemoved.should.be.equal(0); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - done(); - }) + const summary = await new Promise((resolve) => { + dbWriter.documents.removeAllUris(removeStream, { + concurrentRequests: { multipleOf: 'hosts', multiplier: 4 }, + onCompletion: ((summary) => { + resolve(summary); + }) + }); }); + summary.docsRemovedSuccessfully.should.be.equal(2); + summary.docsFailedToBeRemoved.should.be.equal(0); + summary.timeElapsed.should.be.greaterThanOrEqual(0); }); - it('should not removeAllUris with onBatchError returning null', function (done) { - + it('should not removeAllUris with onBatchError returning null', async function () { const testUser = marklogic.createDatabaseClient(testconfig.restReaderConnection); - testUser.documents.removeAllUris(removeStream, { - - onBatchError: ((progressSoFar, documents, error) => { - error.body.errorResponse.status.should.be.equal('Forbidden'); - progressSoFar.docsRemovedSuccessfully.should.be.equal(0); - progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); - return null; - }), - onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(0); - summary.docsFailedToBeRemoved.should.be.equal(100); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - dbWriter.documents.remove(uris) - .result(function (response) { - done(); - }) - .catch(done) - .catch(err => done(err)); - }) + const summary = await new Promise((resolve) => { + testUser.documents.removeAllUris(removeStream, { + onBatchError: ((progressSoFar, documents, error) => { + error.body.errorResponse.status.should.be.equal('Forbidden'); + progressSoFar.docsRemovedSuccessfully.should.be.equal(0); + progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); + return null; + }), + onCompletion: ((summary) => { + resolve(summary); + }) + }); }); + summary.docsRemovedSuccessfully.should.be.equal(0); + summary.docsFailedToBeRemoved.should.be.equal(100); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await dbWriter.documents.remove(uris).result(); }); - it('should throw error with invalid batchSize', function (done) { + it('should throw error with invalid batchSize', function () { try { dbWriter.documents.removeAllUris(removeStream, { batchSize: -1 }); } catch (err) { err.toString().should.equal('Error: Invalid batchSize. batchSize cannot be less than or equal to 0.'); - done(); } }); - it('should not removeAllUris with onBatchError returning error', function (done) { - + it('should not removeAllUris with onBatchError returning error', async function () { const testUser = marklogic.createDatabaseClient(testconfig.restReaderConnection); - const remove = testUser.documents.removeAllUris(removeStream, { + const summary = await new Promise((resolve, reject) => { + const remove = testUser.documents.removeAllUris(removeStream, { + onBatchError: ((progressSoFar, documents, error) => { + try { + error.body.errorResponse.status.should.be.equal('Forbidden'); + progressSoFar.docsRemovedSuccessfully.should.be.equal(0); + progressSoFar.docsFailedToBeRemoved.should.be.equal(100); + progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); + throw new Error('Stop Processing'); + } catch (e) { + return e; + } + }), + onCompletion: ((summary) => { + resolve(summary); + }) + }); + remove.on('error', (err) => { + err.message.should.be.equal('Stop Processing'); + reject(err); + }); + }).catch(err => err); - onBatchError: ((progressSoFar, documents, error) => { - error.body.errorResponse.status.should.be.equal('Forbidden'); - progressSoFar.docsRemovedSuccessfully.should.be.equal(0); - progressSoFar.docsFailedToBeRemoved.should.be.equal(100); - progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); - throw new Error('Stop Processing'); - }), - onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(0); - summary.docsFailedToBeRemoved.should.be.equal(100); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - summary.error.should.be.equal('Error: Stop Processing'); - dbWriter.documents.remove(uris) - .result(function (response) { - done(); - }) - .catch(err => done(err)); - }) - }); - remove.on('error', (err) => { - err.message.should.be.equal('Stop Processing'); - }); + if (summary.message !== 'Stop Processing') { + summary.docsRemovedSuccessfully.should.be.equal(0); + summary.docsFailedToBeRemoved.should.be.equal(100); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + summary.error.should.be.equal('Error: Stop Processing'); + } + await dbWriter.documents.remove(uris).result(); }); - it('should throw error with invalid onBatchError option', function (done) { - + it('should throw error with invalid onBatchError option', async function () { const testUser = marklogic.createDatabaseClient(testconfig.restReaderConnection); - const remove = (testUser.documents.removeAllUris(removeStream, { - - onBatchError: ((progressSoFar, documents, error) => { - error.body.errorResponse.status.should.be.equal('Forbidden'); - progressSoFar.docsRemovedSuccessfully.should.be.equal(0); - progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); - return 10; - }), - onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(0); - summary.docsFailedToBeRemoved.should.be.equal(100); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - summary.error.should.be.equal('Error: onBatchError should return null, empty array or a replacement array.'); - - }) - })); - - remove.on('error', (err) => { - err.message.should.be.equal('onBatchError should return null, empty array or a replacement array.'); - dbWriter.documents.remove(uris) - .result(function (response) { - done(); + const err = await new Promise((resolve) => { + const remove = (testUser.documents.removeAllUris(removeStream, { + onBatchError: ((progressSoFar, documents, error) => { + error.body.errorResponse.status.should.be.equal('Forbidden'); + progressSoFar.docsRemovedSuccessfully.should.be.equal(0); + progressSoFar.timeElapsed.should.be.greaterThanOrEqual(0); + return 10; + }), + onCompletion: ((summary) => { + summary.docsRemovedSuccessfully.should.be.equal(0); + summary.docsFailedToBeRemoved.should.be.equal(100); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + summary.error.should.be.equal('Error: onBatchError should return null, empty array or a replacement array.'); }) - .catch(err => done(err)); + })); + remove.on('error', (err) => { + resolve(err); + }); }); + + err.message.should.be.equal('onBatchError should return null, empty array or a replacement array.'); + await dbWriter.documents.remove(uris).result(); }); - it('should queryToRemoveAll documents with onBatchError returning empty array', - done => { - const testUser = marklogic.createDatabaseClient(testconfig.dmsdkrestReaderConnection); + it('should queryToRemoveAll documents with onBatchError returning empty array', async () => { + const testUser = marklogic.createDatabaseClient(testconfig.dmsdkrestReaderConnection); + const summary = await new Promise((resolve) => { testUser.documents.queryToRemoveAll(query, { - onBatchError: ((progressSoFar, documents, error) => { error.body.errorResponse.status.should.be.equal('Forbidden'); progressSoFar.docsRemovedSuccessfully.should.be.equal(0); @@ -169,16 +166,13 @@ describe('Functional tests - data movement - nodejs-dmsdk-removeAllUris', functi return []; }), onCompletion: ((summary) => { - summary.docsRemovedSuccessfully.should.be.equal(0); - summary.docsFailedToBeRemoved.should.be.equal(100); - summary.timeElapsed.should.be.greaterThanOrEqual(0); - dbWriter.documents.remove(uris) - .result(function (response) { - done(); - }) - .catch(done) - .catch(err => done(err)); + resolve(summary); }) }); }); + summary.docsRemovedSuccessfully.should.be.equal(0); + summary.docsFailedToBeRemoved.should.be.equal(100); + summary.timeElapsed.should.be.greaterThanOrEqual(0); + await dbWriter.documents.remove(uris).result(); + }); });