diff --git a/test/functional/readpreference.test.js b/test/functional/readpreference.test.js index 6d26065308..f1bdc4ee7f 100644 --- a/test/functional/readpreference.test.js +++ b/test/functional/readpreference.test.js @@ -3,9 +3,11 @@ const test = require('./shared').assert; const setupDatabase = require('./shared').setupDatabase; const withMonitoredClient = require('./shared').withMonitoredClient; -const expect = require('chai').expect; const { ReadPreference, Topology } = require('../../src'); const { withClient } = require('./shared'); +const chai = require('chai'); +chai.use(require('chai-subset')); +const expect = chai.expect; describe('ReadPreference', function () { before(function () { @@ -620,4 +622,29 @@ describe('ReadPreference', function () { }); }); }); + + it('should respect readPreference from uri', { + metadata: { requires: { topology: 'replicaset', mongodb: '>=3.6' } }, + test: withMonitoredClient('find', { queryOptions: { readPreference: 'secondary' } }, function ( + client, + events, + done + ) { + expect(client.readPreference.mode).to.equal('secondary'); + client + .db('test') + .collection('test') + .findOne({ a: 1 }, err => { + expect(err).to.not.exist; + expect(events).to.be.an('array').with.lengthOf(1); + expect(events[0]).to.containSubset({ + commandName: 'find', + command: { + $readPreference: { mode: 'secondary' } + } + }); + done(); + }); + }) + }); }); diff --git a/test/functional/write_concern.test.js b/test/functional/write_concern.test.js index 1af8223652..ddc89a5aac 100644 --- a/test/functional/write_concern.test.js +++ b/test/functional/write_concern.test.js @@ -23,6 +23,28 @@ describe('Write Concern', function () { generateTopologyTests(testSuites, testContext); }); + it( + 'should respect writeConcern from uri', + withMonitoredClient('insert', { queryOptions: { w: 0 } }, function (client, events, done) { + expect(client.writeConcern).to.eql({ w: 0 }); + client + .db('test') + .collection('test') + .insertOne({ a: 1 }, (err, result) => { + expect(err).to.not.exist; + expect(result).to.exist; + expect(events).to.be.an('array').with.lengthOf(1); + expect(events[0]).to.containSubset({ + commandName: 'insert', + command: { + writeConcern: { w: 0 } + } + }); + done(); + }); + }) + ); + // TODO: once `read-write-concern/connection-string` spec tests are implemented these can likely be removed describe('test journal connection string option', function () { function journalOptionTest(client, events, done) {