convictional
Version:
A Node.JS client for the Convictional API
198 lines (196 loc) • 6.49 kB
JavaScript
require('dotenv').config()
var mocha = require('mocha')
var describe = mocha.describe
var it = mocha.it
var chai = require('chai')
var expect = chai.expect
var moment = require('moment')
var convictional = require('../lib/api.js')({
apiUrl: process.env.API_URL,
adminKey: process.env.ADMIN_KEY,
apiKey: process.env.API_KEY
})
var companyId = 'test'
var id
var ids = []
var orderEntry = {
code: '123456',
partner: 'convictional-dropshipper-us',
date: '2018-01-28 16:46:13',
items: [
{
'type': 'item',
'title': 'Great Custom Product',
'quantity': 2,
'price': 9.99,
'sku': '123GRPRODUCT',
'vendor': 'convictional-wholesale',
'properties': [
{
'type': 'custom_engraving',
'data': 'We Love Dad!'
}
],
'grams': 200
},
{
'type': 'item',
'title': 'Great Standard Product',
'quantity': 1,
'price': 19.99,
'sku': '35GRPRODUCT',
'vendor': 'convictional-wholesale',
'properties': [],
'grams': 200
}
],
addresses: [
{
'type': 'shipping',
'name': 'First Last',
'company': 'Company, Inc',
'phone': '800-555-5555',
'city': 'Toronto',
'zip': 'M5V 4B3',
'state': 'Ontario',
'country': 'Canada',
'addressOne': '123 Toronto St.',
'addressTwo': '#206'
},
{
'type': 'billing',
'name': 'First Last',
'company': 'Company, Inc',
'phone': '800-555-5555',
'city': 'Toronto',
'zip': 'M5V 4B3',
'state': 'Ontario',
'country': 'Canada',
'addressOne': '123 Toronto St.',
'addressTwo': '#206'
}
]
}
var newOrder = { complete: true }
var anotherOrderEntry = {
code: '123459',
partner: 'convictional-dropshipper-ca',
date: '2018-01-30 16:46:13',
items: [
{
'type': 'item',
'title': 'Great Standard Product',
'quantity': 1,
'price': 19.99,
'sku': '35GRPRODUCT',
'vendor': 'convictional-wholesale',
'properties': [],
'grams': 200
}
],
addresses: [
{
'type': 'shipping',
'name': 'First Last',
'company': 'Company, Inc',
'phone': '800-555-5555',
'city': 'Toronto',
'zip': 'M5V 4B3',
'state': 'Ontario',
'country': 'Canada',
'addressOne': '123 Waterloo St.',
'addressTwo': '#705'
}
]
}
var multiOrderEntry = []
multiOrderEntry.push(orderEntry)
multiOrderEntry.push(anotherOrderEntry)
describe('/orders', function () {
it('it should create ONE order', (done) => {
convictional.postOrder(orderEntry).then((record) => {
id = record._id
expect(record).to.have.property('_id').equal(id)
expect(record).to.have.property('created')
expect(record).to.have.property('updated')
expect(record).to.have.property('code').equal(orderEntry.code)
expect(record).to.have.property('partner').equal(orderEntry.partner)
expect(record).to.have.property('date').equal(orderEntry.date)
expect(record).to.have.property('items').eql(orderEntry.items)
expect(record).to.have.property('addresses').eql(orderEntry.addresses)
expect(record).to.have.property('companyId').equal(companyId)
done()
}).catch((error) => { done(error) })
})
it('it should return orders by date', (done) => {
var getOrdersQuery = { 'updatedAfter': moment().subtract(365, 'days').format() }
convictional.getOrders(getOrdersQuery).then((orders) => {
expect(orders).to.be.an('array')
done()
}).catch((error) => { done(error) })
})
it('it should list ONE order', (done) => {
convictional.getOrder(id).then((record) => {
expect(record).to.have.property('_id').equal(id)
expect(record).to.have.property('created')
expect(record).to.have.property('updated')
expect(record).to.have.property('code').equal(orderEntry.code)
expect(record).to.have.property('partner').equal(orderEntry.partner)
expect(record).to.have.property('date').equal(orderEntry.date)
expect(record).to.have.property('items').eql(orderEntry.items)
expect(record).to.have.property('addresses').eql(orderEntry.addresses)
expect(record).to.have.property('companyId').equal(companyId)
done()
}).catch((error) => { done(error) })
})
it('it should list ALL orders', (done) => {
var query = {}
convictional.getOrders(query).then((record) => {
expect(record).to.be.an('array')
done()
}).catch((error) => { done(error) })
})
it('it should return second page', (done) => {
var query = { 'page': 2, 'limit': 1 }
convictional.getOrders(query).then((record) => {
expect(record.length).to.equal(1)
done()
}).catch((error) => { done(error) })
})
it('it should return single record', (done) => {
var query = { 'limit': 1 }
convictional.getOrders(query).then((record) => {
expect(record.length).to.equal(1)
done()
}).catch((error) => { done(error) })
})
it('it should count records', (done) => {
var query = { 'count': true }
convictional.getOrders(query).then((record) => {
expect(record.count).to.be.a('number')
done()
}).catch((error) => { done(error) })
})
it('it should update ONE order', (done) => {
newOrder._id = id
convictional.putOrder(newOrder).then((record) => {
expect(record).to.have.property('_id').equal(id)
expect(record).to.have.property('created')
expect(record).to.have.property('updated')
expect(record).to.have.property('code').equal(orderEntry.code)
expect(record).to.have.property('partner').equal(orderEntry.partner)
expect(record).to.have.property('date').equal(orderEntry.date)
expect(record).to.have.property('items').eql(orderEntry.items)
expect(record).to.have.property('addresses').eql(orderEntry.addresses)
expect(record).to.have.property('complete').equal(newOrder.complete)
expect(record).to.have.property('companyId').equal(companyId)
done()
}).catch((error) => { done(error) })
})
it('it should delete ONE order', (done) => {
convictional.deleteOrder(id).then((record) => {
expect(record).eql({ Deleted: 1 })
done()
}).catch((error) => { done(error) })
})
})