Skip to content

Commit d063441

Browse files
test: ✅ unit test cases for terms implementation (except search and move)
1 parent 319a809 commit d063441

File tree

4 files changed

+217
-11
lines changed

4 files changed

+217
-11
lines changed

lib/stack/taxonomy/terms/index.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
fetch,
55
update,
66
query,
7-
deleteEntity
7+
deleteEntity,
8+
parseData
89
} from '../../../entity'
910

1011
export function Terms (http, data) {
@@ -126,16 +127,6 @@ export function Terms (http, data) {
126127
this.query = query({ http: http, wrapperCollection: TermsCollection })
127128
}
128129
}
129-
export function parseData (response, stackHeaders, taxonomy_uid) {
130-
const data = response.data || {}
131-
if (stackHeaders) {
132-
data.stackHeaders = stackHeaders
133-
}
134-
if (taxonomy_uid) {
135-
data.taxonomy_uid = taxonomy_uid
136-
}
137-
return data
138-
}
139130
export function TermsCollection (http, data) {
140131
const obj = cloneDeep(data.terms) || []
141132
const termsCollection = obj.map((term) => {

test/unit/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@ require('./app-request-test')
3434
require('./authorization-test')
3535
require('./auditLog-test')
3636
require('./taxonomy-test')
37+
require('./terms-test')

test/unit/mock/objects.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,47 @@ const taxonomyMock = {
733733
referenced_terms_count: 3,
734734
referenced_entries_count: 6
735735
}
736+
const termsMock = {
737+
taxonomy_uid: 'taxonomy_uid',
738+
uid: 'UID',
739+
name: 'name',
740+
parent_uid: 'term_2',
741+
depth: 2,
742+
children_count: 2,
743+
referenced_entries_count: 2,
744+
ancestors: [{
745+
uid: 'term_1',
746+
name: 'Term 1',
747+
parent_uid: null,
748+
depth: 1,
749+
children_count: 3,
750+
referenced_entries_count: 3
751+
},
752+
{
753+
uid: 'term_2',
754+
name: 'Term 2',
755+
parent_uid: 'term_1',
756+
depth: 2,
757+
children_count: 2,
758+
referenced_entries_count: 2
759+
}],
760+
descendants: [{
761+
uid: 'term_4',
762+
name: 'Term 4',
763+
parent_uid: 'term_3',
764+
depth: 3,
765+
children_count: 1,
766+
referenced_entries_count: 2
767+
},
768+
{
769+
uid: 'term_5',
770+
name: 'Term 5',
771+
parent_uid: 'term_4',
772+
depth: 4,
773+
children_count: 0,
774+
referenced_entries_count: 4
775+
}]
776+
}
736777

737778
function mockCollection (mockData, type) {
738779
const mock = {
@@ -803,6 +844,7 @@ export {
803844
auditLogsMock,
804845
auditLogItemMock,
805846
taxonomyMock,
847+
termsMock,
806848
mockCollection,
807849
entryMockCollection,
808850
checkSystemFields

test/unit/terms-test.js

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
import Axios from 'axios'
2+
import { expect } from 'chai'
3+
import { describe, it } from 'mocha'
4+
import MockAdapter from 'axios-mock-adapter'
5+
import { Terms } from '../../lib/stack/taxonomy/terms'
6+
import { systemUidMock, stackHeadersMock, termsMock, noticeMock } from './mock/objects'
7+
8+
describe('Contentstack Term test', () => {
9+
it('term create test', done => {
10+
var mock = new MockAdapter(Axios)
11+
mock.onPost(`/taxonomies/taxonomy_uid/terms`).reply(200, {
12+
term: {
13+
...termsMock
14+
}
15+
})
16+
makeTerms()
17+
.create()
18+
.then((term) => {
19+
checkTerms(term)
20+
done()
21+
})
22+
.catch(done)
23+
})
24+
it('Term fetch test', done => {
25+
var mock = new MockAdapter(Axios)
26+
mock.onGet(`/taxonomies/taxonomy_uid/terms/UID`).reply(200, {
27+
term: {
28+
...termsMock
29+
}
30+
})
31+
makeTerms({
32+
term: {
33+
...systemUidMock
34+
},
35+
stackHeaders: stackHeadersMock
36+
})
37+
.fetch()
38+
.then((term) => {
39+
checkTerms(term)
40+
done()
41+
})
42+
.catch(done)
43+
})
44+
it('Terms query test', done => {
45+
var mock = new MockAdapter(Axios)
46+
mock.onGet(`/taxonomies/taxonomy_uid/terms`).reply(200, {
47+
terms: [
48+
termsMock
49+
]
50+
})
51+
makeTerms()
52+
.query()
53+
.find()
54+
.then((terms) => {
55+
checkTerms(terms.items[0])
56+
done()
57+
})
58+
.catch(done)
59+
})
60+
it('Term update test', done => {
61+
var mock = new MockAdapter(Axios)
62+
mock.onPut(`/taxonomies/taxonomy_uid/terms/UID`).reply(200, {
63+
term: {
64+
...termsMock
65+
}
66+
})
67+
makeTerms({
68+
term: {
69+
...systemUidMock
70+
},
71+
stackHeaders: stackHeadersMock
72+
})
73+
.update()
74+
.then((term) => {
75+
checkTerms(term)
76+
done()
77+
})
78+
.catch(done)
79+
})
80+
it('term delete test', done => {
81+
var mock = new MockAdapter(Axios)
82+
mock.onDelete(`/taxonomies/taxonomy_uid/terms/UID`).reply(200, {
83+
...noticeMock
84+
})
85+
makeTerms({
86+
term: {
87+
...systemUidMock
88+
},
89+
stackHeaders: stackHeadersMock
90+
})
91+
.delete()
92+
.then((term) => {
93+
expect(term.notice).to.be.equal(noticeMock.notice)
94+
done()
95+
})
96+
.catch(done)
97+
})
98+
it('Term ancestors test', done => {
99+
var mock = new MockAdapter(Axios)
100+
mock.onGet(`/taxonomies/taxonomy_uid/terms/UID/ancestors`).reply(200, { ...termsMock })
101+
makeTerms({
102+
term: {
103+
...systemUidMock
104+
},
105+
stackHeaders: stackHeadersMock
106+
})
107+
.ancestors()
108+
.then((terms) => {
109+
checkTerms(terms)
110+
expect(terms.uid).to.be.equal('UID')
111+
expect(terms.parent_uid).to.be.equal('term_2')
112+
expect(terms.ancestors[0].uid).to.be.equal('term_1')
113+
expect(terms.ancestors[1].uid).to.be.equal('term_2')
114+
expect(terms.ancestors[1].parent_uid).to.be.equal('term_1')
115+
done()
116+
})
117+
.catch(done)
118+
})
119+
it('Term descendants test', done => {
120+
var mock = new MockAdapter(Axios)
121+
mock.onGet(`/taxonomies/taxonomy_uid/terms/UID/descendants`).reply(200, { ...termsMock })
122+
makeTerms({
123+
term: {
124+
...systemUidMock
125+
},
126+
stackHeaders: stackHeadersMock
127+
})
128+
.descendants()
129+
.then((terms) => {
130+
checkTerms(terms)
131+
expect(terms.uid).to.be.equal('UID')
132+
expect(terms.descendants[0].uid).to.be.equal('term_4')
133+
expect(terms.descendants[1].uid).to.be.equal('term_5')
134+
expect(terms.descendants[1].parent_uid).to.be.equal('term_4')
135+
done()
136+
})
137+
.catch(done)
138+
})
139+
it('Term test without term uid', done => {
140+
const term = makeTerms()
141+
expect(term.stackHeaders).to.be.equal(undefined)
142+
expect(term.update).to.be.equal(undefined)
143+
expect(term.delete).to.be.equal(undefined)
144+
expect(term.fetch).to.be.equal(undefined)
145+
expect(term.create).not.to.be.equal(undefined)
146+
expect(term.query).not.to.be.equal(undefined)
147+
done()
148+
})
149+
it('Term test with term uid', done => {
150+
const term = makeTerms({
151+
term: {
152+
...systemUidMock
153+
}
154+
})
155+
expect(term.urlPath).to.be.equal(`/taxonomies/taxonomy_uid/terms/${systemUidMock.uid}`)
156+
expect(term.stackHeaders).to.be.equal(undefined)
157+
expect(term.update).not.to.be.equal(undefined)
158+
expect(term.delete).not.to.be.equal(undefined)
159+
expect(term.fetch).not.to.be.equal(undefined)
160+
expect(term.create).to.be.equal(undefined)
161+
expect(term.query).to.be.equal(undefined)
162+
done()
163+
})
164+
})
165+
166+
function makeTerms (data = {}) {
167+
return new Terms(Axios, { taxonomy_uid: 'taxonomy_uid', ...data })
168+
}
169+
170+
function checkTerms (terms) {
171+
expect(terms.name).to.be.equal('name')
172+
}

0 commit comments

Comments
 (0)