Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/graphql-toolset / src / __tests__ / keyValueCache.test.ts
Size: Mime:
import 'jest'
import { KeyValueCache } from '../KeyValueCache'

describe('basic cache functionality', () => {
  const keyValueCache = new KeyValueCache()

  beforeEach(() => {
    keyValueCache.clear()
  })

  it('can do a basic get and set', async () => {
    await keyValueCache.set('hello', 'world')
    expect(await keyValueCache.get('hello')).toBe('world')
    expect(await keyValueCache.get('missing')).toBeUndefined()
  })

  it('can do a basic set and delete', async () => {
    await keyValueCache.set('hello', 'world')
    expect(await keyValueCache.get('hello')).toBe('world')
    await keyValueCache.delete('hello')
    expect(await keyValueCache.get('hello')).toBeUndefined()
  })
})

describe.skip('time-based cache expunging', () => {
  const keyValueCache = new KeyValueCache()

  beforeAll(() => {
    // mockDate()
    jest.useFakeTimers()
  })

  beforeEach(() => {
    keyValueCache.clear()
  })

  afterAll(() => {
    // unmockDate()
    // keyValueCache.close()
  })

  it('is able to expire keys based on ttl', async () => {
    await keyValueCache.set('short', 's', { ttl: 1 })
    await keyValueCache.set('long', 'l', { ttl: 5 })
    expect(await keyValueCache.get('short')).toBe('s')
    expect(await keyValueCache.get('long')).toBe('l')
    // advanceTimeBy(1500)
    jest.advanceTimersByTime(1500)
    expect(await keyValueCache.get('short')).toBeUndefined()
    expect(await keyValueCache.get('long')).toBe('l')
    // advanceTimeBy(4000)
    jest.advanceTimersByTime(4000)
    expect(await keyValueCache.get('short')).toBeUndefined()
    expect(await keyValueCache.get('long')).toBeUndefined()
  })
})