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.
55 lines
1.9 KiB
55 lines
1.9 KiB
import { expect, test } from 'bun:test'
|
|
import path from 'path'
|
|
|
|
import ItemStore from './../resources/itemStore.ts'
|
|
import runMigrationSqlite from './../src/migration.ts'
|
|
import getOrCreateSqlite from './../src/sqlite.ts'
|
|
|
|
test('store', () => {
|
|
const db = getOrCreateSqlite({ 'uri': ':memory:' })
|
|
const itemStore = new ItemStore(db)
|
|
|
|
expect(typeof itemStore === 'object').toBeTruthy();
|
|
})
|
|
|
|
test('store / insert', async () => {
|
|
const db = getOrCreateSqlite({ 'uri': ':memory:' })
|
|
|
|
await runMigrationSqlite(path.join(__dirname, './../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({ 'uri': ':memory:' })
|
|
|
|
await runMigrationSqlite(path.join(__dirname, './../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({ 'uri': ':memory:' })
|
|
|
|
await runMigrationSqlite(path.join(__dirname, './../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 })
|
|
})
|