| const db = require('../../src/persistence/sqlite'); | |
| const fs = require('fs'); | |
| const location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db'; | |
| const ITEM = { | |
| id: '7aef3d7c-d301-4846-8358-2a91ec9d6be3', | |
| name: 'Test', | |
| completed: false, | |
| }; | |
| beforeEach(() => { | |
| if (fs.existsSync(location)) { | |
| fs.unlinkSync(location); | |
| } | |
| }); | |
| test('it initializes correctly', async () => { | |
| await db.init(); | |
| }); | |
| test('it can store and retrieve items', async () => { | |
| await db.init(); | |
| await db.storeItem(ITEM); | |
| const items = await db.getItems(); | |
| expect(items.length).toBe(1); | |
| expect(items[0]).toEqual(ITEM); | |
| }); | |
| test('it can update an existing item', async () => { | |
| await db.init(); | |
| const initialItems = await db.getItems(); | |
| expect(initialItems.length).toBe(0); | |
| await db.storeItem(ITEM); | |
| await db.updateItem( | |
| ITEM.id, | |
| Object.assign({}, ITEM, { completed: !ITEM.completed }), | |
| ); | |
| const items = await db.getItems(); | |
| expect(items.length).toBe(1); | |
| expect(items[0].completed).toBe(!ITEM.completed); | |
| }); | |
| test('it can remove an existing item', async () => { | |
| await db.init(); | |
| await db.storeItem(ITEM); | |
| await db.removeItem(ITEM.id); | |
| const items = await db.getItems(); | |
| expect(items.length).toBe(0); | |
| }); | |
| test('it can get a single item', async () => { | |
| await db.init(); | |
| await db.storeItem(ITEM); | |
| const item = await db.getItem(ITEM.id); | |
| expect(item).toEqual(ITEM); | |
| }); | |