Skip to content

Commit 1494267

Browse files
improved test coverage
1 parent 5d7a7e5 commit 1494267

File tree

7 files changed

+293
-1
lines changed

7 files changed

+293
-1
lines changed

test/unit/asset-test.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,67 @@ describe('Contentstack Asset test', () => {
315315
})
316316
.catch(done)
317317
})
318+
319+
320+
it('Asset download test', done => {
321+
var mock = new MockAdapter(Axios)
322+
const downloadResponse = new Blob(['file content'], { type: 'text/plain' })
323+
324+
mock.onGet('/assets/download_url').reply(200, downloadResponse)
325+
326+
makeAsset({
327+
asset: {
328+
...systemUidMock
329+
},
330+
stackHeaders: stackHeadersMock
331+
})
332+
.download({ url: '/assets/download_url', responseType: 'blob' })
333+
.then((response) => {
334+
expect(response.data).to.be.instanceOf(Blob)
335+
expect(response.data.type).to.be.equal('text/plain')
336+
done()
337+
})
338+
.catch(done)
339+
})
340+
341+
it('Asset download test without url', done => {
342+
var mock = new MockAdapter(Axios)
343+
const downloadResponse = new Blob(['file content'], { type: 'text/plain' })
344+
345+
mock.onGet(`/assets/${systemUidMock.uid}`).reply(200, downloadResponse)
346+
347+
makeAsset({
348+
asset: {
349+
...systemUidMock
350+
},
351+
stackHeaders: stackHeadersMock
352+
})
353+
.download({ responseType: 'blob' })
354+
.then((response) => {
355+
console.log("🚀 ~ .then ~ response:", response)
356+
expect(response.data).to.be.instanceOf(Blob)
357+
expect(response.data.type).to.be.equal('text/plain')
358+
done()
359+
})
360+
.catch((err) => {
361+
expect(err.message).to.be.equal('Asset URL can not be empty')
362+
done()
363+
})
364+
})
365+
366+
it('Asset download test with missing url', done => {
367+
makeAsset({
368+
asset: {
369+
...systemUidMock
370+
},
371+
stackHeaders: stackHeadersMock
372+
})
373+
.download({ responseType: 'blob' })
374+
.catch((err) => {
375+
expect(err.message).to.be.equal('Asset URL can not be empty')
376+
done()
377+
})
378+
})
318379
})
319380

320381
function makeAsset (data) {

test/unit/contentType-test.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,34 @@ describe('Contentstack ContentType test', () => {
280280
done()
281281
})
282282
})
283+
it('should fetch references of a ContentType', done => {
284+
var mock = new MockAdapter(Axios)
285+
const referencesResponse = {
286+
references: [
287+
{
288+
uid: 'entry_uid',
289+
title: 'Entry Title',
290+
content_type: 'UID'
291+
}
292+
]
293+
}
294+
mock.onGet(`/content_types/UID/references`).reply(200, referencesResponse)
295+
makeContentType({
296+
content_type: {
297+
...systemUidMock
298+
},
299+
stackHeaders: stackHeadersMock
300+
})
301+
.references()
302+
.then((response) => {
303+
expect(response.references).to.be.an('array')
304+
expect(response.references[0].uid).to.be.equal('entry_uid')
305+
expect(response.references[0].title).to.be.equal('Entry Title')
306+
expect(response.references[0].content_type).to.be.equal('UID')
307+
done()
308+
})
309+
.catch(done)
310+
})
283311
})
284312

285313
function makeContentType (data) {

test/unit/entry-test.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,37 @@ describe('Contentstack Entry test', () => {
640640
})
641641
.catch(done)
642642
})
643+
644+
it('should fetch variants of an Entry', done => {
645+
var mock = new MockAdapter(Axios)
646+
const variantsResponse = {
647+
variants: [
648+
{
649+
uid: 'variant_uid',
650+
title: 'Variant Title',
651+
content_type: 'content_type_uid'
652+
}
653+
]
654+
}
655+
656+
mock.onGet(`/content_types/content_type_uid/entries/UID/variants/variantUid`).reply(200, variantsResponse)
657+
658+
makeEntry({
659+
entry: {
660+
...systemUidMock
661+
}
662+
})
663+
.variants('variantUid')
664+
.fetch()
665+
.then((response) => {
666+
expect(response.variants).to.be.an('array')
667+
expect(response.variants[0].uid).to.be.equal('variant_uid')
668+
expect(response.variants[0].title).to.be.equal('Variant Title')
669+
expect(response.variants[0].content_type).to.be.equal('content_type_uid')
670+
done()
671+
})
672+
.catch(done)
673+
})
643674
})
644675

645676
function makeEntry (data) {

test/unit/globalField-test.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,39 @@ describe("Contentstack GlobalField test (API Version 3.2)", () => {
438438
})
439439
.catch(done);
440440
});
441+
442+
it("should update nested global field", (done) => {
443+
var mock = new MockAdapter(Axios);
444+
const updatedData = {
445+
global_field: {
446+
title: "Updated Nested Global Field Title",
447+
schema: nestedGlobalFieldPayload,
448+
},
449+
};
450+
451+
mock
452+
.onPut(`/global_fields/${systemUidMock.uid}`)
453+
.reply(200, {
454+
global_field: {
455+
...nestedGlobalFieldMock,
456+
...updatedData.global_field,
457+
},
458+
});
459+
460+
makeGlobalField({
461+
global_field: {
462+
...systemUidMock,
463+
},
464+
stackHeaders: stackHeadersMock,
465+
})
466+
.updateNestedGlobalField(updatedData)
467+
.then((response) => {
468+
expect(response.global_field.title).to.be.equal("Updated Nested Global Field Title");
469+
expect(response.global_field.schema).to.deep.equal(nestedGlobalFieldPayload);
470+
done();
471+
})
472+
.catch(done);
473+
});
441474
});
442475

443476
function makeGlobalField (data) {

test/unit/stack-test.js

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { describe, it } from 'mocha'
22
import { Stack, StackCollection } from '../../lib/stack/index'
33
import Axios from 'axios'
44
import { expect } from 'chai'
5-
import { stackMock, noticeMock, systemUidMock } from './mock/objects'
5+
import { stackMock, noticeMock, systemUidMock, stackHeadersMock } from './mock/objects'
66
import MockAdapter from 'axios-mock-adapter'
77

88
describe('Contentstack Stack test', () => {
@@ -998,6 +998,93 @@ describe('Contentstack Stack test', () => {
998998
})
999999
.catch(done)
10001000
})
1001+
1002+
it('Global fields initialization without uid', done => {
1003+
const global_field = makeStack({
1004+
stack: {
1005+
api_key: 'stack_api_key'
1006+
}
1007+
})
1008+
.globalField()
1009+
expect(global_field.uid).to.be.equal(undefined)
1010+
expect(global_field.stackHeaders).to.not.equal(undefined)
1011+
expect(global_field.stackHeaders.api_key).to.be.equal('stack_api_key')
1012+
done()
1013+
})
1014+
1015+
it('Management token initialization without uid', done => {
1016+
const management_token = makeStack({
1017+
stack: {
1018+
api_key: 'stack_api_key'
1019+
}
1020+
})
1021+
.managementToken()
1022+
expect(management_token.uid).to.be.equal(undefined)
1023+
expect(management_token.stackHeaders).to.not.equal(undefined)
1024+
expect(management_token.stackHeaders.api_key).to.be.equal('stack_api_key')
1025+
done()
1026+
})
1027+
1028+
it('Global fields initialization uid', done => {
1029+
const global_field = makeStack({
1030+
stack: {
1031+
api_key: 'stack_api_key'
1032+
}
1033+
})
1034+
.globalField(systemUidMock.uid)
1035+
expect(global_field.uid).to.be.equal(systemUidMock.uid)
1036+
expect(global_field.stackHeaders.api_key).to.be.equal('stack_api_key')
1037+
done()
1038+
})
1039+
1040+
it('Management token initialization uid', done => {
1041+
const management_token = makeStack({
1042+
stack: {
1043+
api_key: 'stack_api_key'
1044+
}
1045+
})
1046+
.managementToken(systemUidMock.uid)
1047+
expect(management_token.uid).to.be.equal(systemUidMock.uid)
1048+
expect(management_token.stackHeaders.api_key).to.be.equal('stack_api_key')
1049+
done()
1050+
})
1051+
1052+
it('should update users roles', done => {
1053+
var mock = new MockAdapter(Axios)
1054+
const usersRolesData = {
1055+
user_uid: ['role_uid_1', 'role_uid_2']
1056+
}
1057+
1058+
mock.onPost('/stacks/users/roles').reply(200, {
1059+
notice: 'Roles updated successfully'
1060+
})
1061+
1062+
makeStack({
1063+
stack: {
1064+
api_key: 'stack_api_key'
1065+
}
1066+
})
1067+
.updateUsersRoles(usersRolesData)
1068+
.then((response) => {
1069+
expect(response.notice).to.be.equal('Roles updated successfully')
1070+
done()
1071+
})
1072+
.catch(done)
1073+
})
1074+
1075+
it('should fetch variants of a stack', done => {
1076+
var mock = new MockAdapter(Axios)
1077+
const variantsResponse = makeStack({
1078+
stack: {
1079+
api_key: 'stack_api_key'
1080+
}
1081+
})
1082+
.variants()
1083+
expect(variantsResponse.create).to.be.not.equal(undefined)
1084+
expect(variantsResponse.query).to.be.not.equal(undefined)
1085+
expect(variantsResponse.fetchByUIDs).to.be.not.equal(undefined)
1086+
done()
1087+
})
10011088
})
10021089

10031090
function makeStack (data) {

test/unit/variantGroup-test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,18 @@ describe('Contentstack VariantGroup test', () => {
152152
})
153153
.catch(done)
154154
})
155+
156+
it('should fetch variants of a VariantGroup', done => {
157+
const variants = makeVariantGroup({
158+
variant_group: {
159+
...systemUidMock
160+
},
161+
stackHeaders: stackHeadersMock
162+
})
163+
.variants()
164+
expect(variants.variant_group_uid).to.be.equal(systemUidMock.uid)
165+
done()
166+
})
155167
})
156168

157169
function makeVariantGroup (data = {}) {

test/unit/variants-entry-test.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,46 @@ describe("Contentstack Variants entry test", () => {
199199
})
200200
.catch(done);
201201
});
202+
203+
it("Variants update test", (done) => {
204+
var mock = new MockAdapter(Axios);
205+
const updatedData = {
206+
entry: {
207+
title: "Updated Variant Title",
208+
url: "/updated-variant-url",
209+
},
210+
};
211+
const variantEntryMock = {
212+
uid: 'variant_uid',
213+
title: 'Variant Title',
214+
content_type: 'content_type_uid',
215+
locale: 'en-us',
216+
_version: 1,
217+
_in_progress: false
218+
}
219+
220+
mock
221+
.onPut(`/content_types/content_type_uid/entries/entry_uid/variants/variant_uid`)
222+
.reply(200, {
223+
entry: {
224+
...variantEntryMock,
225+
...updatedData.entry,
226+
},
227+
});
228+
229+
makeEntryVariants({
230+
content_type_uid: "content_type_uid",
231+
entry_uid: "entry_uid",
232+
variants_uid: "variant_uid",
233+
})
234+
.update(updatedData)
235+
.then((response) => {
236+
expect(response.entry.title).to.be.equal("Updated Variant Title");
237+
expect(response.entry.url).to.be.equal("/updated-variant-url");
238+
done();
239+
})
240+
.catch(done);
241+
});
202242
});
203243

204244
function makeEntryVariants(data) {

0 commit comments

Comments
 (0)