Skip to content

Commit efd1b9a

Browse files
committed
Folder unit test case added
1 parent d208bdb commit efd1b9a

2 files changed

Lines changed: 84 additions & 18 deletions

File tree

lib/stack/asset/folders/index.js

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,95 @@
11
import cloneDeep from 'lodash/cloneDeep'
2-
import { create } from '../../../entity'
2+
import {
3+
update,
4+
deleteEntity,
5+
fetch,
6+
create
7+
} from '../../../entity'
38

49
/**
5-
* Assets refer to all the media files (images, videos, PDFs, audio files, and so on) uploaded in your Contentstack repository for future use.
6-
* These files can be attached and used in multiple entries. Read more about <a href='https://www.contentstack.com/docs/guide/content-management'>Assets</a>.
7-
* @namespace Asset
10+
* Folders refer to Asset Folders.
11+
* @namespace Folder
812
*/
913

1014
export function Folder (http, data = {}) {
11-
this.stackHeaders = data.stackHeaders
15+
if (data.stackHeaders) {
16+
this.stackHeaders = data.stackHeaders
17+
}
1218
this.urlPath = `/assets/folders`
1319

1420
if (data.asset) {
1521
Object.assign(this, cloneDeep(data.asset))
22+
this.urlPath = `/assets/folders/${this.uid}`
23+
24+
/**
25+
* @description The Update Folder call lets you update the name and description of an existing Folder.
26+
* @memberof Folder
27+
* @func update
28+
* @returns {Promise<Folder.Folder>} Promise for Folder instance
29+
* @example
30+
* import * as contentstack from '@contentstack/management'
31+
* const client = contentstack.client()
32+
*
33+
* client.stack({ api_key: 'api_key'}).asset().folder('uid').fetch()
34+
* .then((folder) => {
35+
* folder.name = 'My New folder'
36+
* return folder.update()
37+
* })
38+
* .then((folder) => console.log(folder))
39+
*
40+
*/
41+
this.update = update(http, 'asset')
42+
43+
/**
44+
* @description The Delete folder call will delete an existing folder from the stack.
45+
* @memberof Folder
46+
* @func delete
47+
* @returns {Object} Response Object.
48+
* @example
49+
* import * as contentstack from '@contentstack/management'
50+
* const client = contentstack.client()
51+
*
52+
* client.stack({ api_key: 'api_key'}).asset().folder('uid').delete()
53+
* .then((notice) => console.log(notice))
54+
*/
55+
this.delete = deleteEntity(http)
56+
57+
/**
58+
* @description The fetch an asset call returns comprehensive information about a specific version of an asset of a stack.
59+
* @memberof Folder
60+
* @func fetch
61+
* @returns {Promise<Folder.Folder>} Promise for Folder instance
62+
* @example
63+
* import * as contentstack from '@contentstack/management'
64+
* const client = contentstack.client()
65+
*
66+
* client.stack({ api_key: 'api_key'}).asset().folder('uid').fetch()
67+
* .then((folder) => console.log(folder))
68+
*
69+
*/
70+
this.fetch = fetch(http, 'asset')
1671
} else {
1772
/**
18-
* @description The Create a folder into the assets.
19-
* @memberof Folder
20-
* @func create
21-
* @returns {Promise<Folder.Folder>} Promise for Folder instance
22-
*
23-
* @example
24-
* import * as contentstack from '@contentstack/management'
25-
* const client = contentstack.client()
26-
* const asset = {name: 'My New contentType'}
27-
* client.stack().asset().folders().create({ asset })
28-
* .then((folder) => console.log(folder))
29-
*/
73+
* @description The Create a folder into the assets.
74+
* @memberof Folder
75+
* @func create
76+
* @returns {Promise<Folder.Folder>} Promise for Folder instance
77+
*
78+
* @example
79+
* import * as contentstack from '@contentstack/management'
80+
* const client = contentstack.client()
81+
* const asset = {name: 'My New contentType'}
82+
* client.stack().asset().folders().create({ asset })
83+
* .then((folder) => console.log(folder))
84+
*/
3085
this.create = create({ http: http })
3186
}
3287
}
88+
89+
export function FolderCollection (http, data) {
90+
const obj = cloneDeep(data.assets) || []
91+
const assetCollection = obj.map((userdata) => {
92+
return new Folder(http, { asset: userdata, stackHeaders: data.stackHeaders })
93+
})
94+
return assetCollection
95+
}

lib/stack/asset/index.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,11 @@ export function Asset (http, data = {}) {
163163
* import * as contentstack from '@contentstack/management'
164164
* const client = contentstack.client()
165165
*/
166-
this.folder = () => {
166+
this.folder = (folderUid = null) => {
167167
const data = { stackHeaders: this.stackHeaders }
168+
if (folderUid) {
169+
data.asset = { uid: folderUid }
170+
}
168171
return new Folder(http, data)
169172
}
170173

0 commit comments

Comments
 (0)