Skip to content

Commit

Permalink
Add tests for backwards compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
juanjoDiaz committed Jan 30, 2019
1 parent 5d07640 commit 0fa58dc
Show file tree
Hide file tree
Showing 2 changed files with 368 additions and 0 deletions.
199 changes: 199 additions & 0 deletions test/constructor.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -858,4 +858,203 @@ describe('Serverless warmup plugin constructor', () => {
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})

describe('Backwards compatibility', () => {
it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: true
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()

const plugin = new WarmUP(serverless, options)

const expectedOptions = {
stage: 'dev',
region: 'us-east-1'
}
const expectedWarmupOpts = {
folderName: '_warmup',
cleanFolder: true,
name: 'warmup-test-dev-warmup-plugin',
pathFile: 'testPath/_warmup/index.js',
pathFolder: 'testPath/_warmup',
pathHandler: '_warmup/index.warmUp',
role: undefined,
tags: undefined,
events: [{ schedule: 'rate(5 minutes)' }],
memorySize: 128,
timeout: 10,
prewarm: false,
enabled: true,
source: '{"source":"serverless-plugin-warmup"}',
concurrency: 1
}
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})

it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: 'dev'
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()

const plugin = new WarmUP(serverless, options)

const expectedOptions = {
stage: 'dev',
region: 'us-east-1'
}
const expectedWarmupOpts = {
folderName: '_warmup',
cleanFolder: true,
name: 'warmup-test-dev-warmup-plugin',
pathFile: 'testPath/_warmup/index.js',
pathFolder: 'testPath/_warmup',
pathHandler: '_warmup/index.warmUp',
role: undefined,
tags: undefined,
events: [{ schedule: 'rate(5 minutes)' }],
memorySize: 128,
timeout: 10,
prewarm: false,
enabled: 'dev',
source: '{"source":"serverless-plugin-warmup"}',
concurrency: 1
}
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})

it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: ['dev', 'staging']
}
}
}
})
const options = getOptions()

const plugin = new WarmUP(serverless, options)

const expectedOptions = {
stage: 'dev',
region: 'us-east-1'
}
const expectedWarmupOpts = {
folderName: '_warmup',
cleanFolder: true,
name: 'warmup-test-dev-warmup-plugin',
pathFile: 'testPath/_warmup/index.js',
pathFolder: 'testPath/_warmup',
pathHandler: '_warmup/index.warmUp',
role: undefined,
tags: undefined,
events: [{ schedule: 'rate(5 minutes)' }],
memorySize: 128,
timeout: 10,
prewarm: false,
enabled: ['dev', 'staging'],
source: '{"source":"serverless-plugin-warmup"}',
concurrency: 1
}
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})

it('Should accept backwards compatible "schedule" property as string in place of "events"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
schedule: 'rate(10 minutes)'
}
}
}
})
const options = getOptions()

const plugin = new WarmUP(serverless, options)

const expectedOptions = {
stage: 'dev',
region: 'us-east-1'
}
const expectedWarmupOpts = {
folderName: '_warmup',
cleanFolder: true,
name: 'warmup-test-dev-warmup-plugin',
pathFile: 'testPath/_warmup/index.js',
pathFolder: 'testPath/_warmup',
pathHandler: '_warmup/index.warmUp',
role: undefined,
tags: undefined,
events: [{ schedule: 'rate(10 minutes)' }],
memorySize: 128,
timeout: 10,
prewarm: false,
enabled: false,
source: '{"source":"serverless-plugin-warmup"}',
concurrency: 1
}
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})

it('Should accept backwards compatible "schedule" property as array in place of "events"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
schedule: ['rate(10 minutes)', 'rate(30 minutes)']
}
}
}
})
const options = getOptions()

const plugin = new WarmUP(serverless, options)

const expectedOptions = {
stage: 'dev',
region: 'us-east-1'
}
const expectedWarmupOpts = {
folderName: '_warmup',
cleanFolder: true,
name: 'warmup-test-dev-warmup-plugin',
pathFile: 'testPath/_warmup/index.js',
pathFolder: 'testPath/_warmup',
pathHandler: '_warmup/index.warmUp',
role: undefined,
tags: undefined,
events: [{ schedule: 'rate(10 minutes)' }, { schedule: 'rate(30 minutes)' }],
memorySize: 128,
timeout: 10,
prewarm: false,
enabled: false,
source: '{"source":"serverless-plugin-warmup"}',
concurrency: 1
}
expect(plugin.options).toMatchObject(expectedOptions)
expect(plugin.warmupOpts).toMatchObject(expectedWarmupOpts)
})
})
})
169 changes: 169 additions & 0 deletions test/hook.afterPackageInitialize.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -498,4 +498,173 @@ describe('Serverless warmup plugin constructor', () => {
timeout: 30
})
})

describe('Backwards compatibility', () => {
it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: true
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()
const plugin = new WarmUP(serverless, options)

await plugin.hooks['after:package:initialize']()

expect(plugin.serverless.service.functions.warmUpPlugin)
.toMatchObject({
description: 'Serverless WarmUP Plugin',
events: [{ schedule: 'rate(5 minutes)' }],
handler: '_warmup/index.warmUp',
memorySize: 128,
name: 'warmup-test-dev-warmup-plugin',
runtime: 'nodejs8.10',
package: {
individually: true,
exclude: ['**'],
include: ['_warmup/**']
},
timeout: 10
})
})

it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: 'dev'
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()
const plugin = new WarmUP(serverless, options)

await plugin.hooks['after:package:initialize']()

expect(plugin.serverless.service.functions.warmUpPlugin)
.toMatchObject({
description: 'Serverless WarmUP Plugin',
events: [{ schedule: 'rate(5 minutes)' }],
handler: '_warmup/index.warmUp',
memorySize: 128,
name: 'warmup-test-dev-warmup-plugin',
runtime: 'nodejs8.10',
package: {
individually: true,
exclude: ['**'],
include: ['_warmup/**']
},
timeout: 10
})
})

it('Should accept backwards compatible "default" as boolean property in place of "enabled"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
default: ['dev', 'staging']
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()
const plugin = new WarmUP(serverless, options)

await plugin.hooks['after:package:initialize']()

expect(plugin.serverless.service.functions.warmUpPlugin)
.toMatchObject({
description: 'Serverless WarmUP Plugin',
events: [{ schedule: 'rate(5 minutes)' }],
handler: '_warmup/index.warmUp',
memorySize: 128,
name: 'warmup-test-dev-warmup-plugin',
runtime: 'nodejs8.10',
package: {
individually: true,
exclude: ['**'],
include: ['_warmup/**']
},
timeout: 10
})
})

it('Should accept backwards compatible "schedule" property as string in place of "events"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
enabled: true,
schedule: 'rate(10 minutes)'
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()
const plugin = new WarmUP(serverless, options)

await plugin.hooks['after:package:initialize']()

expect(plugin.serverless.service.functions.warmUpPlugin)
.toMatchObject({
description: 'Serverless WarmUP Plugin',
events: [{ schedule: 'rate(10 minutes)' }],
handler: '_warmup/index.warmUp',
memorySize: 128,
name: 'warmup-test-dev-warmup-plugin',
runtime: 'nodejs8.10',
package: {
individually: true,
exclude: ['**'],
include: ['_warmup/**']
},
timeout: 10
})
})

it('Should accept backwards compatible "schedule" property as array in place of "events"', async () => {
const serverless = getServerlessConfig({
service: {
custom: {
warmup: {
enabled: true,
schedule: ['rate(10 minutes)', 'rate(30 minutes)']
}
},
functions: { someFunc1: { name: 'someFunc1' }, someFunc2: { name: 'someFunc2' } }
}
})
const options = getOptions()
const plugin = new WarmUP(serverless, options)

await plugin.hooks['after:package:initialize']()

expect(plugin.serverless.service.functions.warmUpPlugin)
.toMatchObject({
description: 'Serverless WarmUP Plugin',
events: [{ schedule: 'rate(10 minutes)' }, { schedule: 'rate(30 minutes)' }],
handler: '_warmup/index.warmUp',
memorySize: 128,
name: 'warmup-test-dev-warmup-plugin',
runtime: 'nodejs8.10',
package: {
individually: true,
exclude: ['**'],
include: ['_warmup/**']
},
timeout: 10
})
})
})
})

0 comments on commit 0fa58dc

Please sign in to comment.