[CORL-159, CORL-160] Stream Config Tab (#2219)

* feat: Implement stream configuration tab

* feat: split profile & configure into separate bundles

* chore: better role logic

* fix+chore: add test cases, implement expectAndFail, refactor tests

* chore: add some comments

* chore: Update src/core/client/framework/lib/form/helpers.tsx

Co-Authored-By: cvle <vinh@wikiwi.io>

* feat: support new graphql mutations/schema

* fix: ci fixes

* fix: improvement to revision loading

* fix: updated some tests

* fix: adapt client to changes

* fix: remove obsolote isClosed in UpdateStory

* ci: increase no_output_timeout for build
This commit is contained in:
Kiwi
2019-03-18 22:07:52 +01:00
committed by GitHub
parent c738d9a355
commit 9eb5afbb2b
128 changed files with 2249 additions and 1081 deletions
@@ -90,83 +90,6 @@ exports[`accepts valid email 1`] = `
</form>
`;
exports[`accepts valid email confirmation 1`] = `
<form
autoComplete="off"
onSubmit={[Function]}
>
<div
className="HorizontalGutter-root HorizontalGutter-oneAndAHalf"
>
<p
className="Typography-root Typography-bodyCopy Typography-colorTextPrimary"
>
For your added security, we require users to add an email address to their accounts.
</p>
<div
className="HorizontalGutter-root FormField-root HorizontalGutter-half"
>
<label
className="Typography-root Typography-inputLabel Typography-colorTextPrimary InputLabel-root"
htmlFor="email"
>
Email Address
</label>
<div
className="TextField-root TextField-fullWidth"
>
<input
className="TextField-input TextField-colorRegular"
disabled={true}
id="email"
name="email"
onChange={[Function]}
placeholder="Email Address"
type="text"
value="hans@test.com"
/>
</div>
</div>
<div
className="HorizontalGutter-root FormField-root HorizontalGutter-half"
>
<label
className="Typography-root Typography-inputLabel Typography-colorTextPrimary InputLabel-root"
htmlFor="confirmEmail"
>
Confirm Email Address
</label>
<div
className="TextField-root TextField-fullWidth"
>
<input
className="TextField-input TextField-colorRegular"
disabled={true}
id="confirmEmail"
name="confirmEmail"
onChange={[Function]}
placeholder="Confirm Email Address"
type="text"
value="hans@test.com"
/>
</div>
</div>
<button
className="BaseButton-root Button-root Button-sizeLarge Button-colorPrimary Button-variantFilled Button-fullWidth Button-disabled"
disabled={true}
onBlur={[Function]}
onFocus={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
onTouchEnd={[Function]}
type="submit"
>
Add Email Address
</button>
</div>
</form>
`;
exports[`checks for invalid email 1`] = `
<form
autoComplete="off"
@@ -1,63 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`accepts valid username 1`] = `
<form
autoComplete="off"
onSubmit={[Function]}
>
<div
className="HorizontalGutter-root HorizontalGutter-oneAndAHalf"
>
<p
className="Typography-root Typography-bodyCopy Typography-colorTextPrimary"
>
Your username is an identifier that will appear on all of your comments.
</p>
<div
className="HorizontalGutter-root FormField-root HorizontalGutter-half"
>
<label
className="Typography-root Typography-inputLabel Typography-colorTextPrimary InputLabel-root"
htmlFor="username"
>
Username
</label>
<p
className="Typography-root Typography-detail Typography-colorTextSecondary"
>
You may use “_” and “.” Spaces not permitted.
</p>
<div
className="TextField-root TextField-fullWidth"
>
<input
className="TextField-input TextField-colorRegular"
disabled={true}
id="username"
name="username"
onChange={[Function]}
placeholder="Username"
type="text"
value="hans"
/>
</div>
</div>
<button
className="BaseButton-root Button-root Button-sizeLarge Button-colorPrimary Button-variantFilled Button-fullWidth Button-disabled"
disabled={true}
onBlur={[Function]}
onFocus={[Function]}
onMouseOut={[Function]}
onMouseOver={[Function]}
onTouchEnd={[Function]}
type="submit"
>
Create Username
</button>
</div>
</form>
`;
exports[`checks for invalid username 1`] = `
<form
autoComplete="off"
@@ -92,20 +92,6 @@ it("accepts valid email", async () => {
expect(toJSON(form)).toMatchSnapshot();
});
it("accepts valid email confirmation", async () => {
const {
form,
emailAddressField,
confirmEmailAddressField,
} = await createTestRenderer();
emailAddressField.props.onChange({ target: { value: "hans@test.com" } });
confirmEmailAddressField.props.onChange({
target: { value: "hans@test.com" },
});
form.props.onSubmit();
expect(toJSON(form)).toMatchSnapshot();
});
it("shows server error", async () => {
const email = "hans@test.com";
const setEmail = sinon.stub().callsFake((_: any, data: any) => {
@@ -145,7 +131,7 @@ it("shows server error", async () => {
it("successfully sets email", async () => {
const email = "hans@test.com";
const setEmail = sinon.stub().callsFake((_: any, data: any) => {
expect(data.input).toEqual({
expectAndFail(data.input).toEqual({
email,
clientMutationId: data.input.clientMutationId,
});
@@ -105,7 +105,7 @@ it("shows server error", async () => {
it("successfully sets password", async () => {
const password = "secretpassword";
const setPassword = sinon.stub().callsFake((_: any, data: any) => {
expect(data.input).toEqual({
expectAndFail(data.input).toEqual({
password,
clientMutationId: data.input.clientMutationId,
});
@@ -73,13 +73,6 @@ it("checks for invalid username", async () => {
expect(toJSON(form)).toMatchSnapshot();
});
it("accepts valid username", async () => {
const { form, usernameField } = await createTestRenderer();
usernameField.props.onChange({ target: { value: "hans" } });
form.props.onSubmit();
expect(toJSON(form)).toMatchSnapshot();
});
it("shows server error", async () => {
const username = "hans";
const setUsername = sinon.stub().callsFake((_: any, data: any) => {
@@ -111,7 +104,7 @@ it("shows server error", async () => {
it("successfully sets username", async () => {
const username = "hans";
const setUsername = sinon.stub().callsFake((_: any, data: any) => {
expect(data.input).toEqual({
expectAndFail(data.input).toEqual({
username,
clientMutationId: data.input.clientMutationId,
});
@@ -568,8 +568,8 @@ moderation panel.
checked={false}
className="RadioButton-input"
disabled={false}
id="autoCloseStream-true"
name="autoCloseStream"
id="closeCommenting.auto-true"
name="closeCommenting.auto"
onBlur={[Function]}
onChange={[Function]}
onFocus={[Function]}
@@ -578,7 +578,7 @@ moderation panel.
/>
<label
className="RadioButton-label"
htmlFor="autoCloseStream-true"
htmlFor="closeCommenting.auto-true"
>
<span>
On
@@ -592,8 +592,8 @@ moderation panel.
checked={true}
className="RadioButton-input"
disabled={false}
id="autoCloseStream-false"
name="autoCloseStream"
id="closeCommenting.auto-false"
name="closeCommenting.auto"
onBlur={[Function]}
onChange={[Function]}
onFocus={[Function]}
@@ -602,7 +602,7 @@ moderation panel.
/>
<label
className="RadioButton-label"
htmlFor="autoCloseStream-false"
htmlFor="closeCommenting.auto-false"
>
<span>
Off
@@ -632,7 +632,7 @@ moderation panel.
autoCorrect="off"
className="TextField-input TextField-colorRegular TextField-textAlignCenter"
disabled={false}
name="closedTimeout-value"
name="closeCommenting.timeout-value"
onChange={[Function]}
placeholder=""
spellCheck={false}
@@ -647,7 +647,7 @@ moderation panel.
aria-label="unit"
className="SelectField-select DurationField-unit"
disabled={false}
name="closedTimeout-unit"
name="closeCommenting.timeout-unit"
onBlur={[Function]}
onChange={[Function]}
onFocus={[Function]}
@@ -703,7 +703,7 @@ moderation panel.
>
<textarea
id="configure-general-closedStreamMessage-content"
name="closedMessage"
name="closeCommenting.message"
onChange={[Function]}
value=""
/>
@@ -115,7 +115,7 @@ exports[`renders configure organization 1`] = `
>
<label
className="Typography-root Typography-heading1 Typography-colorTextPrimary Header-root"
htmlFor="configure-organization-organizationName"
htmlFor="configure-organization-organization.name"
>
Organization Name
</label>
@@ -133,8 +133,8 @@ exports[`renders configure organization 1`] = `
autoCorrect="off"
className="TextField-input TextField-colorRegular"
disabled={false}
id="configure-organization-organizationName"
name="organizationName"
id="configure-organization-organization.name"
name="organization.name"
onChange={[Function]}
placeholder=""
spellCheck={false}
@@ -152,7 +152,7 @@ exports[`renders configure organization 1`] = `
>
<label
className="Typography-root Typography-heading1 Typography-colorTextPrimary Header-root"
htmlFor="configure-organization-organizationContactEmail"
htmlFor="configure-organization-organization.contactEmail"
>
Organization Email
</label>
@@ -173,8 +173,8 @@ status of their accounts or moderation questions.
autoCorrect="off"
className="TextField-input TextField-colorRegular"
disabled={false}
id="configure-organization-organizationContactEmail"
name="organizationContactEmail"
id="configure-organization-organization.contactEmail"
name="organization.contactEmail"
onChange={[Function]}
placeholder=""
spellCheck={false}
@@ -1,4 +1,3 @@
import mockConsole from "jest-mock-console";
import { cloneDeep, get, merge } from "lodash";
import sinon from "sinon";
@@ -15,16 +14,6 @@ import { settings, users } from "../fixtures";
beforeEach(() => {
replaceHistoryLocation("http://localhost/admin/configure/advanced");
// Test might pass even when it fails with errors in the log due to:
// https://github.com/facebook/jest/issues/3917
// We check the console to be error free..
mockConsole("error");
});
afterEach(() => {
// Check that there are no errors in the console.
// tslint:disable-next-line: no-console
expect(console.error).not.toHaveBeenCalled();
});
const createTestRenderer = async (resolver: any = {}) => {
@@ -72,7 +61,7 @@ it("change custom css", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.customCSSURL).toEqual("./custom.css");
expectAndFail(data.input.settings.customCSSURL).toEqual("./custom.css");
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -117,7 +106,7 @@ it("change permitted domains to be empty", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.domains).toEqual([]);
expectAndFail(data.input.settings.domains).toEqual([]);
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -164,7 +153,7 @@ it("change permitted domains to include more domains", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.domains).toEqual([
expectAndFail(data.input.settings.domains).toEqual([
"localhost:8080",
"localhost:3000",
]);
@@ -112,7 +112,7 @@ it("prevents stream lock out", async () => {
Mutation: {
updateSettings: createSinonStub(s =>
s.callsFake((_: any, data: any) => {
expect(data.input.settings.auth.integrations.local).toEqual({
expectAndFail(data.input.settings.auth.integrations.local).toEqual({
enabled: true,
allowRegistration: true,
targetFilter: {
@@ -172,7 +172,7 @@ it("change settings", async () => {
Query: {
discoverOIDCConfiguration: createSinonStub(s =>
s.callsFake((_: any, data: any) => {
expect(data).toEqual({ issuer: "http://issuer.com" });
expectAndFail(data).toEqual({ issuer: "http://issuer.com" });
return {
issuer: "http://issuer.com",
tokenURL: "http://issuer.com/tokenURL",
@@ -186,7 +186,9 @@ it("change settings", async () => {
updateSettings: createSinonStub(
s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.auth.integrations.facebook).toEqual({
expectAndFail(
data.input.settings.auth.integrations.facebook
).toEqual({
enabled: true,
allowRegistration: true,
targetFilter: {
@@ -204,7 +206,7 @@ it("change settings", async () => {
}),
s =>
s.onSecondCall().callsFake((_: any, data: any) => {
expect(data.input.settings.auth.integrations.oidc).toEqual({
expectAndFail(data.input.settings.auth.integrations.oidc).toEqual({
enabled: true,
allowRegistration: false,
targetFilter: {
@@ -1,4 +1,3 @@
import mockConsole from "jest-mock-console";
import { cloneDeep, get, merge } from "lodash";
import sinon from "sinon";
@@ -17,16 +16,6 @@ import { settings, users } from "../fixtures";
beforeEach(() => {
replaceHistoryLocation("http://localhost/admin/configure/general");
// Test might pass even when it fails with errors in the log due to:
// https://github.com/facebook/jest/issues/3917
// We check the console to be error free..
mockConsole("error");
});
afterEach(() => {
// Check that there are no errors in the console.
// tslint:disable-next-line: no-console
expect(console.error).not.toHaveBeenCalled();
});
const createTestRenderer = async (
@@ -78,7 +67,7 @@ it("change site wide commenting", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.disableCommenting).toEqual({
expectAndFail(data.input.settings.disableCommenting).toEqual({
enabled: true,
message: "Closing message",
});
@@ -139,10 +128,12 @@ it("change community guidlines", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.communityGuidelines.content).toEqual(
expectAndFail(data.input.settings.communityGuidelines.content).toEqual(
"This is the community guidlines summary"
);
expect(data.input.settings.communityGuidelines.enabled).toEqual(true);
expectAndFail(data.input.settings.communityGuidelines.enabled).toEqual(
true
);
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -198,7 +189,7 @@ it("change closed stream message", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.closedMessage).toEqual(
expectAndFail(data.input.settings.closeCommenting.message).toEqual(
"The stream has been closed"
);
settingsRecord = merge(settingsRecord, data.input.settings);
@@ -243,7 +234,9 @@ it("change comment editing time", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.editCommentWindowLength).toEqual(108000);
expectAndFail(data.input.settings.editCommentWindowLength).toEqual(
108000
);
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -311,7 +304,7 @@ it("change comment length limitations", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.charCount).toEqual({
expectAndFail(data.input.settings.charCount).toEqual({
enabled: true,
min: null,
max: 3000,
@@ -403,8 +396,10 @@ it("change closing comment streams", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.autoCloseStream).toEqual(true);
expect(data.input.settings.closedTimeout).toEqual(2592000);
expectAndFail(data.input.settings.closeCommenting.auto).toEqual(true);
expectAndFail(data.input.settings.closeCommenting.timeout).toEqual(
2592000
);
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -1,4 +1,3 @@
import mockConsole from "jest-mock-console";
import { cloneDeep, get, merge } from "lodash";
import sinon from "sinon";
@@ -15,16 +14,6 @@ import { settings, users } from "../fixtures";
beforeEach(() => {
replaceHistoryLocation("http://localhost/admin/configure/moderation");
// Test might pass even when it fails with errors in the log due to:
// https://github.com/facebook/jest/issues/3917
// We check the console to be error free..
mockConsole("error");
});
afterEach(() => {
// Check that there are no errors in the console.
// tslint:disable-next-line: no-console
expect(console.error).not.toHaveBeenCalled();
});
const createTestRenderer = async (resolver: any = {}) => {
@@ -72,7 +61,7 @@ it("change akismet settings", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.integrations.akismet).toEqual({
expectAndFail(data.input.settings.integrations.akismet).toEqual({
enabled: true,
key: "my api key",
site: "https://coralproject.net",
@@ -156,7 +145,7 @@ it("change perspective settings", async () => {
const updateSettingsStub = createSinonStub(
s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.integrations.perspective).toEqual({
expectAndFail(data.input.settings.integrations.perspective).toEqual({
doNotStore: false,
enabled: true,
endpoint: "https://custom-endpoint.net",
@@ -171,7 +160,7 @@ it("change perspective settings", async () => {
}),
s =>
s.onSecondCall().callsFake((_: any, data: any) => {
expect(
expectAndFail(
data.input.settings.integrations.perspective.threshold
).toBeNull();
settingsRecord = merge(settingsRecord, data.input.settings);
@@ -1,4 +1,3 @@
import mockConsole from "jest-mock-console";
import { cloneDeep, get, merge } from "lodash";
import sinon from "sinon";
@@ -15,16 +14,6 @@ import { settings, users } from "../fixtures";
beforeEach(() => {
replaceHistoryLocation("http://localhost/admin/configure/organization");
// Test might pass even when it fails with errors in the log due to:
// https://github.com/facebook/jest/issues/3917
// We check the console to be error free..
mockConsole("error");
});
afterEach(() => {
// Check that there are no errors in the console.
// tslint:disable-next-line: no-console
expect(console.error).not.toHaveBeenCalled();
});
const createTestRenderer = async (resolver: any = {}) => {
@@ -72,7 +61,9 @@ it("change organization name", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.organizationName).toEqual("Coral Test");
expectAndFail(data.input.settings.organization.name).toEqual(
"Coral Test"
);
settingsRecord = merge(settingsRecord, data.input.settings);
return {
settings: settingsRecord,
@@ -135,7 +126,7 @@ it("change organization contact email", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.organizationContactEmail).toEqual(
expectAndFail(data.input.settings.organization.contactEmail).toEqual(
"test@coralproject.net"
);
settingsRecord = merge(settingsRecord, data.input.settings);
@@ -1,4 +1,3 @@
import mockConsole from "jest-mock-console";
import { cloneDeep, get, merge } from "lodash";
import sinon from "sinon";
@@ -15,16 +14,6 @@ import { settings, users } from "../fixtures";
beforeEach(() => {
replaceHistoryLocation("http://localhost/admin/configure/wordList");
// Test might pass even when it fails with errors in the log due to:
// https://github.com/facebook/jest/issues/3917
// We check the console to be error free..
mockConsole("error");
});
afterEach(() => {
// Check that there are no errors in the console.
// tslint:disable-next-line: no-console
expect(console.error).not.toHaveBeenCalled();
});
const createTestRenderer = async (resolver: any = {}) => {
@@ -72,7 +61,7 @@ it("change banned and suspect words", async () => {
let settingsRecord = cloneDeep(settings);
const updateSettingsStub = createSinonStub(s =>
s.onFirstCall().callsFake((_: any, data: any) => {
expect(data.input.settings.wordList).toEqual({
expectAndFail(data.input.settings.wordList).toEqual({
banned: ["Fuck", "Asshole"],
suspect: ["idiot", "shame"],
});
+9 -5
View File
@@ -14,9 +14,10 @@ export const settings = {
disableCommenting: {
enabled: false,
},
closedTimeout: 604800,
autoCloseStream: false,
closedMessage: null,
closeCommenting: {
auto: false,
timeout: 604800,
},
customCSSURL: null,
domains: ["localhost:8080"],
editCommentWindowLength: 30000,
@@ -24,8 +25,11 @@ export const settings = {
enabled: false,
content: "",
},
organizationContactEmail: "coral@test.com",
organizationName: "Coral",
organization: {
name: "Coral",
url: "https://test.com/",
contactEmail: "coral@test.com",
},
integrations: {
akismet: {
enabled: false,
@@ -83,7 +83,7 @@ describe("reported queue", () => {
reported: {
count: 2,
comments: sinon.stub().callsFake(data => {
expect(data).toEqual({ first: 5 });
expectAndFail(data).toEqual({ first: 5 });
return {
edges: [
{
@@ -119,7 +119,7 @@ describe("reported queue", () => {
comments: createSinonStub(
s =>
s.onFirstCall().callsFake(data => {
expect(data).toEqual({ first: 5 });
expectAndFail(data).toEqual({ first: 5 });
return {
edges: [
{
@@ -139,7 +139,7 @@ describe("reported queue", () => {
}),
s =>
s.onSecondCall().callsFake(data => {
expect(data).toEqual({
expectAndFail(data).toEqual({
first: 10,
after: reportedComments[1].createdAt,
});
@@ -195,7 +195,7 @@ describe("reported queue", () => {
it("accepts comment in reported queue", async () => {
const acceptCommentStub = sinon.stub().callsFake((_, data) => {
expect(data).toMatchObject({
expectAndFail(data).toMatchObject({
input: {
commentID: reportedComments[0].id,
commentRevisionID: reportedComments[0].revision.id,
@@ -221,7 +221,7 @@ describe("reported queue", () => {
reported: {
count: 2,
comments: sinon.stub().callsFake(data => {
expect(data).toEqual({ first: 5 });
expectAndFail(data).toEqual({ first: 5 });
return {
edges: [
{
@@ -272,7 +272,7 @@ describe("reported queue", () => {
it("rejects comment in reported queue", async () => {
const rejectCommentStub = sinon.stub().callsFake((_, data) => {
expect(data).toMatchObject({
expectAndFail(data).toMatchObject({
input: {
commentID: reportedComments[0].id,
commentRevisionID: reportedComments[0].revision.id,
@@ -298,7 +298,7 @@ describe("reported queue", () => {
reported: {
count: 2,
comments: sinon.stub().callsFake(data => {
expect(data).toEqual({ first: 5 });
expectAndFail(data).toEqual({ first: 5 });
return {
edges: [
{
@@ -357,7 +357,10 @@ describe("rejected queue", () => {
const testRenderer = await createTestRenderer({
Query: {
comments: sinon.stub().callsFake((_, data) => {
expect(data).toEqual({ first: 5, status: "REJECTED" });
expectAndFail(data).toEqual({
first: 5,
status: "REJECTED",
});
return {
edges: [
{
@@ -388,7 +391,7 @@ describe("rejected queue", () => {
comments: createSinonStub(
s =>
s.onFirstCall().callsFake((_, data) => {
expect(data).toEqual({
expectAndFail(data).toEqual({
first: 5,
status: "REJECTED",
});
@@ -411,7 +414,7 @@ describe("rejected queue", () => {
}),
s =>
s.onSecondCall().callsFake((_, data) => {
expect(data).toEqual({
expectAndFail(data).toEqual({
first: 10,
after: rejectedComments[1].createdAt,
status: "REJECTED",
@@ -467,7 +470,7 @@ describe("rejected queue", () => {
it("accepts comment in rejected queue", async () => {
const acceptCommentStub = sinon.stub().callsFake((_, data) => {
expect(data).toMatchObject({
expectAndFail(data).toMatchObject({
input: {
commentID: rejectedComments[0].id,
commentRevisionID: rejectedComments[0].revision.id,
@@ -490,7 +493,10 @@ describe("rejected queue", () => {
const testRenderer = await createTestRenderer({
Query: {
comments: sinon.stub().callsFake((_, data) => {
expect(data).toEqual({ first: 5, status: "REJECTED" });
expectAndFail(data).toEqual({
first: 5,
status: "REJECTED",
});
return {
edges: [
{
@@ -541,7 +547,7 @@ describe("rejected queue", () => {
describe("single comment view", () => {
const comment = rejectedComments[0];
const commentStub = sinon.stub().callsFake((_, data) => {
expect(data).toEqual({ id: comment.id });
expectAndFail(data).toEqual({ id: comment.id });
return reportedComments[0];
});
@@ -566,7 +572,7 @@ describe("single comment view", () => {
it("accepts single comment", async () => {
const acceptCommentStub = sinon.stub().callsFake((_, data) => {
expect(data).toMatchObject({
expectAndFail(data).toMatchObject({
input: {
commentID: comment.id,
commentRevisionID: comment.revision.id,
@@ -604,7 +610,7 @@ describe("single comment view", () => {
it("rejects single comment", async () => {
const rejectCommentStub = sinon.stub().callsFake((_, data) => {
expect(data).toMatchObject({
expectAndFail(data).toMatchObject({
input: {
commentID: comment.id,
commentRevisionID: comment.revision.id,