Home Reference Source Test

tests/adapters/CookieAdapter.test.js

import Cookies from 'js-cookie';
import { CookieAdapter } from './../../src/adapters';

describe('Test CookieAdapter', () => {
    let setSpy;
    let removeSpy;
    let getSpy;

    beforeEach(() => {
        setSpy = jest.spyOn(Cookies, 'set');
        removeSpy = jest.spyOn(Cookies, 'remove');
        getSpy = jest.spyOn(Cookies, 'get');
    });

    it('communicate with Cookie service', () => {
        const adapter = new CookieAdapter();
        adapter.setItem('a', 1);
        adapter.getItem('a');
        adapter.removeItem('a');

        expect(setSpy).toHaveBeenCalledWith('a', 1, {});
        expect(removeSpy).toHaveBeenCalledWith('a', {});
        expect(getSpy).toHaveBeenCalledWith('a');
    });

    it('set expire date based on value', () => {
        const adapter = new CookieAdapter({
            expires: 1,
        });

        const now = Date.now();

        const valueToSet = JSON.stringify({
            expire: now,
            value: 'some-value',
        });

        adapter.setItem('some-key', valueToSet);

        const expire = new Date();
        expire.setTime(now);

        expect(setSpy).toHaveBeenCalledWith('some-key', valueToSet, {
            expires: expire,
        });
    });

    it('appends options to set and remove methods', () => {
        const adapter = new CookieAdapter({
            path: 'some-path',
        });
        adapter.setItem('a', 1);
        adapter.removeItem('a');
        expect(setSpy).toHaveBeenCalledWith('a', 1, {
            path: 'some-path',
        });
        expect(removeSpy).toHaveBeenCalledWith('a', {
            path: 'some-path',
        });
    });
});