UNPKG

trailpack-proxy-cart

Version:

eCommerce - Trailpack for Proxy Engine

406 lines (396 loc) 15.3 kB
'use strict' /* global describe, it */ const assert = require('assert') const supertest = require('supertest') const _ = require('lodash') const collections = require('../../../fixtures/collections') describe('Admin User CollectionController', () => { let adminUser, userID, customerID, uploadID, collectionID, collection2ID before((done) => { adminUser = supertest.agent(global.app.packs.express.server) // Login as Admin adminUser .post('/auth/local') .set('Accept', 'application/json') //set header for this test .send({username: 'admin', password: 'admin1234'}) .expect(200) .end((err, res) => { assert.ok(res.body.user.id) assert.ok(res.body.user.current_customer_id) userID = res.body.user.id customerID = res.body.user.current_customer_id done(err) }) }) it('should exist', () => { assert(global.app.api.controllers['CollectionController']) }) it('should get general stats', (done) => { adminUser .get('/collection/generalStats') .expect(200) .end((err, res) => { assert.ok(res.body) done(err) }) }) it('should create a collection', (done) => { const collection = collections[0] adminUser .post('/collection') .send(collection) .expect(200) .end((err, res) => { collectionID = res.body.id assert.equal(res.body.handle, 'have-you-seen-my-pants') assert.equal(res.body.title, 'Have you seen my Pants?') assert.equal(res.body.excerpt, '# Lego Movie is so funny!') assert.equal(res.body.excerpt_html, '<h1>Lego Movie is so funny!</h1>\n') assert.equal(res.body.body, '# Honey, have you seen my Pants?') assert.equal(res.body.body_html, '<h1>Honey, have you seen my Pants?</h1>\n') assert.equal(res.body.collections.length, 1) assert.equal(res.body.collections[0].handle, 'lego-movie') assert.equal(res.body.collections[0].title, 'Lego Movie') assert.equal(res.body.images.length, 2) // console.log('COLLECTION IMAGES', res.body.images.length) done(err) }) }) it('should create another collection', (done) => { const collection = collections[1] adminUser .post('/collection') .send(collection) .expect(200) .end((err, res) => { collection2ID = res.body.id assert.equal(res.body.handle, 'customer-discount-test') assert.equal(res.body.title, 'Customer Discount') assert.equal(res.body.body, '# Customer Discount') assert.equal(res.body.collections.length, 0) done(err) }) }) it('should find created collection', (done) => { adminUser .get(`/collection/${collectionID}`) .expect(200) .end((err, res) => { assert.equal(res.body.handle, 'have-you-seen-my-pants') assert.equal(res.body.title, 'Have you seen my Pants?') assert.equal(res.body.excerpt, '# Lego Movie is so funny!') assert.equal(res.body.excerpt_html, '<h1>Lego Movie is so funny!</h1>\n') assert.equal(res.body.body, '# Honey, have you seen my Pants?') assert.equal(res.body.body_html, '<h1>Honey, have you seen my Pants?</h1>\n') assert.equal(res.body.collections.length, 1) assert.equal(res.body.collections[0].handle, 'lego-movie') assert.equal(res.body.collections[0].title, 'Lego Movie') assert.equal(res.body.images.length, 2) done(err) }) }) it('should update collection', (done) => { adminUser .post(`/collection/${collectionID}`) .send({ title: 'Have you seen my Pants? Again?', body: '# Honey, have you seen my Pants? Again?', excerpt: '# Lego Batman Movie is so funny!' }) .expect(200) .end((err, res) => { assert.equal(res.body.handle, 'have-you-seen-my-pants') assert.equal(res.body.excerpt, '# Lego Batman Movie is so funny!') assert.equal(res.body.excerpt_html, '<h1>Lego Batman Movie is so funny!</h1>\n') assert.equal(res.body.title, 'Have you seen my Pants? Again?') assert.equal(res.body.body, '# Honey, have you seen my Pants? Again?') assert.equal(res.body.body_html, '<h1>Honey, have you seen my Pants? Again?</h1>\n') assert.equal(res.body.collections.length, 1) assert.equal(res.body.collections[0].handle, 'lego-movie') assert.equal(res.body.collections[0].title, 'Lego Movie') assert.equal(res.body.images.length, 2) done(err) }) }) // TODO complete test it('should add tag to collection', (done) => { adminUser .post(`/collection/${collectionID}/addTag/test`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, collectionID) done(err) }) }) // TODO complete test it('should list tags of a collection', (done) => { adminUser .get(`/collection/${collectionID}/tags`) .expect(200) .end((err, res) => { assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(res.headers['x-pagination-total'], '1') assert.equal(res.headers['x-pagination-offset'], '0') assert.equal(res.headers['x-pagination-limit'], '10') assert.equal(res.headers['x-pagination-page'], '1') assert.equal(res.headers['x-pagination-pages'], '1') assert.ok(res.body) done(err) }) }) // TODO complete test it('should remove tag from collection', (done) => { adminUser .post(`/collection/${collectionID}/removeTag/test`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, collectionID) done(err) }) }) // TODO complete test it('should add product to collection', (done) => { adminUser .post(`/collection/${collectionID}/addProduct/1`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, 1) done(err) }) }) // TODO complete test it('should list collection products', (done) => { adminUser .get(`/collection/${collectionID}/products`) .expect(200) .end((err, res) => { assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-total'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-offset'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-limit'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-page'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-pages'])), true) assert.equal(res.headers['x-pagination-total'], '1') assert.equal(res.headers['x-pagination-offset'], '0') assert.equal(res.headers['x-pagination-limit'], '10') assert.equal(res.headers['x-pagination-page'], '1') assert.equal(res.headers['x-pagination-pages'], '1') assert.ok(res.body) assert.equal(res.body.length, 1) // console.log('BROKE COLLECTION PRODUCTS', res.body) done(err) }) }) // TODO complete test it('should remove product from collection', (done) => { adminUser .post(`/collection/${collectionID}/removeProduct/1`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, 1) done(err) }) }) // TODO complete test it('should add customer to collection', (done) => { adminUser .post(`/collection/${collectionID}/addCustomer/${customerID}`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, customerID) done(err) }) }) // TODO complete test it('should list collection customers', (done) => { adminUser .get(`/collection/${collectionID}/customers`) .expect(200) .end((err, res) => { assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-total'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-offset'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-limit'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-page'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-pages'])), true) assert.ok(res.body) done(err) }) }) // TODO complete test it('should remove customer from collection', (done) => { adminUser .post(`/collection/${collectionID}/removeCustomer/${customerID}`) .send() .expect(200) .end((err, res) => { assert.equal(res.body.id, customerID) done(err) }) }) it('should add collection to collection', (done) => { adminUser .put(`/collection/${collectionID}/collection/${collection2ID}`) .send() .expect(200) .end((err, res) => { console.log(`added ${collection2ID} to ${collectionID}`) assert.equal(res.body.id, collection2ID) done(err) }) }) it('should add collections to collection', (done) => { adminUser .put(`/collection/${collectionID}/collections`) .send([ {id: 1}, {id: collection2ID} ]) .expect(200) .end((err, res) => { // assert.equal(res.body.collections.length, 2) assert.equal(res.body.length, 2) done(err) }) }) // TODO complete test it('should list collection collections', (done) => { adminUser .get(`/collection/${collectionID}/collections`) .expect(200) .end((err, res) => { assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-total'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-offset'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-limit'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-page'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-pages'])), true) // console.log('BROKE COLLECTIONS COLLECTIONS', res.body) assert.equal(res.body.length, 3) done(err) }) }) // it('should should remove collection from collection', (done) => { // adminUser // .del(`/collection/${collectionID}/collection/${collection2ID}`) // .send() // .expect(200) // .end((err, res) => { // assert.equal(res.body.id, collection2ID) // done(err) // }) // }) it('It should upload collection_upload.csv', (done) => { adminUser .post('/collection/uploadCSV') .attach('file', 'test/fixtures/collection_upload.csv') .expect(200) .end((err, res) => { assert.ok(res.body.result.upload_id) uploadID = res.body.result.upload_id assert.equal(res.body.result.collections, 1) assert.equal(res.body.result.errors_count, 0) done(err) }) }) it('It should process upload', (done) => { adminUser .post(`/collection/processUpload/${uploadID}`) .send({}) .expect(200) .end((err, res) => { assert.equal(res.body.collections, 1) assert.equal(res.body.errors_count, 0) done(err) }) }) it('It should get collection by handle', (done) => { adminUser .get('/collection/handle/awesome') .expect(200) .end((err, res) => { assert.ok(res.body) assert.equal(res.body.handle, 'awesome') assert.equal(res.body.title, 'Awesome') assert.equal(res.body.description, 'Test Description') assert.equal(res.body.excerpt, 'When you\'re part of a team') assert.equal(res.body.excerpt_html, "<p>When you're part of a team</p>\n") assert.equal(res.body.body, 'Everything is Awesome') assert.equal(res.body.body_html, '<p>Everything is Awesome</p>\n') assert.equal(res.body.sort_order, 'price-asc') // DISCOUNTS MIGRATED TO THEIR OWN OBJECT // assert.equal(res.body.discount_scope, 'global') // assert.equal(res.body.discount_type, 'fixed') // assert.equal(res.body.discount_rate, 100) done(err) }) }) it('should get all collections', (done) => { adminUser .get('/collections') .expect(200) .end((err, res) => { assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-total'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-offset'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-limit'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-page'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-pages'])), true) assert.ok(res.body) done(err) }) }) it('It should search a collection', (done) => { adminUser .get('/collections/search') .query({ term: 'Pants' }) .expect(200) .end((err, res) => { assert.ok(res.body) assert.ok(res.headers['x-pagination-total']) assert.ok(res.headers['x-pagination-pages']) assert.ok(res.headers['x-pagination-page']) assert.ok(res.headers['x-pagination-limit']) assert.ok(res.headers['x-pagination-offset']) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-total'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-offset'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-limit'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-page'])), true) assert.equal(_.isNumber(parseInt(res.headers['x-pagination-pages'])), true) // assert.equal(res.headers['x-pagination-total'], '1') assert.equal(res.headers['x-pagination-offset'], '0') assert.equal(res.headers['x-pagination-limit'], '10') assert.equal(res.headers['x-pagination-page'], '1') assert.equal(res.headers['x-pagination-pages'], '1') assert.equal(res.body.length, 1) done(err) }) }) })