mirror of
https://github.com/wassname/talk.git
synced 2026-09-10 12:43:11 +08:00
[CORL-139, CORL-140] Community (#2239)
* feat: Add table ui component * feat: community user table * feat: filters and role change * fix: add some comments * fix: user viewer * fix: snapshots * test: add tests * fix: better popover experience * fix: test * chore: use enum * feat: prevent server side setting your own role * fix: cleanup
This commit is contained in:
@@ -5,14 +5,14 @@ import {
|
||||
RecordSourceSelectorProxy,
|
||||
} from "relay-runtime";
|
||||
|
||||
import { getMeSourceID } from "talk-framework/helpers";
|
||||
import { getViewerSourceID } from "talk-framework/helpers";
|
||||
|
||||
export default function prependCommentEdgeToProfile(
|
||||
environment: Environment,
|
||||
store: RecordSourceSelectorProxy,
|
||||
commentEdge: RecordProxy
|
||||
) {
|
||||
const meProxy = store.get(getMeSourceID(environment)!);
|
||||
const meProxy = store.get(getViewerSourceID(environment)!);
|
||||
const con = ConnectionHandler.getConnection(
|
||||
meProxy,
|
||||
"CommentHistory_comments"
|
||||
|
||||
@@ -2,7 +2,7 @@ import sinon from "sinon";
|
||||
|
||||
import { waitForElement, within } from "talk-framework/testHelpers";
|
||||
|
||||
import { meAsModerator, settings, stories } from "../fixtures";
|
||||
import { settings, stories, viewerAsModerator } from "../fixtures";
|
||||
import create from "./create";
|
||||
|
||||
async function createTestRenderer(
|
||||
@@ -14,7 +14,7 @@ async function createTestRenderer(
|
||||
Query: {
|
||||
settings: sinon.stub().returns(settings),
|
||||
story: sinon.stub().returns(stories[0]),
|
||||
viewer: sinon.stub().returns(meAsModerator),
|
||||
viewer: sinon.stub().returns(viewerAsModerator),
|
||||
...resolver.Query,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@ import sinon from "sinon";
|
||||
|
||||
import { waitForElement, within } from "talk-framework/testHelpers";
|
||||
|
||||
import { meAsModerator, settings, stories } from "../fixtures";
|
||||
import { settings, stories, viewerAsModerator } from "../fixtures";
|
||||
import create from "./create";
|
||||
|
||||
async function createTestRenderer(
|
||||
@@ -16,7 +16,7 @@ async function createTestRenderer(
|
||||
expectAndFail(variables).toEqual({ id: stories[0].id, url: null });
|
||||
return stories[0];
|
||||
}),
|
||||
viewer: sinon.stub().returns(meAsModerator),
|
||||
viewer: sinon.stub().returns(viewerAsModerator),
|
||||
...resolver.Query,
|
||||
},
|
||||
...resolver,
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
within,
|
||||
} from "talk-framework/testHelpers";
|
||||
|
||||
import { meAsModerator, settings, stories } from "../fixtures";
|
||||
import { settings, stories, viewerAsModerator } from "../fixtures";
|
||||
import create from "./create";
|
||||
|
||||
async function createTestRenderer(
|
||||
@@ -22,7 +22,7 @@ async function createTestRenderer(
|
||||
expectAndFail(variables).toEqual({ id: stories[0].id, url: null });
|
||||
return stories[0];
|
||||
}),
|
||||
viewer: sinon.stub().returns(meAsModerator),
|
||||
viewer: sinon.stub().returns(viewerAsModerator),
|
||||
...resolver.Query,
|
||||
},
|
||||
...resolver,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { EventEmitter2 } from "eventemitter2";
|
||||
import { IResolvers } from "graphql-tools";
|
||||
import React from "react";
|
||||
import TestRenderer from "react-test-renderer";
|
||||
import TestRenderer, { ReactTestRenderer } from "react-test-renderer";
|
||||
import { Environment, RecordProxy, RecordSourceProxy } from "relay-runtime";
|
||||
|
||||
import { TalkContext, TalkContextProvider } from "talk-framework/lib/bootstrap";
|
||||
@@ -42,6 +42,7 @@ export default function create(params: CreateParams) {
|
||||
|
||||
const context: TalkContext = {
|
||||
relayEnvironment: environment,
|
||||
locales: ["en-US"],
|
||||
localeBundles: [createFluentBundle()],
|
||||
localStorage: createPromisifiedStorage(),
|
||||
sessionStorage: createPromisifiedStorage(),
|
||||
@@ -53,12 +54,14 @@ export default function create(params: CreateParams) {
|
||||
clearSession: () => Promise.resolve(),
|
||||
};
|
||||
|
||||
const testRenderer = TestRenderer.create(
|
||||
<TalkContextProvider value={context}>
|
||||
<AppContainer />
|
||||
</TalkContextProvider>,
|
||||
{ createNodeMock }
|
||||
);
|
||||
|
||||
return { context, testRenderer };
|
||||
let testRenderer: ReactTestRenderer;
|
||||
TestRenderer.act(() => {
|
||||
testRenderer = TestRenderer.create(
|
||||
<TalkContextProvider value={context}>
|
||||
<AppContainer />
|
||||
</TalkContextProvider>,
|
||||
{ createNodeMock }
|
||||
);
|
||||
});
|
||||
return { context, testRenderer: testRenderer! };
|
||||
}
|
||||
|
||||
@@ -396,13 +396,13 @@ export const storyWithDeepestReplies = denormalizeStory({
|
||||
},
|
||||
});
|
||||
|
||||
export const meAsModerator = {
|
||||
export const viewerAsModerator = {
|
||||
id: "me-as-moderator",
|
||||
username: "Moderator",
|
||||
role: "MODERATOR",
|
||||
};
|
||||
|
||||
export const meWithComments = {
|
||||
export const viewerWithComments = {
|
||||
id: "me-with-comments",
|
||||
username: "Markus",
|
||||
role: "COMMENTER",
|
||||
|
||||
@@ -8,13 +8,13 @@ import {
|
||||
within,
|
||||
} from "talk-framework/testHelpers";
|
||||
|
||||
import { comments, meWithComments, settings, stories } from "../fixtures";
|
||||
import { comments, settings, stories, viewerWithComments } from "../fixtures";
|
||||
import create from "./create";
|
||||
|
||||
let testRenderer: ReactTestRenderer;
|
||||
beforeEach(() => {
|
||||
const meStub = {
|
||||
...meWithComments,
|
||||
...viewerWithComments,
|
||||
comments: createSinonStub(
|
||||
s => s.throws(),
|
||||
s =>
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
within,
|
||||
} from "talk-framework/testHelpers";
|
||||
|
||||
import { meWithComments, settings, stories } from "../fixtures";
|
||||
import { settings, stories, viewerWithComments } from "../fixtures";
|
||||
import create from "./create";
|
||||
|
||||
let testRenderer: ReactTestRenderer;
|
||||
@@ -22,7 +22,7 @@ beforeEach(() => {
|
||||
.withArgs(undefined, { id: stories[0].id, url: null })
|
||||
.returns(stories[0])
|
||||
),
|
||||
viewer: sinon.stub().returns(meWithComments),
|
||||
viewer: sinon.stub().returns(viewerWithComments),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user