diff --git a/src/core/client/auth/test/__snapshots__/navigation.spec.tsx.snap b/src/core/client/auth/test/__snapshots__/navigation.spec.tsx.snap
new file mode 100644
index 000000000..c3c5fe4ed
--- /dev/null
+++ b/src/core/client/auth/test/__snapshots__/navigation.spec.tsx.snap
@@ -0,0 +1,431 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`navigates to forgot password form 1`] = `
+
+
+
+`;
+
+exports[`navigates to sign in form 1`] = `
+
+
+
+`;
+
+exports[`navigates to sign up form 1`] = `
+
+
+
+`;
+
+exports[`renders sign in form 1`] = `
+
+
+
+`;
diff --git a/src/core/client/auth/test/__snapshots__/signIn.spec.tsx.snap b/src/core/client/auth/test/__snapshots__/signIn.spec.tsx.snap
index 2f6fa4225..cb01d2c1b 100644
--- a/src/core/client/auth/test/__snapshots__/signIn.spec.tsx.snap
+++ b/src/core/client/auth/test/__snapshots__/signIn.spec.tsx.snap
@@ -104,8 +104,23 @@ exports[`accepts correct password 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -217,8 +232,23 @@ exports[`accepts valid email 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -343,8 +373,23 @@ exports[`checks for invalid email 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -443,8 +488,23 @@ exports[`renders sign in form 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -569,8 +629,23 @@ exports[`shows error when submitting empty form 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -669,8 +744,23 @@ exports[`shows server error 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -774,8 +864,23 @@ exports[`shows server error 2`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -874,8 +979,23 @@ exports[`submits form successfully 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
@@ -974,8 +1094,23 @@ exports[`submits form successfully 2`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Don't have an account? <button>Sign Up</button>
+ Don't have an account?
+
diff --git a/src/core/client/auth/test/__snapshots__/signUp.spec.tsx.snap b/src/core/client/auth/test/__snapshots__/signUp.spec.tsx.snap
index 5a54d6e21..6293da7d8 100644
--- a/src/core/client/auth/test/__snapshots__/signUp.spec.tsx.snap
+++ b/src/core/client/auth/test/__snapshots__/signUp.spec.tsx.snap
@@ -94,7 +94,7 @@ exports[`accepts correct password 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -260,7 +275,7 @@ exports[`accepts correct password confirmation 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -426,7 +456,7 @@ exports[`accepts valid email 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -592,7 +637,7 @@ exports[`accepts valid username 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -771,7 +831,7 @@ exports[`checks for invalid characters in username 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -950,7 +1025,7 @@ exports[`checks for invalid email 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1114,7 +1204,7 @@ exports[`checks for too long username 1`] = `
warning
- Usernames cannot be longer than {$maxLength} characters.
+ Usernames cannot be longer than 20 characters.
@@ -1129,7 +1219,7 @@ exports[`checks for too long username 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1308,7 +1413,7 @@ exports[`checks for too short password 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Password must contain at least {$minLength} characters.
+ Password must contain at least 8 characters.
@@ -1384,8 +1489,23 @@ exports[`checks for too short password 1`] = `
className="Flex-root Typography-root Typography-bodyCopy Typography-colorTextPrimary Flex-flex"
>
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1472,7 +1592,7 @@ exports[`checks for too short username 1`] = `
warning
- Usernames must contain at least {$minLength} characters.
+ Username must contain at least 3 characters.
@@ -1487,7 +1607,7 @@ exports[`checks for too short username 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1666,7 +1801,7 @@ exports[`checks for wrong password confirmation 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1819,7 +1969,7 @@ exports[`renders sign up form 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -1972,7 +2137,7 @@ exports[`shows error when submitting empty form 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -2125,7 +2305,7 @@ exports[`shows server error 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -2257,7 +2452,7 @@ exports[`shows server error 2`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -2384,7 +2594,7 @@ exports[`submits form successfully 1`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
@@ -2511,7 +2736,7 @@ exports[`submits form successfully 2`] = `
- Must be at least {$minLength} characters
+ Must be at least 8 characters
- Already have an account? <button>Sign In </button>
+ Already have an account?
+
diff --git a/src/core/client/auth/test/createFluentBundle.ts b/src/core/client/auth/test/createFluentBundle.ts
new file mode 100644
index 000000000..93f9a400d
--- /dev/null
+++ b/src/core/client/auth/test/createFluentBundle.ts
@@ -0,0 +1,10 @@
+import path from "path";
+
+import { createFluentBundle } from "talk-framework/testHelpers";
+
+export default function create() {
+ return createFluentBundle(
+ "auth",
+ path.resolve(__dirname, "../../../../locales/en-US")
+ );
+}
diff --git a/src/core/client/auth/test/navigation.disabledspec.tsx b/src/core/client/auth/test/navigation.spec.tsx
similarity index 55%
rename from src/core/client/auth/test/navigation.disabledspec.tsx
rename to src/core/client/auth/test/navigation.spec.tsx
index 0abf24548..36ba888d8 100644
--- a/src/core/client/auth/test/navigation.disabledspec.tsx
+++ b/src/core/client/auth/test/navigation.spec.tsx
@@ -1,7 +1,7 @@
// Enable after this is solved: https://github.com/projectfluent/fluent.js/issues/280
import React from "react";
-import TestRenderer from "react-test-renderer";
+import TestRenderer, { ReactTestRenderer } from "react-test-renderer";
import { RecordProxy } from "relay-runtime";
import AppContainer from "talk-auth/containers/AppContainer";
@@ -11,33 +11,37 @@ import { RestClient } from "talk-framework/lib/rest";
import { createInMemoryStorage } from "talk-framework/lib/storage";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
-const environment = createEnvironment({
- initLocalState: (localRecord: RecordProxy) => {
- localRecord.setValue("SIGN_IN", "view");
- },
-});
+function createTestRenderer(initialView: string): ReactTestRenderer {
+ const environment = createEnvironment({
+ initLocalState: (localRecord: RecordProxy) => {
+ localRecord.setValue(initialView, "view");
+ },
+ });
-const context: TalkContext = {
- relayEnvironment: environment,
- localeBundles: [],
- localStorage: createInMemoryStorage(),
- sessionStorage: createInMemoryStorage(),
- rest: new RestClient("http://localhost/api"),
- postMessage: new PostMessageService(),
-};
-
-const testRenderer = TestRenderer.create(
-
-
-
-);
+ const context: TalkContext = {
+ relayEnvironment: environment,
+ localeBundles: [createFluentBundle()],
+ localStorage: createInMemoryStorage(),
+ sessionStorage: createInMemoryStorage(),
+ rest: new RestClient("http://localhost/api"),
+ postMessage: new PostMessageService(),
+ };
+ return TestRenderer.create(
+
+
+
+ );
+}
it("renders sign in form", async () => {
+ const testRenderer = createTestRenderer("SIGN_IN");
expect(testRenderer.toJSON()).toMatchSnapshot();
});
it("navigates to sign up form", async () => {
+ const testRenderer = createTestRenderer("SIGN_IN");
testRenderer.root
.findByProps({ id: "signIn-gotoSignUpButton" })
.props.onClick();
@@ -45,6 +49,7 @@ it("navigates to sign up form", async () => {
});
it("navigates to sign in form", async () => {
+ const testRenderer = createTestRenderer("SIGN_UP");
testRenderer.root
.findByProps({ id: "signUp-gotoSignInButton" })
.props.onClick();
@@ -52,6 +57,7 @@ it("navigates to sign in form", async () => {
});
it("navigates to forgot password form", async () => {
+ const testRenderer = createTestRenderer("SIGN_IN");
testRenderer.root
.findByProps({ id: "signIn-gotoForgotPasswordButton" })
.props.onClick();
diff --git a/src/core/client/auth/test/signIn.spec.tsx b/src/core/client/auth/test/signIn.spec.tsx
index cef7a1574..848a05934 100644
--- a/src/core/client/auth/test/signIn.spec.tsx
+++ b/src/core/client/auth/test/signIn.spec.tsx
@@ -14,6 +14,7 @@ import { RestClient } from "talk-framework/lib/rest";
import { createInMemoryStorage } from "talk-framework/lib/storage";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
const inputPredicate = (name: string) => (n: ReactTestInstance) => {
return n.props.name === name && n.props.onChange;
@@ -31,7 +32,7 @@ beforeEach(() => {
context = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/auth/test/signUp.spec.tsx b/src/core/client/auth/test/signUp.spec.tsx
index 3626dba34..a4b36e3d4 100644
--- a/src/core/client/auth/test/signUp.spec.tsx
+++ b/src/core/client/auth/test/signUp.spec.tsx
@@ -14,6 +14,7 @@ import { RestClient } from "talk-framework/lib/rest";
import { createInMemoryStorage } from "talk-framework/lib/storage";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
const inputPredicate = (name: string) => (n: ReactTestInstance) => {
return n.props.name === name && n.props.onChange;
@@ -31,7 +32,7 @@ beforeEach(() => {
context = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/framework/testHelpers/createFluentBundle.ts b/src/core/client/framework/testHelpers/createFluentBundle.ts
new file mode 100644
index 000000000..a937b2b76
--- /dev/null
+++ b/src/core/client/framework/testHelpers/createFluentBundle.ts
@@ -0,0 +1,27 @@
+import { FluentBundle } from "fluent/compat";
+import fs from "fs";
+import path from "path";
+
+// These locale prefixes are always loaded.
+const commonPrefixes = ["common", "framework"];
+
+function createFluentBundle(
+ target: string,
+ pathToLocale: string
+): FluentBundle {
+ const bundle = new FluentBundle("en-US");
+ const files = fs.readdirSync(pathToLocale);
+ const prefixes = commonPrefixes.concat(target);
+ files.forEach(f => {
+ prefixes.forEach(prefix => {
+ if (f.startsWith(prefix)) {
+ bundle.addMessages(
+ fs.readFileSync(path.resolve(pathToLocale, f)).toString()
+ );
+ }
+ });
+ });
+ return bundle;
+}
+
+export default createFluentBundle;
diff --git a/src/core/client/framework/testHelpers/index.ts b/src/core/client/framework/testHelpers/index.ts
index 9cbc97018..182ba19fb 100644
--- a/src/core/client/framework/testHelpers/index.ts
+++ b/src/core/client/framework/testHelpers/index.ts
@@ -2,3 +2,5 @@ export {
default as createRelayEnvironment,
CreateRelayEnvironmentParams,
} from "./createRelayEnvironment";
+
+export { default as createFluentBundle } from "./createFluentBundle";
diff --git a/src/core/client/stream/test/__snapshots__/loadMore.spec.tsx.snap b/src/core/client/stream/test/__snapshots__/loadMore.spec.tsx.snap
index abb73f02b..82c6ceccb 100644
--- a/src/core/client/stream/test/__snapshots__/loadMore.spec.tsx.snap
+++ b/src/core/client/stream/test/__snapshots__/loadMore.spec.tsx.snap
@@ -57,6 +57,7 @@ exports[`loads more comments 1`] = `
className="Button-button"
disabled={false}
onClick={[Function]}
+ title="Bold"
type="button"
>
- Load More
+ Load more
diff --git a/src/core/client/stream/test/__snapshots__/permalinkView.spec.tsx.snap b/src/core/client/stream/test/__snapshots__/permalinkView.spec.tsx.snap
index eded6b041..39d567d2b 100644
--- a/src/core/client/stream/test/__snapshots__/permalinkView.spec.tsx.snap
+++ b/src/core/client/stream/test/__snapshots__/permalinkView.spec.tsx.snap
@@ -21,7 +21,7 @@ exports[`renders permalink view 1`] = `
target="_parent"
type="button"
>
- Show all Comments
+ Show all comments
- Show all Comments
+ Show all comments
- Show all Comments
+ Show all comments
- Show All Replies
+ Show all
@@ -298,6 +301,7 @@ exports[`show all replies 1`] = `
className="Button-button"
disabled={false}
onClick={[Function]}
+ title="Bold"
type="button"
>
{
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/permalinkView.spec.tsx b/src/core/client/stream/test/permalinkView.spec.tsx
index ae1c3fbda..666f4af5e 100644
--- a/src/core/client/stream/test/permalinkView.spec.tsx
+++ b/src/core/client/stream/test/permalinkView.spec.tsx
@@ -11,6 +11,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
import { assets, comments } from "./fixtures";
@@ -63,7 +64,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/permalinkViewAssetNotFound.spec.tsx b/src/core/client/stream/test/permalinkViewAssetNotFound.spec.tsx
index 4bcff6c5f..17b23b670 100644
--- a/src/core/client/stream/test/permalinkViewAssetNotFound.spec.tsx
+++ b/src/core/client/stream/test/permalinkViewAssetNotFound.spec.tsx
@@ -10,6 +10,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
let testRenderer: ReactTestRenderer;
@@ -34,7 +35,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/permalinkViewCommentNotFound.spec.tsx b/src/core/client/stream/test/permalinkViewCommentNotFound.spec.tsx
index 647f33829..368e29bc3 100644
--- a/src/core/client/stream/test/permalinkViewCommentNotFound.spec.tsx
+++ b/src/core/client/stream/test/permalinkViewCommentNotFound.spec.tsx
@@ -11,6 +11,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
import { assets, comments } from "./fixtures";
@@ -59,7 +60,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/renderReplies.spec.tsx b/src/core/client/stream/test/renderReplies.spec.tsx
index f3ceecf10..673f6da60 100644
--- a/src/core/client/stream/test/renderReplies.spec.tsx
+++ b/src/core/client/stream/test/renderReplies.spec.tsx
@@ -11,6 +11,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
import { assetWithReplies } from "./fixtures";
@@ -38,7 +39,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/renderStream.spec.tsx b/src/core/client/stream/test/renderStream.spec.tsx
index ed0a4aba0..3e95fbc25 100644
--- a/src/core/client/stream/test/renderStream.spec.tsx
+++ b/src/core/client/stream/test/renderStream.spec.tsx
@@ -11,6 +11,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
import { assets } from "./fixtures";
@@ -38,7 +39,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),
diff --git a/src/core/client/stream/test/showAllReplies.spec.tsx b/src/core/client/stream/test/showAllReplies.spec.tsx
index c54805b95..052e38792 100644
--- a/src/core/client/stream/test/showAllReplies.spec.tsx
+++ b/src/core/client/stream/test/showAllReplies.spec.tsx
@@ -11,6 +11,7 @@ import { createInMemoryStorage } from "talk-framework/lib/storage";
import AppContainer from "talk-stream/containers/AppContainer";
import createEnvironment from "./createEnvironment";
+import createFluentBundle from "./createFluentBundle";
import createNodeMock from "./createNodeMock";
import { assets, comments } from "./fixtures";
@@ -95,7 +96,7 @@ beforeEach(() => {
const context: TalkContext = {
relayEnvironment: environment,
- localeBundles: [],
+ localeBundles: [createFluentBundle()],
localStorage: createInMemoryStorage(),
sessionStorage: createInMemoryStorage(),
rest: new RestClient("http://localhost/api"),