UNPKG

cosmicjs

Version:

The official client module for Cosmic. This module helps you easily add dynamic content to your website or application using the Cosmic headless CMS.

431 lines (404 loc) 9.37 kB
const fs = require('fs') const expect = require('chai').expect const Cosmic = require('../../src/index') const { EMAIL, PASSWORD } = require('../constants') let config = {}; let CosmicBucket = {}; suite('Test Bucket Methods.', function() { this.timeout(10000); setup(function(done) { Cosmic().authenticate({ email: EMAIL, password: PASSWORD }).then(data => { config.token = data.token; done() }).catch(err => { console.log(err) done(err) }) }) test('getBuckets', function(done) { Cosmic({ token: config.token }).getBuckets() .then(data => { expect(data.buckets).to.be.an('array') done() }).catch(err => { done(err) }) }) test('addBucket', function(done) { Cosmic({ token: config.token }).addBucket({ title: "My Super Awesome Bucket" }) .then(data => { expect(data.bucket).to.be.an('object') // Set Bucket config.bucket = data.bucket done() }).catch(err => { done(err) }) }) test('editBucket', function(done) { Cosmic({ token: config.token }).editBucket({ slug: config.bucket.slug, title: "My Super Awesome Bucket EDIT" }) .then(data => { expect(data.bucket).to.be.an('object') done() }).catch(err => { done(err) }) }) test('addObjectType', function(done) { CosmicBucket = Cosmic().bucket({ slug: config.bucket.slug, read_key: config.bucket.api_access.read_key, write_key: config.bucket.api_access.write_key }) CosmicBucket.addObjectType({ title: 'Posts', metafields: [{ type: 'text', title: 'Headline', key: 'headline', value: '' }] }) .then(data => { expect(data.object_type).to.be.an('object') config.object_type = data.object_type done() }).catch(err => { done(err) }) }) test('editObjectType', function(done) { CosmicBucket.editObjectType({ slug: config.object_type.slug, title: 'Posts EDITED', metafields: [{ type: 'text', title: 'Headline EDITED', key: 'headline', value: '' }] }) .then(data => { expect(data.object_type).to.be.an('object') done() }).catch(err => { done(err) }) }) }) suite('Test Object Methods.', function() { test('addObject', function(done) { CosmicBucket.addObject({ type: config.object_type.slug, title: 'My New Awesome Post', metafields: [{ type: 'text', title: 'Headline', key: 'headline', value: 'This is AMAZING!' }] }) .then(data => { config.object = data.object expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('objects.insertOne', function(done) { CosmicBucket.objects.insertOne({ type: config.object_type.slug, title: 'My New Awesome Post', metafields: [{ type: 'text', title: 'Headline', key: 'headline', value: 'This is AMAZING!' }] }) .then(data => { config.object2 = data.object expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('getObject', function(done) { CosmicBucket.getObject({ id: config.object.id, props: 'title,slug' }) .then(data => { expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('getObjects', function(done) { CosmicBucket.getObjects({ type: config.object.type, props: 'title,slug' }) .then(data => { expect(data.objects).to.be.an('array') done() }).catch(err => { done(err) }) }) test('objects.find', function(done) { CosmicBucket.objects.find({ type: config.object2.type }) .props('title,slug') .then(data => { expect(data.objects).to.be.an('array') done() }).catch(err => { done(err) }) }) test('objects.findOne', function(done) { CosmicBucket.objects.findOne({ id: config.object2.id }) .props('title,slug') .then(data => { expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('addObjectRevision', function(done) { CosmicBucket.addObjectRevision({ id: config.object.id, type: config.object_type.slug, title: 'My New Awesome Post REVISION', metafields: [{ type: 'text', title: 'Headline', key: 'headline', value: 'This is AMAZING!' }] }) .then(data => { expect(data.revision).to.be.an('object') done() }).catch(err => { done(err) }) }) // NEEDS FURTHER DEVELOPMENT (addMergeRequest, etc) // test('getMergeRequestObjects', function(done) { // MergeCosmicBucket.getMergeRequestObjects({ // id: 'merge-request-id', // props: 'title' // }) // .then(data => { // expect(data.objects).to.be.an('array') // done() // }).catch(err => { // done(err) // }) // }) test('getObjectMetafields', function(done) { CosmicBucket.getObjectMetafields({ id: config.object.id }) .then(data => { expect(data.metafields).to.be.an('array') done() }).catch(err => { done(err) }) }) test('editObjectMetafield', function(done) { CosmicBucket.editObjectMetafield({ id: config.object.id, key: 'headline', value: 'New Metafield Value' }) .then(data => { expect(data.metafield).to.be.an('object') done() }).catch(err => { done(err) }) }) test('editObject', function(done) { CosmicBucket.editObject({ id: config.object.id, title: 'EDITED My New Awesome Post' }) .then(data => { expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('objects.updateOne', function(done) { CosmicBucket.objects.updateOne({ id: config.object2.id }, { $set: { title: 'UPDATE ONE My New Awesome Post' } }) .then(data => { expect(data.object).to.be.an('object') done() }).catch(err => { done(err) }) }) test('deleteObject', function(done) { CosmicBucket.deleteObject({ id: config.object.id }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { done(err) }) }) test('objects.deleteOne', function(done) { CosmicBucket.objects.deleteOne({ id: config.object2.id }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { done(err) }) }) test('deleteObjectType', function(done) { CosmicBucket.deleteObjectType({ slug: config.object_type.slug }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { done(err) }) }) }) suite('Test Media Methods.', function() { test('addMedia', function(done) { const media_object = { originalname: 'logo.jpg', buffer: fs.createReadStream('./test/logo.jpg') }; CosmicBucket.addMedia({ media: media_object }) .then(data => { config.media = data.media expect(data.media).to.be.an('object') done() }).catch(err => { done(err) }) }) test('media.insertOne', function(done) { const media_object = { originalname: 'logo.jpg', buffer: fs.createReadStream('./test/logo.jpg') }; CosmicBucket.media.insertOne({ media: media_object }) .then(data => { config.media2 = data.media expect(data.media).to.be.an('object') done() }).catch(err => { done(err) }) }) test('getMedia', function(done) { CosmicBucket.getMedia({ limit: 2 }) .then(data => { expect(data.media).to.be.an('array') done() }).catch(err => { done(err) }) }) test('media.find', function(done) { CosmicBucket.media.find() .limit(2) .then(data => { expect(data.media).to.be.an('array') done() }).catch(err => { done(err) }) }) test('media.findOne', function(done) { CosmicBucket.media.findOne({ id: config.media2.id }) .limit(2) .then(data => { expect(data.media).to.be.an('object') done() }).catch(err => { done(err) }) }) test('deleteMedia', function(done) { CosmicBucket.deleteMedia({ id: config.media.id }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { console.log(err) done(err) }) }) test('media.deleteOne', function(done) { CosmicBucket.media.deleteOne({ id: config.media2.id }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { console.log(err) done(err) }) }) }) suite('Delete Bucket.', function() { test('deleteBucket', function(done) { Cosmic({ token: config.token }).deleteBucket({ slug: config.bucket.slug }) .then(data => { expect(data.message).to.be.a('string') done() }).catch(err => { done(err) }) }) })