json-file-database
Version:
Lightweight Database on NodeJS by JSON Files
86 lines (85 loc) • 3.24 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = __importDefault(require("ava"));
const src_1 = require("../src");
const shared_1 = require("./shared");
(0, ava_1.default)('db-init', (t) => {
const db = (0, shared_1.connectDatabase)({
init: {
objs: [{ id: 114514, name: 'Koji Tadokoro' }],
},
});
const objs = db({
name: 'objs',
primaryKey: 'id',
});
t.true(objs.has(o => o.id === 123));
t.false(objs.has(o => o.id === 114514));
});
(0, ava_1.default)('no-save', (t) => __awaiter(void 0, void 0, void 0, function* () {
let notSaved = true;
const db = (0, shared_1.connectDatabase)({
onSaved() {
notSaved = false;
},
});
const objs = db({
name: 'objs',
primaryKey: 'id',
});
t.true(objs.has({ id: 123 }));
t.log('Sleep 50ms to make sure the database is not saved.');
yield (0, shared_1.sleep)(50);
t.true(notSaved);
}));
(0, ava_1.default)('save', (t) => __awaiter(void 0, void 0, void 0, function* () {
let saved = false;
const db = (0, shared_1.connectDatabase)({
onSaved() {
saved = true;
},
});
const objs = db({
name: 'objs',
primaryKey: 'id',
});
objs.insert({ id: 114514, name: 'Koji Tadokoro' });
t.log('Sleep 50ms to make sure the database is saved.');
yield (0, shared_1.sleep)(50);
t.true(saved);
}));
(0, ava_1.default)('example', (t) => {
t.log('Testing the example code in README.MD');
const usersArr = [
{ id: 1, name: 'San Zhang' },
{ id: 2, name: 'Si Li' },
{ id: 3, name: 'Wu Wang' },
];
const db = (0, src_1.connect)({
file: (0, src_1.createObjectFile)({ users: usersArr }),
});
const users = db({
name: 'users',
primaryKey: 'id',
});
t.deepEqual(users.find({ id: 1 }), { id: 1, name: 'San Zhang' });
t.deepEqual(users.findAll(u => u.id <= 2), usersArr.filter(u => u.id <= 2));
t.false(users.has({ id: 5 }));
t.false(users.insert({ id: 2, name: 'Liu Zhao' }));
t.deepEqual(Array.from(users), usersArr);
t.true(users.remove({ id: 1 }));
t.deepEqual(users.removeAll(u => u.id <= 2), 1);
t.true(users.update({ id: 3, name: 'Liu Zhao' }));
});