227 lines
6.6 KiB
JavaScript
227 lines
6.6 KiB
JavaScript
import{ serial as test }from'ava';
|
|
const {
|
|
runBefore,
|
|
g
|
|
} = require('../helper');
|
|
|
|
test.before(async () => {
|
|
await runBefore();
|
|
});
|
|
|
|
test('[Success] Create a customer', async t => {
|
|
const customer = {
|
|
email: 'sarah.jones@test.com',
|
|
company: 'Acme Co',
|
|
firstName: 'Sarah',
|
|
lastName: 'Jones',
|
|
address1: '1 Sydney Street',
|
|
address2: '',
|
|
country: 'Australia',
|
|
state: 'NSW',
|
|
postcode: '2000',
|
|
phone: '0400000000',
|
|
password: 'password'
|
|
};
|
|
|
|
const res = await g.request
|
|
.post('/customer/create')
|
|
.send(customer)
|
|
.expect(200);
|
|
|
|
t.deepEqual(res.body.email, customer.email);
|
|
t.deepEqual(res.body.firstName, customer.firstName);
|
|
});
|
|
|
|
test('[Fail] Try create a duplicate customer', async t => {
|
|
const customer = {
|
|
email: 'sarah.jones@test.com',
|
|
company: 'Acme Co',
|
|
firstName: 'Sarah',
|
|
lastName: 'Jones',
|
|
address1: '1 Sydney Street',
|
|
address2: '',
|
|
country: 'Australia',
|
|
state: 'NSW',
|
|
postcode: '2000',
|
|
phone: '0400000000',
|
|
password: 'password'
|
|
};
|
|
|
|
const res = await g.request
|
|
.post('/customer/create')
|
|
.send(customer)
|
|
.expect(400);
|
|
|
|
t.deepEqual(res.body.message, 'A customer already exists with that email address');
|
|
});
|
|
|
|
test('[Fail] Create with invalid email address', async t => {
|
|
const customer = {
|
|
email: 'sarah.jones@test',
|
|
company: 'Acme Co',
|
|
firstName: 'Sarah',
|
|
lastName: 'Jones',
|
|
address1: '1 Sydney Street',
|
|
address2: '',
|
|
country: 'Australia',
|
|
state: 'NSW',
|
|
postcode: '2000',
|
|
phone: '0400000000',
|
|
password: 'password'
|
|
};
|
|
|
|
const res = await g.request
|
|
.post('/customer/create')
|
|
.send(customer)
|
|
.expect(400);
|
|
|
|
t.deepEqual(res.body[0].message, 'should match format "emailAddress"');
|
|
});
|
|
|
|
test('[Success] Update existing customer from dashboard', async t => {
|
|
const customer = {
|
|
customerId: g.customers[1]._id,
|
|
company: 'Acme Co',
|
|
email: 'sarah.jones@test.com',
|
|
firstName: 'Sarah',
|
|
lastName: 'Jones',
|
|
address1: '1 Sydney Street',
|
|
address2: '',
|
|
country: 'Australia',
|
|
state: 'NSW',
|
|
postcode: '2000',
|
|
phone: '0444444444'
|
|
};
|
|
|
|
const res = await g.request
|
|
.post('/admin/customer/update')
|
|
.send(customer)
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(200);
|
|
|
|
t.deepEqual(res.body.message, 'Customer updated');
|
|
t.deepEqual(res.body.customer.company, customer.company);
|
|
t.deepEqual(res.body.customer.email, customer.email);
|
|
t.deepEqual(res.body.customer.firstName, customer.firstName);
|
|
t.deepEqual(res.body.customer.lastName, customer.lastName);
|
|
t.deepEqual(res.body.customer.address1, customer.address1);
|
|
t.deepEqual(res.body.customer.country, customer.country);
|
|
t.deepEqual(res.body.customer.state, customer.state);
|
|
t.deepEqual(res.body.customer.postcode, customer.postcode);
|
|
t.deepEqual(res.body.customer.phone, customer.phone);
|
|
});
|
|
|
|
test('[Success] Update existing customer from customer page', async t => {
|
|
const customer = {
|
|
customerId: g.customers[1]._id,
|
|
company: 'Acme Company',
|
|
email: 'sarah.jones@test.com',
|
|
firstName: 'Tina',
|
|
lastName: 'Smith',
|
|
address1: '2 Sydney Street',
|
|
address2: '',
|
|
country: 'Australia',
|
|
state: 'NSW',
|
|
postcode: '2000',
|
|
phone: '0444444444'
|
|
};
|
|
|
|
await g.request
|
|
.post('/customer/login_action')
|
|
.send({
|
|
loginEmail: 'sarah.jones@test.com',
|
|
loginPassword: 'test'
|
|
})
|
|
.expect(200);
|
|
|
|
const res = await g.request
|
|
.post('/customer/update')
|
|
.send(customer)
|
|
.expect(200);
|
|
|
|
t.deepEqual(res.body.message, 'Customer updated');
|
|
t.deepEqual(res.body.customer.company, customer.company);
|
|
t.deepEqual(res.body.customer.email, customer.email);
|
|
t.deepEqual(res.body.customer.firstName, customer.firstName);
|
|
t.deepEqual(res.body.customer.lastName, customer.lastName);
|
|
t.deepEqual(res.body.customer.address1, customer.address1);
|
|
t.deepEqual(res.body.customer.country, customer.country);
|
|
t.deepEqual(res.body.customer.state, customer.state);
|
|
t.deepEqual(res.body.customer.postcode, customer.postcode);
|
|
t.deepEqual(res.body.customer.phone, customer.phone);
|
|
});
|
|
|
|
test('[Success] Get customer list', async t => {
|
|
const res = await g.request
|
|
.get('/admin/customers')
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(200);
|
|
|
|
// Check the returned customers length
|
|
t.deepEqual(3, res.body.length);
|
|
});
|
|
|
|
test('[Success] Filter customers', async t => {
|
|
const res = await g.request
|
|
.get('/admin/customers/filter/Testy')
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(200);
|
|
|
|
// Check the returned customers length
|
|
t.deepEqual(1, res.body.customers.length);
|
|
});
|
|
|
|
test('[Success] Get single customer', async t => {
|
|
const res = await g.request
|
|
.get('/admin/customer/view/' + g.customers[0]._id)
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(200);
|
|
|
|
// Check the returned customer matches ID
|
|
t.deepEqual(g.customers[0]._id.toString(), res.body._id);
|
|
});
|
|
|
|
test('[Fail] Customer login with incorrect email', async t => {
|
|
const res = await g.request
|
|
.post('/customer/login_action')
|
|
.send({
|
|
loginEmail: 'test1111@test.com',
|
|
loginPassword: 'test'
|
|
})
|
|
.expect(400);
|
|
t.deepEqual(res.body.message, 'A customer with that email does not exist.');
|
|
});
|
|
|
|
test('[Success] Customer login with correct email', async t => {
|
|
const res = await g.request
|
|
.post('/customer/login_action')
|
|
.send({
|
|
loginEmail: g.customers[0].email,
|
|
loginPassword: 'test'
|
|
})
|
|
.expect(200);
|
|
t.deepEqual(res.body.message, 'Successfully logged in');
|
|
});
|
|
|
|
test('[Success] Delete a customer', async t => {
|
|
const res = await g.request
|
|
.delete('/admin/customer')
|
|
.send({
|
|
customerId: g.customers[0]._id
|
|
})
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(200);
|
|
t.deepEqual(res.body.message, 'Customer deleted');
|
|
});
|
|
|
|
test('[Success] Failed deleting an incorrect customer', async t => {
|
|
const res = await g.request
|
|
.delete('/admin/customer')
|
|
.send({
|
|
customerId: g.customers[0]._id
|
|
})
|
|
.set('apiKey', g.users[0].apiKey)
|
|
.expect(400);
|
|
t.deepEqual(res.body.message, 'Failed to delete customer. Customer not found');
|
|
});
|