@@ -7,10 +7,7 @@ const { MongoServerSelectionError } = require('../../../src/error');
77const ServerSelectors = require ( '../../../src/sdam/server_selection' ) ;
88
99const sinon = require ( 'sinon' ) ;
10- const chai = require ( 'chai' ) ;
11-
12- const expect = chai . expect ;
13- chai . use ( require ( 'chai-subset' ) ) ;
10+ const { expect } = require ( 'chai' ) ;
1411
1512function serverDescriptionFromDefinition ( definition , hosts ) {
1613 hosts = hosts || [ ] ;
@@ -82,7 +79,7 @@ function readPreferenceFromDefinition(definition) {
8279 return new ReadPreference ( mode , tags , options ) ;
8380}
8481
85- function executeServerSelectionTest ( testDefinition , options , testDone ) {
82+ function executeServerSelectionTest ( testDefinition , testDone ) {
8683 const topologyDescription = testDefinition . topology_description ;
8784 const seedData = topologyDescription . servers . reduce (
8885 ( result , seed ) => {
@@ -140,15 +137,9 @@ function executeServerSelectionTest(testDefinition, options, testDone) {
140137 // expectations
141138 let expectedServers ;
142139 if ( ! testDefinition . error ) {
143- if ( options . checkLatencyWindow ) {
144- expectedServers = testDefinition . in_latency_window . map ( s =>
145- serverDescriptionFromDefinition ( s )
146- ) ;
147- } else {
148- expectedServers = testDefinition . suitable_servers . map ( s =>
149- serverDescriptionFromDefinition ( s )
150- ) ;
151- }
140+ expectedServers = testDefinition . in_latency_window . map ( s =>
141+ serverDescriptionFromDefinition ( s )
142+ ) ;
152143 }
153144
154145 // default to serverSelectionTimeoutMS of `100` for unit tests
@@ -183,7 +174,20 @@ function executeServerSelectionTest(testDefinition, options, testDone) {
183174 return done ( new Error ( 'No suitable servers found!' ) ) ;
184175 }
185176
186- expect ( selectedServerDescription ) . to . include . containSubset ( expectedServerArray [ 0 ] ) ;
177+ if ( expectedServerArray . length > 1 ) {
178+ return done ( new Error ( 'This test does not support multiple expected servers' ) ) ;
179+ }
180+
181+ for ( const [ prop , value ] of Object . entries ( expectedServerArray [ 0 ] ) ) {
182+ if ( prop === 'hosts' ) {
183+ // we dynamically modify this prop during sever selection
184+ continue ;
185+ }
186+ expect ( selectedServerDescription [ prop ] ) . to . deep . equal (
187+ value ,
188+ `Mismatched selected server "${ prop } "`
189+ ) ;
190+ }
187191 done ( ) ;
188192 } catch ( e ) {
189193 done ( e ) ;
0 commit comments