12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict';
- const chai = require('chai');
- const jetpack = require('fs-jetpack').cwd(__dirname);
- const expect = chai.expect;
- const Support = require('../../support');
- const dialect = Support.getTestDialect();
- const { DataTypes } = require('@sequelize/core');
- const fileName = `${Math.random()}_test.sqlite`;
- const directoryName = `${Math.random()}_test_directory`;
- const nestedFileName = jetpack.path(directoryName, 'subdirectory', 'test.sqlite');
- if (dialect === 'sqlite3') {
- describe('[SQLITE Specific] Connection Manager', () => {
- after(() => {
- jetpack.remove(fileName);
- jetpack.remove(directoryName);
- });
- it('close connection and remove journal and wal files', async function () {
- const sequelize = Support.createSingleTestSequelizeInstance({
- storage: jetpack.path(fileName),
- });
- const User = sequelize.define('User', { username: DataTypes.STRING });
- await User.sync({ force: true });
- await sequelize.query('PRAGMA journal_mode = WAL');
- await User.create({ username: 'user1' });
- await sequelize.transaction(transaction => {
- return User.create({ username: 'user2' }, { transaction });
- });
- expect(jetpack.exists(fileName)).to.equal('file');
- expect(jetpack.exists(`${fileName}-shm`), 'shm file should exists').to.equal('file');
- expect(jetpack.exists(`${fileName}-wal`), 'wal file should exists').to.equal('file');
- // move wal file content to main database
- // so those files can be removed on connection close
- // https://www.sqlite.org/wal.html#ckpt
- await sequelize.query('PRAGMA wal_checkpoint');
- // wal, shm files exist after checkpoint
- expect(jetpack.exists(`${fileName}-shm`), 'shm file should exists').to.equal('file');
- expect(jetpack.exists(`${fileName}-wal`), 'wal file should exists').to.equal('file');
- await sequelize.close();
- expect(jetpack.exists(fileName)).to.equal('file');
- expect(jetpack.exists(`${fileName}-shm`), 'shm file exists').to.be.false;
- expect(jetpack.exists(`${fileName}-wal`), 'wal file exists').to.be.false;
- await this.sequelize.query('PRAGMA journal_mode = DELETE');
- });
- it('automatic path provision for `options.storage`', async () => {
- const sequelize = await Support.createSingleTestSequelizeInstance({
- storage: nestedFileName,
- });
- await sequelize.define('User', { username: DataTypes.STRING }).sync({ force: true });
- expect(jetpack.exists(nestedFileName)).to.equal('file');
- await sequelize.close();
- });
- });
- }
|