1 | {beforeEach, describe, it} = global
|
2 | {expect} = require 'chai'
|
3 | path = require 'path'
|
4 |
|
5 | MessageHandler = require '../src/message-handler'
|
6 |
|
7 | describe.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 | }
|