Guest User

Untitled

a guest
Nov 20th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. /* tslint:disable:no-console */
  2. import { join } from 'path';
  3. import { readJsonFileSync } from '@feathers-plus/test-utils';
  4. import { App } from './app.interface'
  5. // !code: imports // !end
  6.  
  7. // Determine if command line argument exists for seeding data
  8. let ifSeedServices = ['--seed', '-s'].some(str => process.argv.slice(2).includes(str));
  9.  
  10. // Get generated fake data // todo: get from the app instance
  11. let fakeData = readJsonFileSync(join(__dirname, '../seeds/fake-data.json')) || {};
  12.  
  13. // Get generated services // todo: get from the app instance
  14. let services = (readJsonFileSync(join(__dirname, '../feathers-gen-specs.json')) || {}).services;
  15. // !code: init
  16. function areDbChangesAllowed(testConfig) {
  17. let { environmentsAllowingSeedData = [] } = testConfig
  18. return environmentsAllowingSeedData.includes(process.env.NODE_ENV);
  19. }
  20. // !end
  21.  
  22. export default async function (app: App) {
  23. // !code: func_init // !end
  24. if (!ifSeedServices) return;
  25. if (!areDbChangesAllowed(app.get("tests"))) return;
  26.  
  27. if (!Object.keys(fakeData).length) {
  28. console.log('Cannot seed services as seed/fake-data.json doesn\'t have seed data.');
  29. return;
  30. }
  31. if (!services || !Object.keys(services).length) {
  32. console.log('Cannot seed services as feathers-gen-specs.json has no services.');
  33. return;
  34. }
  35.  
  36. for (const serviceName in services) {
  37. if (services.hasOwnProperty(serviceName)) {
  38. const { name, adapter, path } = services[serviceName];
  39. // !<DEFAULT> code: seed_select
  40. const doSeed = adapter !== 'generic';
  41. // !end
  42.  
  43. if (doSeed) {
  44. if (fakeData[name] && fakeData[name].length) {
  45. try {
  46. const service = app.service(path);
  47.  
  48. // !<DEFAULT> code: seed_try
  49. const deleted = await service.remove(null);
  50. const result = await service.create(fakeData[name]);
  51. console.log(`Seeded service ${name} on path ${path} deleting ${deleted.length} records, adding ${result.length}.`);
  52. // !end
  53. } catch (err) {
  54. console.log(`Error on seeding service ${name} on path ${path}`, err.message);
  55. }
  56. } else {
  57. console.log(`Not seeding service ${name} on path ${path}. No seed data.`);
  58. }
  59. } else {
  60. console.log(`Not seeding generic service ${name} on path ${path}.`);
  61. }
  62. }
  63. }
  64. // !code: func_return // !end
  65. };
  66.  
  67. // !code: funcs // !end
  68. // !code: end // !end
Add Comment
Please, Sign In to add comment