cache-service-redis.e2e-spec.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { CacheService, mergeConfig, RedisCachePlugin } from '@vendure/core';
  2. import { createTestEnvironment } from '@vendure/testing';
  3. import path from 'path';
  4. import { afterAll, beforeAll, describe, it } from 'vitest';
  5. import { initialData } from '../../../e2e-common/e2e-initial-data';
  6. import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
  7. import {
  8. deletesAKey,
  9. getReturnsUndefinedForNonExistentKey,
  10. invalidatesALargeNumberOfKeysByTag,
  11. invalidatesByMultipleTags,
  12. invalidatesBySingleTag,
  13. invalidatesManyByMultipleTags,
  14. setsAKey,
  15. setsArrayOfObjects,
  16. setsArrayValue,
  17. setsObjectValue,
  18. } from './fixtures/cache-service-shared-tests';
  19. describe('CacheService with RedisCachePlugin', () => {
  20. let cacheService: CacheService;
  21. const { server, adminClient } = createTestEnvironment(
  22. mergeConfig(testConfig(), {
  23. plugins: [
  24. RedisCachePlugin.init({
  25. redisOptions: {
  26. host: '127.0.0.1',
  27. port: process.env.CI ? +(process.env.E2E_REDIS_PORT || 6379) : 6379,
  28. },
  29. }),
  30. ],
  31. }),
  32. );
  33. beforeAll(async () => {
  34. await server.init({
  35. initialData,
  36. productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
  37. customerCount: 1,
  38. });
  39. await adminClient.asSuperAdmin();
  40. cacheService = server.app.get(CacheService);
  41. }, TEST_SETUP_TIMEOUT_MS);
  42. afterAll(async () => {
  43. await server.destroy();
  44. });
  45. it('get returns undefined for non-existent key', () =>
  46. getReturnsUndefinedForNonExistentKey(cacheService));
  47. it('sets a key', () => setsAKey(cacheService));
  48. it('sets an object value', () => setsObjectValue(cacheService));
  49. it('sets an array value', () => setsArrayValue(cacheService));
  50. it('sets an array of objects', () => setsArrayOfObjects(cacheService));
  51. it('deletes a key', () => deletesAKey(cacheService));
  52. it('invalidates by single tag', () => invalidatesBySingleTag(cacheService));
  53. it('invalidates by multiple tags', () => invalidatesByMultipleTags(cacheService));
  54. it('invalidates many by multiple tags', () => invalidatesManyByMultipleTags(cacheService));
  55. it('invalidates a large number of keys by tag', () => invalidatesALargeNumberOfKeysByTag(cacheService));
  56. });