dispatch-node-sdk
Advanced tools
Comparing version 2.13.0 to 2.14.0
@@ -848,15 +848,34 @@ 'use strict'; | ||
var createCustomer = function createCustomer() { | ||
if (customerInfo.id) { | ||
jobInfo.customer_id = customerInfo.id; | ||
return Promise.resolve(); | ||
var createOrUpdateCustomer = function createOrUpdateCustomer() { | ||
var id = customerInfo.id; | ||
var resolveCustomer = function resolveCustomer(resolve, customer) { | ||
returnData.customer = customer; | ||
jobInfo.customer_id = customer.id; | ||
resolve(); | ||
}; | ||
var rejectCustomer = function rejectCustomer(reject, err) { | ||
errorData.customer = err; | ||
reject(err); | ||
}; | ||
// Update the customer if an id is provided | ||
if (id) { | ||
return new Promise(function (resolve, reject) { | ||
_this9.entities.customers.update(id, _underscore2.default.omit(customerInfo, 'id')).then(function (customer) { | ||
resolveCustomer(resolve, customer); | ||
}).catch(function (err) { | ||
rejectCustomer(reject, err); | ||
}); | ||
}); | ||
} | ||
// Create a customer if no id is provided | ||
return new Promise(function (resolve, reject) { | ||
_this9.entities.customers.create(customerInfo).then(function (customer) { | ||
returnData.customer = customer; | ||
jobInfo.customer_id = customer.id; | ||
resolve(); | ||
resolveCustomer(resolve, customer); | ||
}).catch(function (err) { | ||
errorData.customer = err; | ||
reject(err); | ||
rejectCustomer(reject, err); | ||
}); | ||
@@ -897,3 +916,3 @@ }); | ||
return new Promise(function (resolve, reject) { | ||
createCustomer().then(function () { | ||
createOrUpdateCustomer().then(function () { | ||
return createJob(); | ||
@@ -900,0 +919,0 @@ }).then(function () { |
@@ -631,17 +631,30 @@ import * as endpoints from './endpoints'; | ||
const createCustomer = () => { | ||
if (customerInfo.id) { | ||
jobInfo.customer_id = customerInfo.id; | ||
return Promise.resolve(); | ||
const createOrUpdateCustomer = () => { | ||
const { id } = customerInfo; | ||
const resolveCustomer = (resolve, customer) => { | ||
returnData.customer = customer; | ||
jobInfo.customer_id = customer.id; | ||
resolve(); | ||
}; | ||
const rejectCustomer = (reject, err) => { | ||
errorData.customer = err; | ||
reject(err); | ||
}; | ||
// Update the customer if an id is provided | ||
if (id) { | ||
return new Promise((resolve, reject) => { | ||
this.entities.customers.update(id, _.omit(customerInfo, 'id')) | ||
.then(customer => { resolveCustomer(resolve, customer); }) | ||
.catch(err => { rejectCustomer(reject, err); }); | ||
}); | ||
} | ||
// Create a customer if no id is provided | ||
return new Promise((resolve, reject) => { | ||
this.entities.customers.create(customerInfo) | ||
.then(customer => { | ||
returnData.customer = customer; | ||
jobInfo.customer_id = customer.id; | ||
resolve(); | ||
}).catch(err => { | ||
errorData.customer = err; | ||
reject(err); | ||
}); | ||
.then(customer => { resolveCustomer(resolve, customer); }) | ||
.catch(err => { rejectCustomer(reject, err); }); | ||
}); | ||
@@ -685,3 +698,3 @@ }; | ||
return new Promise((resolve, reject) => { | ||
createCustomer() | ||
createOrUpdateCustomer() | ||
.then(() => createJob()) | ||
@@ -688,0 +701,0 @@ .then(() => createAppointment()) |
@@ -793,35 +793,70 @@ import nock from 'nock'; | ||
it('should make post requests with all correct data with existing customer', done => { | ||
it('should make patch request if customer id exists', done => { | ||
spyOn(client.entities.customers, 'create').andCallThrough(); | ||
spyOn(client.entities.customers, 'update').andReturn(Promise.resolve({ | ||
id: 123, | ||
full_name: 'Same Dude', | ||
})); | ||
spyOn(client.entities.jobs, 'create').andReturn(Promise.resolve({ | ||
id: 456, | ||
title: 'Test Job', | ||
id: 234, | ||
title: 'Royale', | ||
customer_id: 123, | ||
})); | ||
client.createAndScheduleJob({ | ||
title: 'Test Job', | ||
}, { | ||
client.createAndScheduleJob({ title: 'Royale' }, { id: 123, full_name: 'Same Dude' }) | ||
.then(response => { | ||
expect(response).toEqual({ | ||
job: { | ||
id: 234, | ||
title: 'Royale', | ||
customer_id: 123, | ||
}, | ||
customer: { | ||
id: 123, | ||
full_name: 'Same Dude', | ||
}, | ||
appointment: null, | ||
}); | ||
expect(client.entities.customers.create).toNotHaveBeenCalled(); | ||
expect(client.entities.customers.update).toHaveBeenCalledWith(123, { full_name: 'Same Dude' }); | ||
done(); | ||
}) | ||
.catch(done); | ||
}); | ||
it('should make post request if customer id does not exist', done => { | ||
spyOn(client.entities.customers, 'update').andCallThrough(); | ||
spyOn(client.entities.customers, 'create').andReturn(Promise.resolve({ | ||
id: 123, | ||
}).then((response) => { | ||
expect(response).toEqual({ | ||
job: { | ||
id: 456, | ||
title: 'Test Job', | ||
customer_id: 123, | ||
}, | ||
customer: null, | ||
appointment: null, | ||
}); | ||
full_name: 'Same Dude', | ||
})); | ||
spyOn(client.entities.jobs, 'create').andReturn(Promise.resolve({ | ||
id: 234, | ||
title: 'Royale', | ||
customer_id: 123, | ||
})); | ||
expect(client.entities.customers.create).toNotHaveBeenCalled(); | ||
client.createAndScheduleJob({ title: 'Royale' }, { full_name: 'Same Dude' }) | ||
.then(response => { | ||
expect(response).toEqual({ | ||
job: { | ||
id: 234, | ||
title: 'Royale', | ||
customer_id: 123, | ||
}, | ||
customer: { | ||
id: 123, | ||
full_name: 'Same Dude', | ||
}, | ||
appointment: null, | ||
}); | ||
expect(client.entities.jobs.create).toHaveBeenCalledWith({ | ||
customer_id: 123, | ||
title: 'Test Job', | ||
}); | ||
expect(client.entities.customers.update).toNotHaveBeenCalled(); | ||
expect(client.entities.customers.create).toHaveBeenCalledWith({ full_name: 'Same Dude' }); | ||
// Not creating appointment is tested here as well. | ||
done(); | ||
}).catch(done); | ||
done(); | ||
}) | ||
.catch(done); | ||
}); | ||
@@ -828,0 +863,0 @@ }); |
{ | ||
"name": "dispatch-node-sdk", | ||
"version": "2.13.0", | ||
"version": "2.14.0", | ||
"description": "High- and low-level libraries for interacting with the Dispatch API", | ||
@@ -5,0 +5,0 @@ "main": "dist/lib/index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
280900
6999