UNPKG

4.87 kBJavaScriptView Raw
1const Assembly = require('./Assembly')
2
3describe('Transloadit/Assembly', () => {
4 describe('status diffing', () => {
5 function attemptDiff (prev, next) {
6 const assembly = new Assembly(prev)
7 const events = []
8 assembly.emit = jest.fn((name, ...args) => {
9 events.push([name, ...args])
10 })
11
12 assembly.updateStatus(next)
13
14 return events
15 }
16
17 it('ASSEMBLY_UPLOADING → ASSEMBLY_EXECUTING', () => {
18 const result = attemptDiff({
19 ok: 'ASSEMBLY_UPLOADING',
20 uploads: {},
21 results: {}
22 }, {
23 ok: 'ASSEMBLY_EXECUTING',
24 uploads: {},
25 results: {}
26 })
27
28 expect(result[0]).toEqual(['executing'])
29 })
30
31 it('ASSEMBLY_EXECUTING → ASSEMBLY_COMPLETED', () => {
32 const result = attemptDiff({
33 ok: 'ASSEMBLY_EXECUTING',
34 uploads: {},
35 results: {}
36 }, {
37 ok: 'ASSEMBLY_COMPLETED',
38 uploads: {},
39 results: {}
40 })
41
42 expect(result[0]).toEqual(['finished'])
43 })
44
45 it('ASSEMBLY_UPLOADING → ASSEMBLY_COMPLETED', () => {
46 const result = attemptDiff({
47 ok: 'ASSEMBLY_UPLOADING',
48 uploads: {},
49 results: {}
50 }, {
51 ok: 'ASSEMBLY_COMPLETED',
52 uploads: {},
53 results: {}
54 })
55
56 expect(result[0]).toEqual(['executing'])
57 expect(result[1]).toEqual(['metadata'])
58 expect(result[2]).toEqual(['finished'])
59 })
60
61 it('emits events for new files', () => {
62 const result = attemptDiff({
63 ok: 'ASSEMBLY_UPLOADING',
64 uploads: {},
65 results: {}
66 }, {
67 ok: 'ASSEMBLY_UPLOADING',
68 uploads: {
69 some_id: { id: 'some_id' }
70 },
71 results: {}
72 })
73
74 expect(result[0]).toEqual(['upload', { id: 'some_id' }])
75 })
76
77 it('emits executing, then upload, on new files + status change', () => {
78 const result = attemptDiff({
79 ok: 'ASSEMBLY_UPLOADING',
80 uploads: {},
81 results: {}
82 }, {
83 ok: 'ASSEMBLY_EXECUTING',
84 uploads: {
85 some_id: { id: 'some_id' }
86 },
87 results: {}
88 })
89
90 expect(result[0]).toEqual(['executing'])
91 expect(result[1]).toEqual(['upload', { id: 'some_id' }])
92 expect(result[2]).toEqual(['metadata'])
93 })
94
95 it('emits new results', () => {
96 const one = {
97 ok: 'ASSEMBLY_EXECUTING',
98 uploads: {
99 cool_video: { id: 'cool_video' }
100 },
101 results: {}
102 }
103 const two = {
104 ok: 'ASSEMBLY_EXECUTING',
105 uploads: {
106 cool_video: { id: 'cool_video' }
107 },
108 results: {
109 step_one: [
110 { id: 'thumb1' },
111 { id: 'thumb2' },
112 { id: 'thumb3' }
113 ]
114 }
115 }
116 const three = {
117 ok: 'ASSEMBLY_EXECUTING',
118 uploads: {
119 cool_video: { id: 'cool_video' }
120 },
121 results: {
122 step_one: [
123 { id: 'thumb1' },
124 { id: 'thumb2' },
125 { id: 'thumb3' },
126 { id: 'thumb4' }
127 ],
128 step_two: [
129 { id: 'transcript' }
130 ]
131 }
132 }
133
134 const resultOne = attemptDiff(one, two)
135 const resultTwo = attemptDiff(two, three)
136
137 expect(resultOne[0]).toEqual(['result', 'step_one', { id: 'thumb1' }])
138 expect(resultOne[1]).toEqual(['result', 'step_one', { id: 'thumb2' }])
139 expect(resultOne[2]).toEqual(['result', 'step_one', { id: 'thumb3' }])
140
141 expect(resultTwo[0]).toEqual(['result', 'step_one', { id: 'thumb4' }])
142 expect(resultTwo[1]).toEqual(['result', 'step_two', { id: 'transcript' }])
143 })
144
145 it('emits correctly jumping straight from uploading to finished', () => {
146 const start = {
147 ok: 'ASSEMBLY_UPLOADING',
148 uploads: {},
149 results: {}
150 }
151 const end = {
152 ok: 'ASSEMBLY_COMPLETED',
153 uploads: {
154 cool_video: { id: 'cool_video' }
155 },
156 results: {
157 step_one: [
158 { id: 'thumb1' },
159 { id: 'thumb2' },
160 { id: 'thumb3' },
161 { id: 'thumb4' }
162 ],
163 step_two: [
164 { id: 'transcript' }
165 ]
166 }
167 }
168
169 const result = attemptDiff(start, end)
170
171 expect(result[0]).toEqual(['executing'])
172 expect(result[1]).toEqual(['upload', { id: 'cool_video' }])
173 expect(result[2]).toEqual(['metadata'])
174 expect(result[3]).toEqual(['result', 'step_one', { id: 'thumb1' }])
175 expect(result[4]).toEqual(['result', 'step_one', { id: 'thumb2' }])
176 expect(result[5]).toEqual(['result', 'step_one', { id: 'thumb3' }])
177 expect(result[6]).toEqual(['result', 'step_one', { id: 'thumb4' }])
178 expect(result[7]).toEqual(['result', 'step_two', { id: 'transcript' }])
179 expect(result[8]).toEqual(['finished'])
180 })
181 })
182})