diff --git a/src/discussions/discussions-home/DiscussionSidebar.jsx b/src/discussions/discussions-home/DiscussionSidebar.jsx
index f7773498..c1825047 100644
--- a/src/discussions/discussions-home/DiscussionSidebar.jsx
+++ b/src/discussions/discussions-home/DiscussionSidebar.jsx
@@ -1,35 +1,18 @@
-import React, { useContext, useEffect } from 'react';
+import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
-import { useDispatch, useSelector } from 'react-redux';
import {
Redirect, Route, Switch, useLocation,
} from 'react-router';
-import { AppContext } from '@edx/frontend-platform/react';
-
-import { RequestStatus, Routes } from '../../data/constants';
-import { DiscussionContext } from '../common/context';
+import { Routes } from '../../data/constants';
import { LearnersView } from '../learners';
import { PostsView } from '../posts';
-import {
- selectAllThreads, threadsLoadingStatus,
-} from '../posts/data/selectors';
-import { fetchThreads } from '../posts/data/thunks';
import { TopicsView } from '../topics';
export default function DiscussionSidebar({ displaySidebar }) {
const location = useLocation();
- const dispatch = useDispatch();
- const userThreads = useSelector(selectAllThreads);
- const { courseId } = useContext(DiscussionContext);
- const { authenticatedUser } = useContext(AppContext);
- const loadingStatus = useSelector(threadsLoadingStatus());
-
- useEffect(() => {
- dispatch(fetchThreads(courseId, { author: authenticatedUser.username }));
- }, [authenticatedUser, courseId]);
return (
- {RequestStatus.SUCCESSFUL === loadingStatus && (
- )}
);
diff --git a/src/discussions/discussions-home/DiscussionSidebar.test.jsx b/src/discussions/discussions-home/DiscussionSidebar.test.jsx
index 8797c909..0fcefc67 100644
--- a/src/discussions/discussions-home/DiscussionSidebar.test.jsx
+++ b/src/discussions/discussions-home/DiscussionSidebar.test.jsx
@@ -17,21 +17,24 @@ import DiscussionSidebar from './DiscussionSidebar';
import '../posts/data/__factories__';
let store;
+let container;
const courseId = 'course-v1:edX+DemoX+Demo_Course';
let axiosMock;
function renderComponent(displaySidebar = true, location = `/${courseId}/`) {
- return render(
+ const wrapper = render(
-
+
,
);
+ container = wrapper.container;
+ return container;
}
describe('DiscussionSidebar', () => {
@@ -67,23 +70,26 @@ describe('DiscussionSidebar', () => {
expect(element).toHaveClass('d-none');
});
- test('User with some topics should be redirected to "My Posts"', async () => {
+ test('User will be redirected to "All Posts" by default', async () => {
axiosMock.onGet(threadsApiUrl)
.reply(({ params }) => [200, Factory.build('threadsResult', {}, {
threadAttrs: { title: `Thread by ${params.author || 'other users'}` },
})]);
renderComponent();
- await act(async () => expect(await screen.findAllByText('Thread by abc123')).toBeTruthy());
- expect(screen.queryByText('Thread by other users')).not.toBeInTheDocument();
- });
- test('User with no posts should be redirected to "All Posts"', async () => {
- axiosMock.onGet(threadsApiUrl)
- .reply(({ params }) => [200, Factory.build('threadsResult', {}, {
- count: params.author ? 0 : 3,
- threadAttrs: { title: `Thread by ${params.author || 'other users'}` },
- })]);
- renderComponent();
await act(async () => expect(await screen.findAllByText('Thread by other users')).toBeTruthy());
expect(screen.queryByText('Thread by abc123')).not.toBeInTheDocument();
});
+
+ test('Display discussion posts should equal to post count in "All Posts"', async () => {
+ const postCount = 5;
+ axiosMock.onGet(threadsApiUrl)
+ .reply(({ params }) => [200, Factory.build('threadsResult', {}, {
+ count: postCount,
+ threadAttrs: { title: `Thread by ${params.author || 'other users'}` },
+ })]);
+ renderComponent();
+ await act(async () => expect(await screen.findAllByText('Thread by other users')).toBeTruthy());
+ expect(screen.queryByText('Thread by abc123')).not.toBeInTheDocument();
+ expect(container.querySelectorAll('.discussion-post')).toHaveLength(postCount);
+ });
});
diff --git a/src/discussions/posts/PostsView.jsx b/src/discussions/posts/PostsView.jsx
index f3a57590..d15c2e4a 100644
--- a/src/discussions/posts/PostsView.jsx
+++ b/src/discussions/posts/PostsView.jsx
@@ -102,7 +102,7 @@ function PostsView({ showOwnPosts }) {
filters,
page: nextPage,
author: showOwnPosts ? authenticatedUser.username : null,
- }, posts));
+ }));
}
};
diff --git a/src/discussions/posts/data/thunks.js b/src/discussions/posts/data/thunks.js
index bd47d346..229c51d3 100644
--- a/src/discussions/posts/data/thunks.js
+++ b/src/discussions/posts/data/thunks.js
@@ -93,7 +93,7 @@ export function fetchThreads(courseId, {
author = null,
filters = {},
page = 1,
-} = {}, posts = []) {
+} = {}) {
const options = {
orderBy,
topicIds,
@@ -122,7 +122,6 @@ export function fetchThreads(courseId, {
try {
dispatch(fetchThreadsRequest({ courseId }));
const data = await getThreads(courseId, options);
- data.results = [...posts, ...data.results];
const normalisedData = normaliseThreads(camelCaseObject(data));
dispatch(fetchThreadsSuccess({ ...normalisedData, page, author }));
} catch (error) {