From e7ae20370a5f50e93fb1f5f2641d94a237d97554 Mon Sep 17 00:00:00 2001 From: Bartek Date: Wed, 7 Jun 2017 19:29:13 +0200 Subject: [PATCH] fix github issue 521 related to typo in QB --- src/query-builder/QueryBuilder.ts | 2 +- test/github-issues/521/entity/Car.ts | 12 +++++++++++ test/github-issues/521/issue-521.ts | 32 ++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 test/github-issues/521/entity/Car.ts create mode 100644 test/github-issues/521/issue-521.ts diff --git a/src/query-builder/QueryBuilder.ts b/src/query-builder/QueryBuilder.ts index 8025d9ec3..66da62dbb 100644 --- a/src/query-builder/QueryBuilder.ts +++ b/src/query-builder/QueryBuilder.ts @@ -1405,7 +1405,7 @@ export class QueryBuilder { const updateSet = Object.keys(this.expressionMap.updateSet).map(key => key + "=:updateSet__" + key); const params = Object.keys(this.expressionMap.updateSet).reduce((object, key) => { // todo: map propertyNames to names ? - object["updateSet_" + key] = this.expressionMap.updateSet![key]; + object["updateSet__" + key] = this.expressionMap.updateSet![key]; return object; }, {} as ObjectLiteral); this.setParameters(params); diff --git a/test/github-issues/521/entity/Car.ts b/test/github-issues/521/entity/Car.ts new file mode 100644 index 000000000..9cee8660e --- /dev/null +++ b/test/github-issues/521/entity/Car.ts @@ -0,0 +1,12 @@ +import { Entity } from "../../../../src/decorator/entity/Entity"; +import { PrimaryGeneratedColumn } from "../../../../src/decorator/columns/PrimaryGeneratedColumn"; +import { Column } from "../../../../src/decorator/columns/Column"; + +@Entity() +export class Car { + @PrimaryGeneratedColumn() + id: number; + + @Column() + name: string; +} \ No newline at end of file diff --git a/test/github-issues/521/issue-521.ts b/test/github-issues/521/issue-521.ts new file mode 100644 index 000000000..40a748370 --- /dev/null +++ b/test/github-issues/521/issue-521.ts @@ -0,0 +1,32 @@ +import "reflect-metadata"; +import {createTestingConnections, closeTestingConnections, reloadTestingDatabases} from "../../utils/test-utils"; +import {Connection} from "../../../src/connection/Connection"; +import {expect} from "chai"; +import {Car} from "./entity/Car"; + +describe("github issues > #521 Attributes in UPDATE in QB arent getting replaced", () => { + + let connections: Connection[]; + before(async () => connections = await createTestingConnections({ + entities: [__dirname + "/entity/*{.js,.ts}"], + schemaCreate: true, + dropSchemaOnConnection: true, + })); + beforeEach(() => reloadTestingDatabases(connections)); + after(() => closeTestingConnections(connections)); + + it("should replace parameters", () => Promise.all(connections.map(async connection => { + + const qb = connection.getRepository(Car).createQueryBuilder("car"); + const [query, parameters] = qb + .update({ + name: "Honda", + }) + .where("name = :name", { + name: "Toyota", + }) + .getSqlWithParameters(); + return parameters.length.should.eql(2); + }))); + +});