Tests for <LangToggle/>

This commit is contained in:
Rick Carlino 2017-08-27 10:43:55 -05:00
parent fbff82f00d
commit d7377143ff
2 changed files with 67 additions and 0 deletions

View 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");
});
});

View 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>;
}
}