Skip to content

Commit 5079d20

Browse files
move items from release implementation, unit & api test cases, types support
1 parent de267b4 commit 5079d20

File tree

5 files changed

+108
-5
lines changed

5 files changed

+108
-5
lines changed

lib/stack/release/items/index.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,25 @@ export function ReleaseItem (http, data = {}) {
180180
error(err)
181181
}
182182
}
183+
184+
this.move = async ({ param, release_version = '' }) => {
185+
const headers = {
186+
headers: {
187+
...cloneDeep(this.stackHeaders)
188+
}
189+
} || {}
190+
if (release_version) {
191+
headers.headers['release_version'] = release_version;
192+
}
193+
try {
194+
const response = await http.put(`${this.urlPath}/move`, param, headers)
195+
if (response.data) {
196+
return response.data
197+
}
198+
} catch (err) {
199+
throw error(err)
200+
}
201+
}
183202
}
184203
return this
185204
}

test/sanity-check/api/release-test.js

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, it, setup } from 'mocha'
22
import { jsonReader } from '../utility/fileOperations/readwrite.js'
3-
import { releaseCreate } from '../mock/release.js'
3+
import { releaseCreate, releaseCreate2 } from '../mock/release.js'
44
import { expect } from 'chai'
55
import { cloneDeep } from 'lodash'
66
import { contentstackClient } from '../utility/ContentstackClient.js'
@@ -11,6 +11,7 @@ dotenv.config()
1111
let client = {}
1212
let releaseUID = ''
1313
let releaseUID2 = ''
14+
let releaseUID3 = ''
1415
let entries = {}
1516
const itemToDelete = {}
1617
const jobId = ''
@@ -35,6 +36,19 @@ describe('Relases api Test', () => {
3536
.catch(done)
3637
})
3738

39+
it('should create a Release 2', done => {
40+
makeRelease()
41+
.create(releaseCreate2)
42+
.then((release) => {
43+
releaseUID2 = release.uid
44+
expect(release.name).to.be.equal(releaseCreate2.release.name)
45+
expect(release.description).to.be.equal(releaseCreate2.release.description)
46+
expect(release.uid).to.be.not.equal(null)
47+
done()
48+
})
49+
.catch(done)
50+
})
51+
3852
it('should fetch a Release from Uid', done => {
3953
makeRelease(releaseUID)
4054
.fetch()
@@ -115,6 +129,26 @@ describe('Relases api Test', () => {
115129
.catch(done)
116130
})
117131

132+
it('should move release items from release1 to release2', done => {
133+
const data = {
134+
release_uid: releaseUID2,
135+
items: [
136+
{
137+
uid: entries[1].uid,
138+
locale: 'en-us'
139+
}
140+
]
141+
}
142+
makeRelease(releaseUID)
143+
.item()
144+
.move({ param: data, release_version: '2.0' })
145+
.then((release) => {
146+
expect(release.notice).to.be.equal('Release items moved successfully!')
147+
done()
148+
})
149+
.catch(done)
150+
})
151+
118152
it('should delete specific item', done => {
119153
makeRelease(releaseUID)
120154
.item()
@@ -205,7 +239,7 @@ describe('Relases api Test', () => {
205239
makeRelease(releaseUID)
206240
.clone({ name: 'New Clone Name', description: 'New Desc' })
207241
.then((release) => {
208-
releaseUID2 = release.uid
242+
releaseUID3 = release.uid
209243
expect(release.name).to.be.equal('New Clone Name')
210244
expect(release.description).to.be.equal('New Desc')
211245
expect(release.uid).to.be.not.equal(null)
@@ -257,7 +291,6 @@ describe('Relases api Test', () => {
257291
.catch(done)
258292
})
259293

260-
261294
it('Bulk Operation: should update items to a release', done => {
262295
const items = {
263296
release: releaseUID,
@@ -287,7 +320,7 @@ describe('Relases api Test', () => {
287320
.catch(done)
288321
})
289322

290-
it('should delete cloned Release with Uid', done => {
323+
it('should delete specific Releases with Uid 2', done => {
291324
makeRelease(releaseUID2)
292325
.delete()
293326
.then((data) => {
@@ -296,6 +329,16 @@ describe('Relases api Test', () => {
296329
})
297330
.catch(done)
298331
})
332+
333+
it('should delete cloned Release with Uid', done => {
334+
makeRelease(releaseUID3)
335+
.delete()
336+
.then((data) => {
337+
expect(data.notice).to.be.equal('Release deleted successfully.')
338+
done()
339+
})
340+
.catch(done)
341+
})
299342
})
300343

301344
function makeRelease (uid = null) {

test/sanity-check/mock/release.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,13 @@ const releaseCreate = {
77
}
88
}
99

10-
export { releaseCreate }
10+
const releaseCreate2 = {
11+
release: {
12+
name: 'Second release',
13+
description: 'Adding release date 2020-21-07',
14+
locked: false,
15+
archived: false
16+
}
17+
}
18+
19+
export { releaseCreate, releaseCreate2 }

test/unit/release-test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,26 @@ describe('Contentstack Release test', () => {
221221
})
222222
.catch(done)
223223
})
224+
225+
it('Release move test', done => {
226+
var mock = new MockAdapter(Axios)
227+
mock.onPut('/releases/UID/items/move').reply(200, {
228+
...noticeMock
229+
})
230+
makeRelease({
231+
release: {
232+
...systemUidMock
233+
},
234+
stackHeaders: stackHeadersMock
235+
})
236+
.item()
237+
.move({ data: { release_uid: 'UID2', items: ['$all'] }, release_version: '2.0' })
238+
.then((response) => {
239+
expect(response.notice).to.be.equal(noticeMock.notice)
240+
done()
241+
})
242+
.catch(done)
243+
})
224244
})
225245

226246
function makeRelease (data) {

types/stack/release/index.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export interface ReleaseDeploy extends AnyProperty {
3232
export interface ReleaseItem extends SystemFields, Creatable<Release, { item?: ReleaseItemData; items?: Array<ReleaseItemData> }> {
3333
delete(param?: { items: Array<ReleaseItemData> }): Promise<void>; // Changed return type to Promise<void>
3434
findAll(param?: AnyProperty): Promise<ContentstackCollection<ReleaseItemData>>;
35+
move(param: { param: MoveReleaseItems, release_version?: string }): Promise<any>;
3536
}
3637

3738
// Data structure for Release item properties
@@ -42,3 +43,14 @@ export interface ReleaseItemData extends AnyProperty {
4243
content_type_uid: string;
4344
action: 'publish' | 'unpublish';
4445
}
46+
47+
export interface MoveReleaseItems extends AnyProperty {
48+
release_uid: string;
49+
items: Array<ReleaseItemData>;
50+
}
51+
52+
export interface MoveItemData extends AnyProperty {
53+
uid: string;
54+
locale: string;
55+
variant_id?: string;
56+
}

0 commit comments

Comments
 (0)