@leansdk/leanrc
Version:
LeanRC is a MVC framework for creating graceful applications
164 lines (161 loc) • 5.77 kB
text/coffeescript
EventEmitter = require 'events'
{ expect, assert } = require 'chai'
sinon = require 'sinon'
_ = require 'lodash'
LeanRC = require.main.require 'lib'
{ co } = LeanRC::Utils
describe 'DelayableMixin', ->
describe '#_delayJob', ->
facade = null
afterEach ->
facade?.remove?()
it 'should put job into delayed queue', ->
co ->
KEY = 'TEST_DELAYABLE_MIXIN_001'
facade = LeanRC::Facade.getInstance KEY
class Test extends LeanRC
"#{__dirname}/config/root"
class TestClass extends LeanRC::CoreObject
Test
test: Function,
default: -> return
class TestResque extends LeanRC::Resque
LeanRC::MemoryResqueMixin
Test
class TestTest extends LeanRC::CoreObject
LeanRC::DelayableMixin
Test
facade.registerProxy TestResque.new LeanRC::RESQUE
resque = facade.retrieveProxy LeanRC::RESQUE
yield resque.create LeanRC::DELAYED_JOBS_QUEUE, 4
delayJobSymbol = TestTest.classMethods['_delayJob']?.pointer
assert.isTrue delayJobSymbol?
DELAY_UNTIL = Date.now()
options =
queue: LeanRC::DELAYED_JOBS_QUEUE
delayUntil: DELAY_UNTIL
DATA =
moduleName: 'Test'
replica: yield TestClass.constructor.replicateObject TestClass
methodName: 'test'
args: [ 'ARG_1', 'ARG_2', 'ARG_3' ]
opts: options
yield TestTest[delayJobSymbol] facade, DATA, options
rawQueue = resque[Symbol.for '~jobs']['Test|>delayed_jobs']
[ scriptData ] = rawQueue
assert.deepEqual scriptData,
queueName: 'Test|>delayed_jobs'
data: scriptName: 'DelayedJobScript', data: DATA
delayUntil: DELAY_UNTIL
status: 'scheduled'
lockLifetime: 5000
lockLimit: 2
yield return
describe '.delay', ->
facade = null
afterEach ->
facade?.remove?()
it 'should get delayed function wrapper', ->
co ->
KEY = 'TEST_DELAYABLE_MIXIN_002'
facade = LeanRC::Facade.getInstance KEY
class Test extends LeanRC
"#{__dirname}/config/root"
class TestResque extends LeanRC::Resque
LeanRC::MemoryResqueMixin
Test
class TestTest extends LeanRC::CoreObject
LeanRC::DelayableMixin
Test
test: Function, { default: -> }
facade.registerProxy TestResque.new LeanRC::RESQUE
resque = facade.retrieveProxy LeanRC::RESQUE
yield resque.create LeanRC::DELAYED_JOBS_QUEUE, 4
DELAY_UNTIL = Date.now()
yield TestTest.delay facade,
queue: LeanRC::DELAYED_JOBS_QUEUE
delayUntil: DELAY_UNTIL
.test 'ARG_1', 'ARG_2', 'ARG_3'
rawQueue = resque[Symbol.for '~jobs']['Test|>delayed_jobs']
[ scriptData ] = rawQueue
assert.deepEqual scriptData,
queueName: 'Test|>delayed_jobs'
data:
scriptName: 'DelayedJobScript'
data:
moduleName: 'Test'
replica: {class: 'TestTest', type: 'class'}
methodName: 'test'
args: [ 'ARG_1', 'ARG_2', 'ARG_3' ]
opts:
queue: LeanRC::DELAYED_JOBS_QUEUE
delayUntil: DELAY_UNTIL
delayUntil: DELAY_UNTIL
status: 'scheduled'
lockLifetime: 5000
lockLimit: 2
yield return
describe '#delay', ->
facade = null
afterEach ->
facade?.remove?()
it 'should get delayed function wrapper', ->
co ->
KEY = 'TEST_DELAYABLE_MIXIN_003'
facade = LeanRC::Facade.getInstance KEY
class Test extends LeanRC
"#{__dirname}/config/root"
class TestResque extends LeanRC::Resque
LeanRC::MemoryResqueMixin
Test
class TestTest extends LeanRC::CoreObject
LeanRC::DelayableMixin
Test
test: Function, { default: -> }
facade.registerProxy TestResque.new LeanRC::RESQUE
resque = facade.retrieveProxy LeanRC::RESQUE
yield resque.create LeanRC::DELAYED_JOBS_QUEUE, 4
DELAY_UNTIL = Date.now()
yield TestTest.new().delay facade,
queue: LeanRC::DELAYED_JOBS_QUEUE
delayUntil: DELAY_UNTIL
.test 'ARG_1', 'ARG_2', 'ARG_3'
rawQueue = resque[Symbol.for '~jobs']['Test|>delayed_jobs']
[ scriptData ] = rawQueue
assert.deepEqual scriptData,
queueName: 'Test|>delayed_jobs'
data:
scriptName: 'DelayedJobScript'
data:
moduleName: 'Test'
replica: {class: 'TestTest', type: 'instance'}
methodName: 'test'
args: [ 'ARG_1', 'ARG_2', 'ARG_3' ]
opts:
queue: LeanRC::DELAYED_JOBS_QUEUE
delayUntil: DELAY_UNTIL
delayUntil: DELAY_UNTIL
status: 'scheduled'
lockLifetime: 5000
lockLimit: 2
yield return