UNPKG

pure-orm

Version:

A SQL Toolkit based on pure business objects passed to and from stateful data access objects

103 lines (102 loc) 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable max-len */ const index_1 = require("./index"); const entities_1 = require("../test-utils/order/entities"); test('getSqlInsertParts', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1, email: 'test@test.com', subtotalPrice: 100, utmSourceId: 10 }); expect(orm.getSqlInsertParts(order)).toEqual({ columns: '"id", "email", "subtotal_price", "utm_source_id"', values: [1, 'test@test.com', 100, 10], valuesVar: ['$1', '$2', '$3', '$4'] }); }); test('getSqlUpdateParts', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1, email: 'test@test.com', subtotalPrice: 100, utmSourceId: 10 }); expect(orm.getSqlUpdateParts(order)).toEqual({ clause: '"id" = $1, "email" = $2, "subtotal_price" = $3, "utm_source_id" = $4', idVar: '$5', values: [1, 'test@test.com', 100, 10, 1] }); }); test('getMatchingParts', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1, email: 'test@test.com', subtotalPrice: 100, utmSourceId: 10 }); expect(orm.getMatchingParts(order)).toEqual({ values: [1, 'test@test.com', 100, 10], whereClause: '"order"."id" = $1 AND "order"."email" = $2 AND "order"."subtotal_price" = $3 AND "order"."utm_source_id" = $4' }); }); test('getMatchingPartsObject', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1, email: 'test@test.com', subtotalPrice: 100, utmSourceId: 10 }); expect(orm.getMatchingPartsObject(order)).toEqual({ values: { 1: 1, 2: 'test@test.com', 3: 100, 4: 10 }, whereClause: '"order"."id" = $(1) AND "order"."email" = $(2) AND "order"."subtotal_price" = $(3) AND "order"."utm_source_id" = $(4)' }); }); test('getValueBySqlColumn', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1, email: 'test@test.com', subtotalPrice: 100, utmSourceId: 10 }); expect(orm.getValueBySqlColumn(order, 'id')).toEqual(1); expect(orm.getValueBySqlColumn(order, 'email')).toEqual('test@test.com'); expect(orm.getValueBySqlColumn(order, 'subtotal_price')).toEqual(100); expect(orm.getValueBySqlColumn(order, 'utm_source_id')).toEqual(10); }); test('getSqlColumnForPropertyName', () => { const orm = (0, index_1.create)({ entities: entities_1.entities, db: { $config: { pgp: true } } }); const order = new entities_1.entities[0].Model({ id: 1 }); expect(orm.getSqlColumnForPropertyName(order, 'id')).toEqual('id'); expect(orm.getSqlColumnForPropertyName(order, 'utmSourceId')).toEqual('utm_source_id'); expect(orm.getSqlColumnForPropertyName(order, 'browserIP')).toEqual('browser_ip'); });