node-tenancy
Version:
Making multi-tenancy easier with Node.js & typescript
71 lines (54 loc) • 2.06 kB
JavaScript
const {MongoClient} = require('mongodb');
const {db} = require('../index');
const {Sequelize} = require('sequelize');
function mongoTenantMock() {
let connection;
let db_connection;
beforeAll(async () => {
connection = await MongoClient.connect(process.env.DB_CONNECTION, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
db_connection = await connection.db(process.env.DB_NAME);
});
afterAll(async () => {
await connection.close();
});
it('should create tenant mock', async () => {
const tenants = db_connection.collection('tenants');
const mockTenant = {_id: 'testing-tenant', name: 'testing', 'domains': ['testing']};
await tenants.insertOne(mockTenant);
const insertedTenant = await tenants.findOne({_id: 'some-user-id'});
const mockFunction = await jest.fn(db.resolveTenantConnection(process.env.DB_CONNECTION, process.env.DB_NAME));
expect(insertedTenant).toEqual(mockTenant);
expect(mockFunction.mock.results[0].value.name).toBe(process.env.DB_NAME);
});
}
function sqlTenantMock() {
let connection;
beforeAll(async () => {
connection = await new Sequelize(process.env.DB_CONNECTION, {
database: process.env.DB_NAME,
});
});
afterAll(async () => {
await connection.close();
});
it('should create tenant mock', async () => {
const tenant_model = require('../src/schemas/sql/Tenant');
tenant_model(connection);
const mockTenant = {
id: '61d66d7a-d0e5-48fa-bc17-efdf3f6d097c',
name: 'testing',
db_connection: process.env.DB_CONNECTION,
db_name: process.env.DB_NAME,
};
await connection.models.Tenant.create(mockTenant);
await connection.models.Tenant.count().then((count) => {
expect(count).toBeGreaterThanOrEqual(1);
});
const mockFunction = await jest.fn(db.resolveTenantConnection(process.env.DB_CONNECTION, process.env.DB_NAME));
expect(mockFunction.mock.results[0].value.name).toBe(process.env.DB_NAME);
});
}
module.exports = {mongoTenantMock, sqlTenantMock};