UNPKG

react-cookies

Version:

Load and save cookies with React

155 lines (125 loc) 4.59 kB
import cookie from '../src/cookie' describe('react-cookie', () => { beforeEach(() => { cookie.setRawCookie('') }) describe('load', () => { it('should not crash if cookies undefined', () => { expect(() => { cookie.setRawCookie(undefined) }).not.toThrowError() }) it('should load all cookiee', () => { cookie.setRawCookie('test=test') cookie.setRawCookie('test2=test2') expect(typeof cookie.loadAll()).toBe('object') }) it('should parse if an object', () => { cookie.setRawCookie('test={"test": true}') expect(cookie.load('test').test).toBe(true) }) it('should not parse if not an object', () => { cookie.setRawCookie('test=1230.00') expect(cookie.load('test')).toBe('1230.00') }) it('should not parse if we ask not to', () => { cookie.setRawCookie('test={"test": true}') expect(typeof cookie.load('test', true)).toBe('string') }) }) describe('select', () => { it('should not crash if cookies undefined', () => { expect(() => { cookie.setRawCookie(undefined) }).not.toThrow() expect(cookie.select(/^test/g)).toEqual({}) }) it('should select and read all the matching cookies into an object', () => { cookie.setRawCookie('test=foo;something=bar;foo=bar') expect(cookie.select(/(test|foo)/)).toEqual({test: 'foo', foo: 'bar'}) }) it('should read all cookies into an object if no parameter is passed', () => { cookie.setRawCookie('test=foo;something=bar;foo=bar') expect(cookie.select()).toEqual({test: 'foo', something: 'bar', foo: 'bar'}) }) }) describe('save', () => { it('should not crash if not in the browser', () => { expect(() => { cookie.save('test', 'test') }).not.toThrow() }) it('should update the value', () => { cookie.setRawCookie('test=test') expect(cookie.load('test')).toBe('test') cookie.save('test', 'other') expect(cookie.load('test')).not.toBe('test') }) it('should stringify an object', () => { cookie.setRawCookie('test=test') expect(cookie.load('test')).toBe('test') cookie.save('test', {test: true}) expect(typeof cookie.load('test')).toBe('object') }) }) describe('remove', () => { it('should do nothing if not in the browser', () => { expect(() => { cookie.remove('test') }).not.toThrow() }) }) describe('cookie', () => { describe('plugToRequest', () => { it('should load the request cookie', () => { cookie.plugToRequest({cookie: {test: 123}}) expect(cookie.load('test')).toBe(123) }) it('should load the request cookies', () => { cookie.plugToRequest({cookies: {test: 123}}) expect(cookie.load('test')).toBe(123) }) it('should load the raw cookie header', () => { cookie.plugToRequest({headers: {cookie: 'test=123'}}) expect(cookie.load('test')).toBe('123') }) it('should clear the cookies if their is none', () => { cookie.setRawCookie('test=123') expect(cookie.load('test')).toBe('123') cookie.plugToRequest({}) expect(cookie.load('test')).toBeUndefined() }) }) describe('unplug', () => { it('should return an unplug function', () => { const unplug = cookie.plugToRequest({headers: {cookie: 'test=123'}}) expect(typeof unplug).toBe('function') }) it('should save cookie on the request before unplugged', () => { const cookieFunc = jest.fn() const req = {headers: {cookie: 'test=123'}} const res = {headersSent: false, cookie: cookieFunc} cookie.plugToRequest(req, res) cookie.save('test2', 'test2') expect(cookieFunc).toHaveBeenCalled() }) it('should not change after head is sent', () => { const cookieFunc = jest.fn() const req = {headers: {cookie: 'test=123'}} const res = {headersSent: true, cookie: cookieFunc} cookie.plugToRequest(req, res) cookie.save('test2', 'test2') expect(cookieFunc).not.toHaveBeenCalled() }) it('should not change after unplugged', () => { const cookieFunc = jest.fn() const req = {headers: {cookie: 'test=123'}} const res = {headersSent: false, cookie: cookieFunc} const unplug = cookie.plugToRequest(req, res) unplug() cookie.save('test2', 'test2') expect(cookieFunc).not.toHaveBeenCalled() }) }) }) })