updating code using knex.
This commit is contained in:
@ -3,108 +3,115 @@ import { render, screen, fireEvent, act } from "@testing-library/react-native";
|
||||
import SettingsComponent from "@/components/Settings";
|
||||
import { language_matrix } from "@/app/i18n/api";
|
||||
import { Settings } from "@/app/lib/settings";
|
||||
import { getDb, migrateDb } from "@/app/lib/db";
|
||||
import { getDb } from "@/app/lib/db";
|
||||
import { Knex } from "knex";
|
||||
|
||||
const RENDER_TIME = 1000;
|
||||
|
||||
jest.mock("@/app/i18n/api", () => {
|
||||
class LanguageServer {
|
||||
fetchLanguages = () => {
|
||||
return {
|
||||
"en": {
|
||||
code: "en",
|
||||
name: "English",
|
||||
targets: [
|
||||
"fr",
|
||||
"es"
|
||||
]
|
||||
},
|
||||
"fr": {
|
||||
code: "fr",
|
||||
name: "French",
|
||||
targets: [
|
||||
"en",
|
||||
"es"
|
||||
]
|
||||
},
|
||||
"es": {
|
||||
code: "es",
|
||||
name: "Spanish",
|
||||
targets: [
|
||||
"en",
|
||||
"fr"
|
||||
]
|
||||
},
|
||||
} as language_matrix
|
||||
}
|
||||
}
|
||||
class Translator {
|
||||
translate = jest.fn((text : string, target : string) => {
|
||||
return "Hola, como estas?"
|
||||
})
|
||||
}
|
||||
return {
|
||||
LanguageServer,
|
||||
Translator,
|
||||
}
|
||||
})
|
||||
class LanguageServer {
|
||||
fetchLanguages = () => {
|
||||
return {
|
||||
en: {
|
||||
code: "en",
|
||||
name: "English",
|
||||
targets: ["fr", "es"],
|
||||
},
|
||||
fr: {
|
||||
code: "fr",
|
||||
name: "French",
|
||||
targets: ["en", "es"],
|
||||
},
|
||||
es: {
|
||||
code: "es",
|
||||
name: "Spanish",
|
||||
targets: ["en", "fr"],
|
||||
},
|
||||
} as language_matrix;
|
||||
};
|
||||
}
|
||||
class Translator {
|
||||
translate = jest.fn((text: string, target: string) => {
|
||||
return "Hola, como estas?";
|
||||
});
|
||||
}
|
||||
return {
|
||||
LanguageServer,
|
||||
Translator,
|
||||
};
|
||||
});
|
||||
|
||||
describe("SettingsComponent", () => {
|
||||
beforeEach(async() => {
|
||||
await migrateDb();
|
||||
const settings = await Settings.getDefault();
|
||||
await settings.setHostLanguage("en");
|
||||
await settings.setLibretranslateBaseUrl("https://example.com");
|
||||
})
|
||||
let db: Knex;
|
||||
let settings: Settings;
|
||||
|
||||
beforeAll(() => {
|
||||
jest.useFakeTimers();
|
||||
})
|
||||
beforeEach(async () => {
|
||||
db = await getDb("development");
|
||||
settings = new Settings(db);
|
||||
await settings.setHostLanguage("en");
|
||||
await settings.setLibretranslateBaseUrl("https://example.com");
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
jest.useRealTimers()
|
||||
})
|
||||
afterEach(async () => {
|
||||
await db.migrate.down();
|
||||
await db.destroy();
|
||||
});
|
||||
|
||||
test("renders correctly with initial settings", async () => {
|
||||
render(<SettingsComponent />);
|
||||
jest.advanceTimersByTime(RENDER_TIME);
|
||||
screen.debug();
|
||||
beforeAll(() => {
|
||||
jest.useFakeTimers();
|
||||
});
|
||||
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
afterAll(() => {
|
||||
jest.useRealTimers();
|
||||
});
|
||||
|
||||
// expect(screen.getByDisplayValue("English")).toBeTruthy();
|
||||
expect(screen.getByAccessibilityHint("libretranslate base url")).toBeTruthy();
|
||||
});
|
||||
test("renders correctly with initial settings", async () => {
|
||||
render(<SettingsComponent />);
|
||||
jest.advanceTimersByTime(RENDER_TIME);
|
||||
screen.debug();
|
||||
|
||||
test("updates host language setting when input changes", async () => {
|
||||
render(<SettingsComponent />);
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
// expect(screen.getByDisplayValue("English")).toBeTruthy();
|
||||
expect(
|
||||
screen.getByAccessibilityHint("libretranslate base url")
|
||||
).toBeTruthy();
|
||||
});
|
||||
|
||||
// Change the host language input value
|
||||
const picker = screen.getByAccessibilityHint("hostLanguage");
|
||||
fireEvent(picker, "onvalueChange", "es");
|
||||
expect(picker.props.selectedIndex).toStrictEqual(0);
|
||||
});
|
||||
test("updates host language setting when input changes", async () => {
|
||||
render(<SettingsComponent />);
|
||||
|
||||
test("updates LibreTranslate base URL setting when input changes", async () => {
|
||||
render(<SettingsComponent />);
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
|
||||
jest.advanceTimersByTime(RENDER_TIME)
|
||||
screen.debug();
|
||||
// Change the host language input value
|
||||
const picker = screen.getByAccessibilityHint("hostLanguage");
|
||||
fireEvent(picker, "onvalueChange", "es");
|
||||
expect(picker.props.selectedIndex).toStrictEqual(0);
|
||||
});
|
||||
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
test("updates LibreTranslate base URL setting when input changes", async () => {
|
||||
render(<SettingsComponent />);
|
||||
|
||||
// Change the LibreTranslate base URL input value
|
||||
fireEvent.changeText(screen.getByAccessibilityHint("libretranslate base url"), "http://new-example.com");
|
||||
jest.advanceTimersByTime(RENDER_TIME);
|
||||
jest.advanceTimersByTime(RENDER_TIME);
|
||||
screen.debug();
|
||||
|
||||
expect(screen.getByAccessibilityHint("libretranslate base url")).toBeTruthy();
|
||||
});
|
||||
});
|
||||
// Wait for the component to fetch and display the initial settings
|
||||
await screen.findByText(/Host Language:/i);
|
||||
await screen.findByText(/LibreTranslate Base URL:/i);
|
||||
|
||||
// Change the LibreTranslate base URL input value
|
||||
fireEvent.changeText(
|
||||
screen.getByAccessibilityHint("libretranslate base url"),
|
||||
"http://new-example.com"
|
||||
);
|
||||
jest.advanceTimersByTime(RENDER_TIME);
|
||||
|
||||
expect(
|
||||
screen.getByAccessibilityHint("libretranslate base url")
|
||||
).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user