fix: columns with transformer should be normalized for update (#5700) · typeorm/typeorm@4ef6b65

Original file line numberDiff line numberDiff line change

@@ -0,0 +1,42 @@

1+

import {expect} from "chai";

2+

import {Connection} from "../../../src/connection/Connection";

3+

import {createTestingConnections, reloadTestingDatabases, closeTestingConnections} from "../../utils/test-utils";

4+

import {Dummy} from "./entity/Dummy";

5+

import {WrappedString} from "./wrapped-string";

6+

import {MemoryLogger} from "./memory-logger";

7+
8+

describe.only("github issues > #2703 Column with transformer is not normalized for update", () => {

9+

let connections: Connection[];

10+
11+

before(async () => connections = await createTestingConnections({

12+

entities: [`${__dirname}/entity/*{.js,.ts}`],

13+

schemaCreate: true,

14+

dropSchema: true,

15+

createLogger: () => new MemoryLogger(false),

16+

}));

17+

beforeEach(() => reloadTestingDatabases(connections));

18+

after(() => closeTestingConnections(connections));

19+

afterEach(() => connections.forEach(connection => {

20+

const logger = connection.logger as MemoryLogger;

21+

logger.enabled = false;

22+

logger.clear();

23+

}));

24+
25+

it("should transform values when computing changed columns", () => Promise.all(connections.map(async connection => {

26+

const repository = connection.getRepository(Dummy);

27+
28+

const dummy = repository.create({

29+

value: new WrappedString("test"),

30+

});

31+

await repository.save(dummy);

32+
33+

const logger = connection.logger as MemoryLogger;

34+

logger.enabled = true;

35+
36+

await repository.save(dummy);

37+
38+

const updateQueries = logger.queries.filter(q => q.startsWith("UPDATE"));

39+
40+

expect(updateQueries).to.be.empty;

41+

})));

42+

});