UNPKG

node-file-db

Version:
108 lines (100 loc) 4.03 kB
/** * @file 数据库单测 * @Author wangjie19 * @Date 2020-07-27 21:30:52 * @Last Modified by: wangjie19 * @Last Modified time: 2020-07-28 20:47:19 */ import path from 'path'; import fs from 'fs'; import control from '../lib/control'; import store from "../lib/redux/store"; import Table from '../lib/table'; describe('db test', () => { test('db root', () => { control.config({ root: path.resolve(__dirname, '../dbbase') }); const state = store.getState(); expect(state.root === path.resolve(__dirname, '../dbbase')).toBe(true); }); test('db create', () => { control.createDB('test').create('user'); const state = store.getState(); expect(fs.existsSync(path.resolve(state.root, state.db, `user.json`))).toBe(true); }); test('db', () => { control.db('test'); const state = store.getState(); expect(state.db).toBe('test'); }); test('dbs', () => { expect(control.dbs()).toEqual(['test']); }); test('create Table', () => { const state = store.getState(); control.db('test').create('logs'); expect(fs.existsSync(path.resolve(state.root, state.db, 'logs.json'))).toBe(true); }); test('content Table', () => { const table = (control.db('test').table('logs') as Table); expect(Array.isArray(table.data())).toBe(true); }); test('error Table', () => { const table = (control.db('test').table('logs11') as Error); expect(table.message === '表不存在').toBe(true); }); test('drop Table', () => { const state = store.getState(); control.db('test').drop('logs'); expect(fs.existsSync(path.resolve(state.root, state.db, 'logs.json'))).toBe(false); }); test('liet Table', () => { const table = (control.db('test').table('user') as Table); const list = table.data(); expect(Array.isArray(list)).toBe(true); }); test('insert Table', () => { const state = store.getState(); const table = (control.db('test').table('user') as Table); table.insert({name: 'wangjie', age: 30}); const json = (JSON.parse(fs.readFileSync(path.resolve(state.root, state.db, 'user.json'), {encoding: 'utf-8'})) as []); expect(json.some(item => { return JSON.stringify(item) === JSON.stringify({name: 'wangjie', age: 30}); })).toBe(true); }); test('where Table', () => { const userTable = (control.db('test').table('user') as Table); const result: object[] = userTable.where({name: 'wangjie'}); expect(result.every(item => { return item.name === 'wangjie'; })).toBe(true); }); test('update Table', () => { const state = store.getState(); const table = (control.db('test').table('user') as Table); table.update({name: 'wangjie'}, {name: 'walker', age: 99}); const json = (JSON.parse(fs.readFileSync(path.resolve(state.root, state.db, 'user.json'), {encoding: 'utf-8'})) as []); const result = json.find(item => { return Object.keys({name: 'walker', age: 99}).every(key => { return item[key] === {name: 'walker', age: 99}[key]; }); }); expect(Boolean(result)).toBe(true); }); test('delete row Table', () => { const userTable = (control.db('test').table('user') as Table); userTable.deleterow({name: 'walker'}); const json = (JSON.parse(fs.readFileSync(path.resolve(__dirname, '../db/test/user.json'), {encoding: 'utf-8'})) as []); const result = json.some(item => { return Object.keys({name: 'walker'}).every(key => { return item[key] === {name: 'walker'}[key]; }); }); expect(result).toBe(false); }); test('delete db ', () => { control.deleteDB('test'); expect(fs.existsSync(path.resolve(__dirname, `../db/test`))).toBe(false); }); });