generator-sails-rest-api
Version:
Yeoman generator that provides already configured and optimized Sails REST API with bundle of predefined features
405 lines (353 loc) • 13.9 kB
JavaScript
;
const path = require('path');
const assert = require('yeoman-assert');
const test = require('yeoman-test');
describe('sails-rest-api:service', () => {
describe('Should properly scaffold services without any options or arguments', () => {
before(() => test.run(path.join(__dirname, '../../generators/service')));
it('Should properly create api files', () => {
assert.file([
'api/services/CipherService.js',
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/CipherService.js', /const cipher = require\('sails-service-cipher'\)/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/cipher.js',
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/cipher.js', /secretKey: 'DEFAULT_SECRET_KEY'/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CipherService.test.js',
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
assert.fileContent('test/unit/services/CipherService.test.js', /const CipherService = require\('\.\.\/\.\.\/\.\.\/api\/services\/CipherService'\);/)
});
});
describe('Should properly scaffold predefined service', () => {
before(() => {
return test
.run(path.join(__dirname, '../../generators/service'))
.withArguments(['cipher'])
});
it('Should properly create api files', () => {
assert.file([
'api/services/CipherService.js'
]);
assert.noFile([
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/CipherService.js', /const cipher = require\('sails-service-cipher'\)/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/cipher.js'
]);
assert.noFile([
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/cipher.js', /secretKey: 'DEFAULT_SECRET_KEY'/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CipherService.test.js'
]);
assert.noFile([
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
assert.fileContent('test/unit/services/CipherService.test.js', /const CipherService = require\('\.\.\/\.\.\/\.\.\/api\/services\/CipherService'\);/)
});
});
describe('Should properly scaffold overridden predefined service', () => {
before(() => {
return test
.run(path.join(__dirname, '../../generators/service'))
.withArguments(['cipher'])
.withOptions({
'new': true
})
});
it('Should properly create api files', () => {
assert.file([
'api/services/CipherService.js'
]);
assert.noFile([
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/CipherService.js', /module.exports = \{\}/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/cipher.js'
]);
assert.noFile([
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/cipher.js', /cipher: \{\}/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CipherService.test.js'
]);
assert.noFile([
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
assert.fileContent('test/unit/services/CipherService.test.js', /const Service = require\('\.\.\/\.\.\/\.\.\/api\/services\/CipherService'\);/)
});
});
describe('Should properly scaffold custom service', () => {
before(() => {
return test
.run(path.join(__dirname, '../../generators/service'))
.withArguments(['CustomService'])
});
it('Should properly create api files', () => {
assert.file([
'api/services/CustomService.js'
]);
assert.noFile([
'api/services/CipherService.js',
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/CustomService.js', /module.exports = \{\}/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/custom.js'
]);
assert.noFile([
'config/services/cipher.js',
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/custom.js', /custom: \{\}/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CustomService.test.js'
]);
assert.noFile([
'test/unit/services/CipherService.test.js',
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
assert.fileContent('test/unit/services/CustomService.test.js', /const Service = require\('\.\.\/\.\.\/\.\.\/api\/services\/CustomService'\);/)
});
});
describe('Should properly scaffold all predefined services at once', () => {
before(() => {
return test
.run(path.join(__dirname, '../../generators/service'))
.withOptions({
'all': true
})
});
it('Should properly create api files', () => {
assert.file([
'api/services/CipherService.js',
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/CipherService.js', /const cipher = require\('sails-service-cipher'\)/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/cipher.js',
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/cipher.js', /secretKey: 'DEFAULT_SECRET_KEY'/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CipherService.test.js',
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
assert.fileContent('test/unit/services/CipherService.test.js', /const CipherService = require\('\.\.\/\.\.\/\.\.\/api\/services\/CipherService'\);/)
});
});
describe('Should properly scaffolds all predefined services with custom options', () => {
before(() => {
return test
.run(path.join(__dirname, '../../generators/service'))
.withOptions({
'cipher-secret-key': '1234567890',
'image-provider': 'IM',
'location-provider': 'FreeGeoIP',
'mailer-provider': 'SMTP',
'payment-provider': 'BrainTree',
'sms-provider': 'Twilio',
'storage-provider': 'Local',
'all': true
})
});
it('Should properly create api files', () => {
assert.file([
'api/services/CipherService.js',
'api/services/HashService.js',
'api/services/ImageService.js',
'api/services/LocationService.js',
'api/services/MailerService.js',
'api/services/PaymentService.js',
'api/services/PusherService.js',
'api/services/SmsService.js',
'api/services/SocialService.js',
'api/services/StorageService.js'
]);
assert.fileContent('api/services/ImageService.js', /image\('IM'/);
assert.fileContent('api/services/LocationService.js', /location\('FreeGeoIP'/);
assert.fileContent('api/services/MailerService.js', /mailer\('SMTP'/);
assert.fileContent('api/services/PaymentService.js', /payment\('BrainTree'/);
assert.fileContent('api/services/SmsService.js', /sms\('Twilio'/);
assert.fileContent('api/services/StorageService.js', /storage\('Local'/);
});
it('Should properly create config files', () => {
assert.file([
'config/services/cipher.js',
'config/services/hash.js',
'config/services/image.js',
'config/services/location.js',
'config/services/mailer.js',
'config/services/payment.js',
'config/services/pusher.js',
'config/services/sms.js',
'config/services/social.js',
'config/services/storage.js'
]);
assert.fileContent('config/services/cipher.js', /secretKey: '1234567890'/);
});
it('Should properly create test files', () => {
assert.file([
'test/unit/services/CipherService.test.js',
'test/unit/services/HashService.test.js',
'test/unit/services/ImageService.test.js',
'test/unit/services/LocationService.test.js',
'test/unit/services/MailerService.test.js',
'test/unit/services/PaymentService.test.js',
'test/unit/services/PusherService.test.js',
'test/unit/services/SmsService.test.js',
'test/unit/services/SocialService.test.js',
'test/unit/services/StorageService.test.js'
]);
});
});
});