diff --git a/assets/js/ApplicantPage.jsx b/assets/js/ApplicantPage.jsx index 44dba9f6dd3ef9bb4ec61133e8cbb03ca0fdd433..703d5457907b209bd86fbe31113712bb9bcd994a 100755 --- a/assets/js/ApplicantPage.jsx +++ b/assets/js/ApplicantPage.jsx @@ -77,6 +77,14 @@ export default class ApplicantPage extends React.Component { /> </div> <Tabs selected={0}> + <Pagination + key={0 + this.state.refresh} + url={`${this.state.selected}`} + label="Semua Lamaran" + child={ + <ApplicantList companyId={company.id} status={Applicant.APPLICATION_STATUS.ALL} /> + } + /> <Pagination key={1 + this.state.refresh} url={`${this.state.selected}?status=${Applicant.APPLICATION_STATUS.NEW}`} diff --git a/assets/js/__test__/ApplicantPage-test.jsx b/assets/js/__test__/ApplicantPage-test.jsx index ddd238ab7e1761ef865134101cf57b3e7f4ab1cd..a193486e3d87ef1561bd977f373c5cac8b0e73ec 100755 --- a/assets/js/__test__/ApplicantPage-test.jsx +++ b/assets/js/__test__/ApplicantPage-test.jsx @@ -190,7 +190,7 @@ describe('ApplicantPage', () => { it('renders all status tabs', () => { const applicantPage = ReactTestUtils.renderIntoDocument(<ApplicantPage user={companyUser} />); const paginationTabs = ReactTestUtils.findRenderedComponentWithType(applicantPage, Tabs); - expect(paginationTabs.props.children.length).to.equal(6); + expect(paginationTabs.props.children.length).to.equal(7); }); it('handle dropdown changes without problem', () => { diff --git a/assets/js/__test__/components/Applicant-test.jsx b/assets/js/__test__/components/Applicant-test.jsx index d9db8170b088fb87a80b90795feb1049b08f1944..a506b72c8f157df36c7b5c9cdd958e027f7cc885 100755 --- a/assets/js/__test__/components/Applicant-test.jsx +++ b/assets/js/__test__/components/Applicant-test.jsx @@ -52,4 +52,22 @@ describe('Applicant', () => { expect(applicant).to.exist; fetchMock.restore(); }); + + it('show application status if in all status', () => { + fetchMock.get('*', stub); + const applicant = ReactTestUtils.renderIntoDocument( + <Applicant data={stub.data} updateStatus={stub.updateStatus} isAll />, + ); + expect(applicant.getApplicationStatus()).to.equal('Ditandai'); + fetchMock.restore(); + }); + + it('not show application status if not in all status', () => { + fetchMock.get('*', stub); + const applicant = ReactTestUtils.renderIntoDocument( + <Applicant data={stub.data} updateStatus={stub.updateStatus} isAll={false} />, + ); + expect(applicant.getApplicationStatus()).to.equal(''); + fetchMock.restore(); + }); }); diff --git a/assets/js/__test__/components/ApplicantList-test.jsx b/assets/js/__test__/components/ApplicantList-test.jsx index 0a907611d4bb5a7738ee5382dd141aca3da3b43a..6205cb4645765aa62bcbb428d5b020a8a72ea825 100755 --- a/assets/js/__test__/components/ApplicantList-test.jsx +++ b/assets/js/__test__/components/ApplicantList-test.jsx @@ -82,5 +82,12 @@ describe('ApplicantList', () => { applicantList.updateStatus(1, Applicant.APPLICATION_STATUS.BOOKMARKED); expect(applicantList.state).to.not.equal(response); }); + + it('can show all applicant', () => { + const applicantList = ReactTestUtils.renderIntoDocument( + <ApplicantList status={Applicant.APPLICATION_STATUS.ALL} />); + // eslint-disable-next-line no-unused-expressions + expect(applicantList).to.exist; + }); }); diff --git a/assets/js/components/Applicant.jsx b/assets/js/components/Applicant.jsx index 59307611538824e2f964a6b8c1d375b8cfb38b1e..1677b80ca9b253d096654813673c736719194462 100755 --- a/assets/js/components/Applicant.jsx +++ b/assets/js/components/Applicant.jsx @@ -10,6 +10,7 @@ export default class Applicant extends React.Component { static propTypes = { data: React.PropTypes.object.isRequired, updateStatus: React.PropTypes.func.isRequired, + isAll: React.PropTypes.bool.isRequired, }; static APPLICATION_STATUS = { @@ -19,9 +20,10 @@ export default class Applicant extends React.Component { REJECTED: 3, ACCEPTED: 4, FINISHED: 6, + ALL: 1000, }; - static APPLICATION_STATUS_TEXT = ['Baru', 'Sudah Dibaca', 'Ditandai', 'Diterima', 'Ditolak']; + static APPLICATION_STATUS_TEXT = ['Baru', 'Sudah Dibaca', 'Ditandai', 'Ditolak', 'Diterima', '', 'Selesai']; constructor(props) { super(props); @@ -47,6 +49,10 @@ export default class Applicant extends React.Component { } }; + getApplicationStatus() { + return this.props.isAll ? Applicant.APPLICATION_STATUS_TEXT[this.props.data.status] : ''; + } + render() { return ( <Item> @@ -77,6 +83,7 @@ export default class Applicant extends React.Component { /> </Grid.Row> <ApproveModal updateStatus={this.props.updateStatus} data={this.props.data} /> + <br /><br /><b>{this.getApplicationStatus()}</b> </Grid.Column> </Grid.Row> </Item.Extra> diff --git a/assets/js/components/ApplicantList.jsx b/assets/js/components/ApplicantList.jsx index 7dd3a3a840e981b0ef6022e591672089dc75fb03..abd6424add56f293a13997f493e7dd99851d0f2b 100755 --- a/assets/js/components/ApplicantList.jsx +++ b/assets/js/components/ApplicantList.jsx @@ -45,9 +45,12 @@ export default class ApplicantList extends React.Component { ); } return this.state.applications.map(application => - application.status === this.props.status && (<Applicant + (application.status === this.props.status || + this.props.status === Applicant.APPLICATION_STATUS.ALL) && + (<Applicant key={application.id} data={application} updateStatus={this.updateStatus} + isAll={this.props.status === Applicant.APPLICATION_STATUS.ALL} />), ); }