Tests for <LangToggle/>
This commit is contained in:
parent
fbff82f00d
commit
d7377143ff
32
webpack/nav/__tests__/lang_toggle_test.tsx
Normal file
32
webpack/nav/__tests__/lang_toggle_test.tsx
Normal file
|
@ -0,0 +1,32 @@
|
|||
import * as React from "react";
|
||||
import { LangToggle } from "../lang_toggle";
|
||||
import { mount } from "enzyme";
|
||||
import { Session } from "../../session";
|
||||
import { BooleanSetting } from "../../session_keys";
|
||||
|
||||
describe("<LangToggle/>", () => {
|
||||
it("allows toggling between English and local i18n", () => {
|
||||
jest.mock("../../i18n", () => {
|
||||
return {
|
||||
detectLanguage: () => {
|
||||
return Promise.resolve({
|
||||
nsSeparator: "",
|
||||
keySeparator: "",
|
||||
lng: "es",
|
||||
resources: {
|
||||
es: { translation: {} }
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
let el = mount(<LangToggle />);
|
||||
expect(Session.getBool(BooleanSetting.DISABLE_I18N)).toBeFalsy();
|
||||
expect(el.text().toLocaleLowerCase()).toContain("set page to english");
|
||||
el.find("a").first().simulate("click");
|
||||
el.update();
|
||||
expect(Session.getBool(BooleanSetting.DISABLE_I18N)).toBeTruthy();
|
||||
expect(el.text().toLocaleLowerCase()).not.toContain("set page to english");
|
||||
expect(el.text().toLocaleLowerCase()).toContain("internationalize page");
|
||||
});
|
||||
});
|
35
webpack/nav/lang_toggle.tsx
Normal file
35
webpack/nav/lang_toggle.tsx
Normal file
|
@ -0,0 +1,35 @@
|
|||
import * as React from "react";
|
||||
import { Session } from "../session";
|
||||
import { BooleanSetting } from "../session_keys";
|
||||
|
||||
interface Props {
|
||||
|
||||
}
|
||||
|
||||
interface State {
|
||||
|
||||
}
|
||||
|
||||
export class LangToggle extends React.Component<Props, State> {
|
||||
state: State = {};
|
||||
|
||||
toggle = () => {
|
||||
Session.setBool(BooleanSetting.DISABLE_I18N, !this.disabled());
|
||||
this.setState({ clicked: true });
|
||||
};
|
||||
|
||||
disabled = () => Session.getBool(BooleanSetting.DISABLE_I18N);
|
||||
|
||||
verbiage() {
|
||||
return (this.disabled() ? "Internationalize Page" : "Set Page to English");
|
||||
}
|
||||
|
||||
render() {
|
||||
return <div>
|
||||
<a onClick={this.toggle} href={window.location.href}>
|
||||
<i className="fa fa-globe"></i>
|
||||
{this.verbiage()}
|
||||
</a>
|
||||
</div>;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue