diff --git a/src/components/academy/__tests__/Missions.tsx b/src/components/academy/__tests__/Missions.tsx deleted file mode 100644 index 7299eed477..0000000000 --- a/src/components/academy/__tests__/Missions.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { mount } from 'enzyme' -import * as React from 'react' -import { MemoryRouter } from 'react-router' - -import { mockAssessmentOverviews } from '../../../mocks/api' -import { mockRouterProps } from '../../../mocks/components' -import Missions, { IMissionsProps } from '../Missions' - -const mockUndefinedMissions: IMissionsProps = { - ...mockRouterProps('/academy/missions', {}), - handleAssessmentOverviewFetch: () => {} -} - -const mockEmptyMissions: IMissionsProps = { - ...mockRouterProps('/academy/missions', {}), - assessmentOverviews: [], - handleAssessmentOverviewFetch: () => {} -} - -const mockPresentMissions: IMissionsProps = { - ...mockRouterProps('/academy/missions', {}), - assessmentOverviews: mockAssessmentOverviews, - handleAssessmentOverviewFetch: () => {} -} - -test('Missions page "loading" content renders correctly', () => { - const app = ( - - - - ) - const tree = mount(app) - expect(tree.debug()).toMatchSnapshot() -}) - -test('Missions page with 0 missions renders correctly', () => { - const app = ( - - - - ) - const tree = mount(app) - expect(tree.debug()).toMatchSnapshot() -}) - -test('Missions page with multiple loaded missions renders correctly', () => { - const app = ( - - - - ) - const tree = mount(app) - expect(tree.debug()).toMatchSnapshot() -}) diff --git a/src/components/academy/index.tsx b/src/components/academy/index.tsx index eef12ebe29..63ea0adfaf 100644 --- a/src/components/academy/index.tsx +++ b/src/components/academy/index.tsx @@ -1,11 +1,14 @@ +/* tslint:disable: jsx-no-lambda */ + import * as qs from 'query-string' import * as React from 'react' import { Redirect, Route, RouteComponentProps, Switch } from 'react-router' -import MissionsContainer from '../../containers/academy/MissionsContainer' +import AssessmentListingContainer from '../../containers/assessment/AssessmentListingContainer' import Game from '../../containers/GameContainer' import { isAcademyRe } from '../../reducers/session' import { HistoryHelper } from '../../utils/history' +import { AssessmentCategories, AssessmentCategory } from '../assessment/assessmentShape' import AcademyNavigationBar from './NavigationBar' interface IAcademyProps extends IDispatchProps, IOwnProps, IStateProps, RouteComponentProps<{}> {} @@ -23,17 +26,37 @@ export interface IStateProps { historyHelper: HistoryHelper } +const assessmentListingRenderFactory = (cat: AssessmentCategory) => ( + routerProps: RouteComponentProps +) => + export const Academy: React.SFC = props => (
{checkLoggedIn(props)} - + - - - - + + + + diff --git a/src/components/academy/Missions.tsx b/src/components/assessment/AssessmentListing.tsx similarity index 51% rename from src/components/academy/Missions.tsx rename to src/components/assessment/AssessmentListing.tsx index f7412603bb..2ecfdcac29 100644 --- a/src/components/academy/Missions.tsx +++ b/src/components/assessment/AssessmentListing.tsx @@ -4,47 +4,50 @@ import * as React from 'react' import { RouteComponentProps } from 'react-router' import { NavLink } from 'react-router-dom' -import AssessmentContainer from '../../containers/AssessmentContainer' +import AssessmentContainer from '../../containers/assessment' import { OwnProps as AssessmentProps } from '../assessment' +import { AssessmentCategory } from '../assessment/assessmentShape' import { IAssessmentOverview } from '../assessment/assessmentShape' import ContentDisplay, { IContentDisplayProps } from '../commons/ContentDisplay' -export interface IMissionParams { - missionId?: string +export interface IAssessmentParams { + assessmentId?: string } -export interface IMissionsProps extends RouteComponentProps { +export interface IAssessmentListingProps extends RouteComponentProps { assessmentOverviews?: IAssessmentOverview[] + assessmentCategory: AssessmentCategory handleAssessmentOverviewFetch: () => void } -export type StateProps = Pick -export type DispatchProps = Pick +export type DispatchProps = Pick +export type OwnProps = Pick +export type StateProps = Pick -class Missions extends React.Component { +class AssessmentListing extends React.Component { public render() { - // make missionIdParam a number - let missionIdParam: number | null = - this.props.match.params.missionId === undefined + // make assessmentId a number + let assessmentIdParam: number | null = + this.props.match.params.assessmentId === undefined ? NaN - : parseInt(this.props.match.params.missionId, 10) + : parseInt(this.props.match.params.assessmentId, 10) // set as null if the parsing failed - missionIdParam = Number.isInteger(missionIdParam) ? missionIdParam : null + assessmentIdParam = Number.isInteger(assessmentIdParam) ? assessmentIdParam : null - // if there is no mission specified, Render only information. - if (missionIdParam === null) { + // if there is no assessmentId specified, Render only information. + if (assessmentIdParam === null) { const props: IContentDisplayProps = { display: , loadContentDispatch: this.props.handleAssessmentOverviewFetch } return ( -
+
) } else { const props: AssessmentProps = { - missionId: missionIdParam + assessmentId: assessmentIdParam } return } @@ -61,31 +64,31 @@ export const AssessmentOverviewCard: React.SFC = p } else if (props.assessmentOverviews.length === 0) { return } - const cards = props.assessmentOverviews.map((mission, index) => ( + const cards = props.assessmentOverviews.map((overview, index) => (
- -
PICTURE
-
-
-

{mission.title}

+ +
PICTURE
+
+
+

{overview.title}

-
+
Mission 0 : 123123 XP (hardcoded)
-
-

{mission.shortSummary}

+
+

{overview.shortSummary}

-
-
- - +
+
+ + Due: 12/12/12
- +