Skip to content

Commit

Permalink
refactor(server): move transport mode default setting into helper
Browse files Browse the repository at this point in the history
  • Loading branch information
knagaitsev committed Jul 29, 2019
1 parent 1b3e78d commit c648678
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 37 deletions.
22 changes: 1 addition & 21 deletions lib/Server.js
Expand Up @@ -61,27 +61,7 @@ class Server {

this.log = _log || createLogger(options);

if (this.options.transportMode === undefined) {
this.options.transportMode = {
server: 'sockjs',
client: 'sockjs',
};
} else {
switch (typeof this.options.transportMode) {
case 'string':
this.options.transportMode = {
server: this.options.transportMode,
client: this.options.transportMode,
};
break;
// if not a string, it is an object
default:
this.options.transportMode.server =
this.options.transportMode.server || 'sockjs';
this.options.transportMode.client =
this.options.transportMode.client || 'sockjs';
}

if (this.options.transportMode !== undefined) {
this.log.warn(
'transportMode is an experimental option, meaning its usage could potentially change without warning'
);
Expand Down
27 changes: 19 additions & 8 deletions lib/utils/normalizeOptions.js
Expand Up @@ -9,14 +9,25 @@ function normalizeOptions(compiler, options) {
options.contentBase =
options.contentBase !== undefined ? options.contentBase : process.cwd();

// set serverMode default
if (options.serverMode === undefined) {
options.serverMode = 'sockjs';
}

// set clientMode default
if (options.clientMode === undefined) {
options.clientMode = 'sockjs';
// normalize transportMode option
if (options.transportMode === undefined) {
options.transportMode = {
server: 'sockjs',
client: 'sockjs',
};
} else {
switch (typeof options.transportMode) {
case 'string':
options.transportMode = {
server: options.transportMode,
client: options.transportMode,
};
break;
// if not a string, it is an object
default:
options.transportMode.server = options.transportMode.server || 'sockjs';
options.transportMode.client = options.transportMode.client || 'sockjs';
}
}

if (!options.watchOptions) {
Expand Down
84 changes: 76 additions & 8 deletions test/server/utils/__snapshots__/normalizeOptions.test.js.snap
Expand Up @@ -2,37 +2,105 @@

exports[`normalizeOptions contentBase array should set correct options 1`] = `
Object {
"clientMode": "sockjs",
"contentBase": Array [
"/path/to/dist1",
"/path/to/dist2",
],
"serverMode": "sockjs",
"transportMode": Object {
"client": "sockjs",
"server": "sockjs",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions contentBase string should set correct options 1`] = `
Object {
"clientMode": "sockjs",
"contentBase": "/path/to/dist",
"serverMode": "sockjs",
"transportMode": Object {
"client": "sockjs",
"server": "sockjs",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions no options should set correct options 1`] = `
Object {
"clientMode": "sockjs",
"serverMode": "sockjs",
"transportMode": Object {
"client": "sockjs",
"server": "sockjs",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode custom client path should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "/path/to/custom/client/",
"server": "sockjs",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode custom server class should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "sockjs",
"server": [Function],
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode custom server path should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "sockjs",
"server": "/path/to/custom/server/",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode sockjs string should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "sockjs",
"server": "sockjs",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode ws object should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "ws",
"server": "ws",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions transportMode ws string should set correct options 1`] = `
Object {
"transportMode": Object {
"client": "ws",
"server": "ws",
},
"watchOptions": Object {},
}
`;

exports[`normalizeOptions watchOptions should set correct options 1`] = `
Object {
"clientMode": "sockjs",
"serverMode": "sockjs",
"transportMode": Object {
"client": "sockjs",
"server": "sockjs",
},
"watchOptions": Object {
"poll": true,
},
Expand Down
57 changes: 57 additions & 0 deletions test/server/utils/normalizeOptions.test.js
Expand Up @@ -37,6 +37,63 @@ describe('normalizeOptions', () => {
},
optionsResults: null,
},
{
title: 'transportMode sockjs string',
multiCompiler: false,
options: {
transportMode: 'sockjs',
},
optionsResults: null,
},
{
title: 'transportMode ws string',
multiCompiler: false,
options: {
transportMode: 'ws',
},
optionsResults: null,
},
{
title: 'transportMode ws object',
multiCompiler: false,
options: {
transportMode: {
server: 'ws',
client: 'ws',
},
},
optionsResults: null,
},
{
title: 'transportMode custom server path',
multiCompiler: false,
options: {
transportMode: {
server: '/path/to/custom/server/',
},
},
optionsResults: null,
},
{
title: 'transportMode custom server class',
multiCompiler: false,
options: {
transportMode: {
server: class CustomServerImplementation {},
},
},
optionsResults: null,
},
{
title: 'transportMode custom client path',
multiCompiler: false,
options: {
transportMode: {
client: '/path/to/custom/client/',
},
},
optionsResults: null,
},
];

cases.forEach((data) => {
Expand Down

0 comments on commit c648678

Please sign in to comment.