File size: 1,157 Bytes
5a81b95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const { Sequelize } = require('sequelize');

class DatabaseTestHelper {
  constructor() {
    this.sequelize = new Sequelize({
      dialect: 'postgres',
      host: 'localhost',
      port: 5432,
      database: 'widgettdc_test',
      username: 'postgres',
      password: 'password',
      logging: false,
    });
  }

  async connect() {
    await this.sequelize.authenticate();
  }

  async disconnect() {
    await this.sequelize.close();
  }

  async clearDatabase() {
    await this.sequelize.query('TRUNCATE TABLE users, widgets CASCADE');
  }

  async createTestUser(overrides = {}) {
    const User = require('../../database/models/User')(this.sequelize);
    return await User.create({
      username: 'testuser',
      email: 'test@example.com',
      passwordHash: 'hashed_password',
      ...overrides,
    });
  }

  async createTestWidget(userId, overrides = {}) {
    const Widget = require('../../database/models/Widget')(this.sequelize);
    return await Widget.create({
      name: 'Test Widget',
      version: '1.0.0',
      price: 99.99,
      ownerId: userId,
      ...overrides,
    });
  }
}

module.exports = DatabaseTestHelper;