UNPKG

2.4 kBtext/coffeescriptView Raw
1{beforeEach, describe, it} = global
2{expect} = require 'chai'
3path = require 'path'
4
5MessageHandler = require '../src/message-handler'
6
7describe.only 'MessageHandler', ->
8 describe 'with an instance', ->
9 beforeEach ->
10 @sut = new MessageHandler
11 jobsPath: path.join(__dirname, './fixtures/jobs')
12
13 describe 'when called with a valid message for a valid job', ->
14 beforeEach (done) ->
15 message = {
16 metadata:
17 jobType: 'SayHello'
18 data:
19 uuid: 'some-uuid'
20 }
21 @sut.onMessage message, (error, @response) => done error
22
23 it 'should yield a 204', ->
24 expect(@response).to.deep.equal {
25 metadata:
26 code: 204
27 status: 'No Content'
28 }
29
30 describe 'when called with a message that omits a required property', ->
31 beforeEach (done) ->
32 message = {
33 metadata:
34 jobType: 'SayHello'
35 data:
36 name: 'I have no UUID'
37 }
38 @sut.onMessage message, (error, @response) => done error
39
40 it 'should yield a 422', ->
41 expect(@response).to.deep.equal {
42 metadata:
43 code: 422
44 status: 'Unprocessable Entity'
45 data:
46 errors: ['message.data requires property "uuid"']
47 }
48
49 describe 'when called with a message that has an invalid format for a property', ->
50 beforeEach (done) ->
51 message = {
52 metadata:
53 jobType: 'SayHello'
54 data:
55 uuid: 'u-u-eye-d'
56 name: 'I have a malformed startTime'
57 startTime: 'Hi Mom!'
58 }
59 @sut.onMessage message, (error, @response) => done error
60
61 it 'should yield a 422', ->
62 expect(@response).to.deep.equal {
63 metadata:
64 code: 422
65 status: 'Unprocessable Entity'
66 data:
67 errors: ['message.data.startTime does not conform to the \"date-time\" format']
68 }
69
70 describe 'when called with a valid message for an dis-extant job', ->
71 beforeEach (done) ->
72 message = {
73 metadata:
74 jobType: 'DisExtant'
75 }
76 @sut.onMessage message, (error, @response) => done error
77
78 it 'should yield a 404', ->
79 expect(@response).to.deep.equal {
80 metadata:
81 code: 404
82 status: 'Not Found'
83 }