test-plugins.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { Query, Resolver } from '@nestjs/graphql';
  2. import { LanguageCode } from '@vendure/common/lib/generated-types';
  3. import gql from 'graphql-tag';
  4. import { APIExtensionDefinition, InjectorFn, VendureConfig, VendurePlugin } from '../../src/config';
  5. import { ConfigService } from '../../src/config/config.service';
  6. export class TestAPIExtensionPlugin implements VendurePlugin {
  7. extendShopAPI(): APIExtensionDefinition {
  8. return {
  9. resolvers: [TestShopPluginResolver],
  10. schema: gql`
  11. extend type Query {
  12. baz: [String]!
  13. }
  14. `,
  15. };
  16. }
  17. extendAdminAPI(): APIExtensionDefinition {
  18. return {
  19. resolvers: [TestAdminPluginResolver],
  20. schema: gql`
  21. extend type Query {
  22. foo: [String]!
  23. }
  24. `,
  25. };
  26. }
  27. }
  28. @Resolver()
  29. export class TestAdminPluginResolver {
  30. @Query()
  31. foo() {
  32. return ['bar'];
  33. }
  34. }
  35. @Resolver()
  36. export class TestShopPluginResolver {
  37. @Query()
  38. baz() {
  39. return ['quux'];
  40. }
  41. }
  42. export class TestPluginWithProvider implements VendurePlugin {
  43. extendShopAPI(): APIExtensionDefinition {
  44. return {
  45. resolvers: [TestResolverWithInjection],
  46. schema: gql`
  47. extend type Query {
  48. names: [String]!
  49. }
  50. `,
  51. };
  52. }
  53. defineProviders() {
  54. return [NameService];
  55. }
  56. }
  57. export class NameService {
  58. getNames(): string[] {
  59. return ['seon', 'linda', 'hong'];
  60. }
  61. }
  62. @Resolver()
  63. export class TestResolverWithInjection {
  64. constructor(private nameService: NameService) {}
  65. @Query()
  66. names() {
  67. return this.nameService.getNames();
  68. }
  69. }
  70. export class TestPluginWithConfigAndBootstrap implements VendurePlugin {
  71. constructor(private boostrapWasCalled: (arg: any) => void) {}
  72. configure(config: Required<VendureConfig>): Required<VendureConfig> {
  73. // tslint:disable-next-line:no-non-null-assertion
  74. config.defaultLanguageCode = LanguageCode.zh;
  75. return config;
  76. }
  77. onBootstrap(inject: InjectorFn) {
  78. const configService = inject(ConfigService);
  79. this.boostrapWasCalled(configService);
  80. }
  81. }
  82. export class TestPluginWithOnClose implements VendurePlugin {
  83. constructor(private onCloseCallback: () => void) {}
  84. onClose() {
  85. this.onCloseCallback();
  86. }
  87. }