You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sqlite/test/store.test.ts

54 lines
1.8 KiB

3 months ago
import { expect, test } from 'bun:test'
import ItemStore from './../resources/itemStore.ts'
import runMigrationSqlite from './../src/migration.ts'
import getOrCreateSqlite from './../src/sqlite.ts'
test('store', () => {
const db = getOrCreateSqlite({ 'name': ':memory:' })
const itemStore = new ItemStore(db)
expect(typeof itemStore === 'object').toBeTruthy();
})
test('store / insert', async () => {
const db = getOrCreateSqlite({ 'name': ':memory:' })
await runMigrationSqlite('./../resources', db)
const itemStore = new ItemStore(db)
const id = itemStore.create({ 'name': 'Lorem ipsum dolor', 'description': 'lore' })
const result = itemStore.findOneById(id)
expect(result).toEqual({ 'id': 1, 'name': 'Lorem ipsum dolor', 'description': 'lore', 'date_created_at': null, 'date_upated_at': null })
})
test('store / remove', async () => {
const db = getOrCreateSqlite({ 'name': ':memory:' })
await runMigrationSqlite('./../resources', db)
const itemStore = new ItemStore(db)
itemStore.create({ 'name': 'Lorem ipsum dolor', 'description': 'lore' })
const result = db.query("SELECT * FROM items").get()
itemStore.remove(result.id)
const emptyResult = db.query("SELECT * FROM items").get()
expect(emptyResult).toEqual(null)
})
test('store / update', async () => {
const db = getOrCreateSqlite({ 'name': ':memory:' })
await runMigrationSqlite('./../resources', db)
const itemStore = new ItemStore(db)
const id = itemStore.create({ 'name': 'Lorem ipsum dolor', 'description': 'lore' })
itemStore.update(id, { 'name': 'lore', 'description': 'Lorem ipsum dolor' })
const result = itemStore.findOneById(id)
expect(result).toEqual({ 'id': 1, 'name': 'lore', 'description': 'Lorem ipsum dolor', 'date_created_at': null, 'date_upated_at': null })
})