Skip to content

Commit

Permalink
Added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alejandroledesma committed Feb 7, 2020
1 parent 7b14b24 commit f1e6e1c
Show file tree
Hide file tree
Showing 8 changed files with 2,356 additions and 8,452 deletions.
9 changes: 9 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"presets": [
"@babel/react",
"@babel/env",
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
40 changes: 0 additions & 40 deletions index.js

This file was deleted.

62 changes: 28 additions & 34 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,65 +4,59 @@
"version": "1.0.0",
"description": "Vuejs local/sesion storage",
"license": "MIT",
"homepage": "https://vue-wstorage.waavi.com",
"repository": "waavi/vue-wstorage",
"homepage": "https://waavi.com",
"repository": {
"type": "git",
"url": "git+https://github.com/Waavi/vue-wstorage"
},
"bugs": {
"url": "https://github.com/Waavi/vue-wstorage/issues"
},
"keywords": [
"vue",
"vuejs",
"vuestorage",
"vue-wstorage",
"localstorage",
"sessionstorage",
"storage"
],
"scripts": {
"serve": "vue-cli-service serve --open demo/main.js",
"build": "vue-cli-service build --target lib --name vue-wstorage src/index.js",
"build:docs": "vuepress build docs",
"serve:docs": "vuepress dev docs",
"test": "vue-cli-service test:unit",
"test:debug": "node --inspect-brk node_modules/.bin/vue-cli-service test:unit --no-cache --watch --runInBand",
"lint": "vue-cli-service lint",
"stylelint": "node_modules/stylelint/bin/stylelint.js ./src --formatter verbose",
"validate": "yarn lint && yarn stylelint && yarn test",
"prepublishOnly": "yarn run validate && yarn run build && rm dist/demo.html"
"test": "jest",
"prepublishOnly": "yarn test"
},
"main": "index.js",
"main": "src/index.js",
"unpkg": "dist/vue-wstorage.umd.min.js",
"jsDelivr": "dist/vue-wstorage.umd.min.js",
"files": [
"dist",
"src"
],
"peerDependencies": {
"vue": "^2.5.0"
"jest": {
"setupFiles": [
"jest-localstorage-mock"
]
},
"devDependencies": {
"@vue/babel-preset-app": "^4.0.0-alpha.1",
"@vue/cli-plugin-babel": "^3.5.0",
"@vue/cli-plugin-eslint": "^3.5.0",
"@vue/cli-plugin-unit-jest": "^3.5.0",
"@vue/cli-service": "^3.5.0",
"@vue/eslint-config-airbnb": "^4.0.0",
"@vue/eslint-config-standard": "^4.0.0",
"@vue/test-utils": "1.0.0-beta.29",
"babel-core": "7.0.0-bridge.0",
"@babel/core": "^7.8.4",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.8.3",
"@babel/preset-env": "^7.8.4",
"@babel/preset-react": "^7.8.3",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"babel-jest": "^25.1.0",
"babel-loader": "^8.0.6",
"coveralls": "^3.0.6",
"eslint": "^5.8.0",
"eslint-plugin-vue": "^5.0.0",
"eslint-plugin-vue-types": "^1.0.0",
"eslint-plugin-vue-libs": "^4.0.0",
"jest": "^25.1.0",
"jest-localstorage-mock": "^2.4.0",
"lint-staged": "^8.1.4",
"node-sass": "^4.9.0",
"sass-loader": "^7.1.0",
"vue": "^2.6.6",
"vue-sauce": "^1.0.2",
"vue-template-compiler": "^2.5.21"
"vue": "^2.6.11"
},
"gitHooks": {
"pre-push": "yarn validate"
},
"dependencies": {
"babel-preset-es2015": "^6.24.1"
}
}
}
6 changes: 5 additions & 1 deletion src/Storage.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { STORAGES } from './utils'
const STORAGES = {
local: 'localStorage',
session: 'sessionStorage',
default: 'localStorage',
}

export default class Storage {
/**
Expand Down
48 changes: 47 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
@@ -1 +1,47 @@
export { default as WStorage } from './WStorage'
/* eslint-disable no-param-reassign */
import WStorage from './WStorage'

const defaultProps = {
name: 'storage',
key: 'wstorage',
storage: 'local',
isSupported: true,
}

export default {
/**
* Install vue-wstorage plugin
*
* @param {Vue} Vue
* @param {Object} options
*/
install: (Vue, options = {}) => {
if (typeof process !== 'undefined' && (process.server || process.SERVER_BUILD || (process.env && process.env.VUE_ENV === 'server'))) return

const { name, key, storage } = options
const props = {
...defaultProps,
name: name || defaultProps.name,
key: key || defaultProps.key,
storage: storage || defaultProps.storage,
}

try {
const test = 'vue-wstorage-test'
window.localStorage.setItem(test, test)
window.localStorage.removeItem(test)
} catch (e) {
props.isSupported = false
console.error('Local or Session storage is not supported')
}

Vue[props.name] = new WStorage(props)
Vue.prototype[`$${props.name}`] = new WStorage(props)
},
/**
* Create vue-wstorage instance
*
* @param {Object} props
*/
initialize: (props = {}) => new WStorage({ ...defaultProps, ...props }),
}
9 changes: 0 additions & 9 deletions src/utils/index.js

This file was deleted.

92 changes: 92 additions & 0 deletions tests/WStorage.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import WStorage from '../src'

const user = {
name: 'Foo',
surname: 'Demo',
}

describe('WStorage local', () => {
const $storage = WStorage.initialize()

beforeEach($storage.session.clean)

it('Should be set and get value', () => {
$storage.local.set('user', user)
expect($storage.local.get('user')).toEqual(user)
})

it('Should be remove value', () => {
$storage.local.set('user', user)
expect($storage.local.get('user')).toEqual(user)
$storage.local.remove('user')
expect($storage.local.get('user')).toEqual(undefined)
})

it('Should be clean all value', () => {
$storage.local.set('user', user)
expect($storage.local.get('user')).toEqual(user)
$storage.local.clean()
expect($storage.local.get('user')).toEqual(undefined)
})
})

describe('WStorage session', () => {
const $storage = WStorage.initialize()

beforeEach($storage.session.clean)

it('Should be set and get value', () => {
$storage.session.set('user', user)
expect($storage.session.get('user')).toEqual(user)
})

it('Should be remove value', () => {
$storage.session.set('user', user)
expect($storage.session.get('user')).toEqual(user)
$storage.session.remove('user')
expect($storage.session.get('user')).toEqual(undefined)
})

it('Should be clean all value', () => {
$storage.session.set('user', user)
expect($storage.session.get('user')).toEqual(user)
$storage.session.clean()
expect($storage.session.get('user')).toEqual(undefined)
})
})

describe('WStorage is not supported', () => {
const $storage = WStorage.initialize({
isSupported: false,
});

beforeEach($storage.session.clean);

it('Should be set and get value returned null', () => {
$storage.session.set('user', user);
expect($storage.session.get('user')).toEqual(null);
});

it('Should be remove value returned null', () => {
$storage.session.set('user', user);
expect($storage.session.get('user')).toEqual(null);
$storage.session.remove('user');
expect($storage.session.get('user')).toEqual(null);
});

it('Should be clean all value returned null', () => {
$storage.session.set('user', user);
expect($storage.session.get('user')).toEqual(null);
$storage.session.clean();
expect($storage.session.get('user')).toEqual(null);
});
});

describe('WStorage install', () => {
let VueMock = () => {}
const $storage = WStorage.install(VueMock);

it('Should be install library in Vue instance', () => {
expect(VueMock.prototype.$storage).toBeTruthy();
});
});
Loading

0 comments on commit f1e6e1c

Please sign in to comment.