import { describe, it, expect } from "vitest";
import { syncIntlFormatMessage } from "./syncIntlFormatMessage";
describe("syncIntlFormatMessage", () => {
it("updated false when given empty file and no translations", () => {
expect(
syncIntlFormatMessage({ fileContent: "", translations: {} })
).toEqual({ updated: false, fileContent: "" });
});
it("updates int.formatMessage components", () => {
expect(
syncIntlFormatMessage({
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "old message" })',
translations: { myKey: "new message" },
})
).toEqual({
updated: true,
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "new message" })',
});
});
it("updates multiline int.formatMessage", () => {
expect(
syncIntlFormatMessage({
fileContent: `intl.formatMessage({\n\tid: "myKey",\n\tdefaultMessage: "old message"\n })`,
translations: { myKey: "new message" },
})
).toEqual({
updated: true,
fileContent: `intl.formatMessage({\n\tid: "myKey",\n\tdefaultMessage: "new message"\n })`,
});
});
it("updates multiple int.formatMessage components", () => {
expect(
syncIntlFormatMessage({
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "old message" })' +
'intl.formatMessage({ id: "anotherKey", defaultMessage: "another old message" })',
translations: {
myKey: "new message",
anotherKey: "another new message",
},
})
).toEqual({
updated: true,
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "new message" })' +
'intl.formatMessage({ id: "anotherKey", defaultMessage: "another new message" })',
});
});
it("updates nothing if no key was found", () => {
const fileContent =
'intl.formatMessage({ id: "myKey", defaultMessage: "old message" })' +
'intl.formatMessage({ id: "anotherKey", defaultMessage: "another old message" })';
expect(
syncIntlFormatMessage({
fileContent,
translations: {
unusedKey: "new message",
},
})
).toEqual({
updated: false,
fileContent,
});
});
it("updates nothing if not using intl.formatMessage", () => {
const fileContent =
'formatMessage({ id: "myKey", defaultMessage: "old message" })';
expect(
syncIntlFormatMessage({
fileContent,
translations: {
myKey: "new message",
},
})
).toEqual({
updated: false,
fileContent,
});
});
it("updates nothing if no defaultMessage is present", () => {
const fileContent = 'formatMessage({ id: "myKey" })';
expect(
syncIntlFormatMessage({
fileContent,
translations: {
myKey: "new message",
},
})
).toEqual({
updated: false,
fileContent,
});
});
it("handles formatMessage with replacements", () => {
const fileContent =
'intl.formatMessage({ id: "myKey", defaultMessage: "old message" }, { stuff: (str) => {str} } })';
expect(
syncIntlFormatMessage({
fileContent,
translations: {
myKey: "new message",
},
})
).toEqual({
updated: true,
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "new message" }, { stuff: (str) => {str} } })',
});
});
it("handles formatMessage with replacements", () => {
const fileContent =
'intl.formatMessage({ id: "myKey", defaultMessage: "old message" }, { stuff: (str) => {str} } })';
expect(
syncIntlFormatMessage({
fileContent,
translations: {
myKey: "new message",
},
})
).toEqual({
updated: true,
fileContent:
'intl.formatMessage({ id: "myKey", defaultMessage: "new message" }, { stuff: (str) => {str} } })',
});
});
});