diff --git a/__tests__/__snapshots__/index.js.snap b/__tests__/__snapshots__/index.js.snap
index f1c7c70a..53d2317a 100644
--- a/__tests__/__snapshots__/index.js.snap
+++ b/__tests__/__snapshots__/index.js.snap
@@ -225,9 +225,9 @@ Object {
"setEndDate": [Function],
"setReviewOpportunityType": [Function],
"setStartDate": [Function],
- "setSubtracks": [Function],
"setTags": [Function],
"setText": [Function],
+ "setTypes": [Function],
},
},
"errors": Object {
@@ -372,9 +372,10 @@ Object {
},
"tc": Object {
"COMPETITION_TRACKS": Object {
- "DATA_SCIENCE": "data_science",
- "DESIGN": "design",
- "DEVELOP": "develop",
+ "DATA_SCIENCE": "Data Science",
+ "DESIGN": "Design",
+ "DEVELOP": "Development",
+ "QA": "Quality Assurance",
},
"REVIEW_OPPORTUNITY_TYPES": Object {
"Contest Review": "Review",
diff --git a/__tests__/utils/challenge/filter.js b/__tests__/utils/challenge/filter.js
index 950a1ca9..01a4753b 100644
--- a/__tests__/utils/challenge/filter.js
+++ b/__tests__/utils/challenge/filter.js
@@ -1,5 +1,5 @@
import {
- setText, setTags, setSubtracks, setStartDate,
+ setText, setTags, setTypes, setStartDate,
} from '../../../src/utils/challenge/filter';
describe('challenge filter', () => {
@@ -22,12 +22,12 @@ describe('challenge filter', () => {
expect(res).toEqual({});
});
- test('setSubtracks', () => {
- res = setSubtracks({});
+ test('setTypes', () => {
+ res = setTypes({});
expect(res).toEqual({});
- res = setSubtracks({}, 'subtracks');
- expect(res).toEqual({ subtracks: 'subtracks' });
- res = setSubtracks({ subtracks: 'subtracks' });
+ res = setTypes({}, 'types');
+ expect(res).toEqual({ types: 'types' });
+ res = setTypes({ types: 'types' });
expect(res).toEqual({});
});
diff --git a/docs/challenge.filter.md b/docs/challenge.filter.md
index 978050ee..391ef5e5 100644
--- a/docs/challenge.filter.md
+++ b/docs/challenge.filter.md
@@ -70,7 +70,7 @@ users are participating.
* [.setEndDate(state, date)](#module_challenge.filter.setEndDate) ⇒ Object
* [.setReviewOpportunityType(state, reviewOpportunityType)](#module_challenge.filter.setReviewOpportunityType) ⇒ Object
* [.setStartDate(state, date)](#module_challenge.filter.setStartDate) ⇒ Object
- * [.setSubtracks(state, subtracks)](#module_challenge.filter.setSubtracks) ⇒ Object
+ * [.setTypes(state, types)](#module_challenge.filter.setTypes) ⇒ Object
* [.setTags(state, tags)](#module_challenge.filter.setTags) ⇒ Object
* [.setText(state, text)](#module_challenge.filter.setText) ⇒ Object
* _inner_
@@ -198,17 +198,17 @@ Clones the state and sets the start date.
| state | Object
| |
| date | String
| ISO date string. |
-
+
-### challenge.filter.setSubtracks(state, subtracks) ⇒ Object
-Clones the state and sets the subtracks.
+### challenge.filter.setTypes(state, types) ⇒ Object
+Clones the state and sets the challenge types.
**Kind**: static method of [challenge.filter
](#module_challenge.filter)
| Param | Type |
| --- | --- |
| state | Object
|
-| subtracks | Array
|
+| types | Array
|
diff --git a/src/utils/challenge/filter.js b/src/utils/challenge/filter.js
index d9e6429e..e7aebf8d 100644
--- a/src/utils/challenge/filter.js
+++ b/src/utils/challenge/filter.js
@@ -159,20 +159,12 @@ function filterByText(challenge, state) {
function filterByTrack(challenge, state) {
if (!state.tracks) return true;
-
- /* Development challenges having Data Science tech tag, still should be
- * included into data science track. */
- if (state.tracks[COMPETITION_TRACKS.DATA_SCIENCE]
- && _.includes(challenge.tags, 'Data Science')) {
- return true;
- }
-
- return _.keys(state.tracks).some(track => challenge.communities.has(track));
+ return _.keys(state.tracks).some(track => challenge.track === track);
}
-function filterBySubtracks(challenge, state) {
- if (!state.subtracks) return true;
- return state.subtracks.includes(challenge.typeId);
+function filterByTypes(challenge, state) {
+ if (!state.types) return true;
+ return state.types.includes(challenge.typeId);
}
function filterByUpcoming(challenge, state) {
@@ -222,7 +214,7 @@ export function getFilterFunction(state) {
&& filterByGroupIds(challenge, state)
&& filterByText(challenge, state)
&& filterByTags(challenge, state)
- && filterBySubtracks(challenge, state)
+ && filterByTypes(challenge, state)
&& filterByUsers(challenge, state)
&& filterByEndDate(challenge, state)
&& filterByStartDate(challenge, state)
@@ -245,9 +237,9 @@ export function getFilterFunction(state) {
* @param {Object} state
* @return {Function}
*/
-export function getReviewOpportunitiesFilterFunction(state, validSubtracks) {
+export function getReviewOpportunitiesFilterFunction(state, validTypes) {
return (opp) => {
- const newSubTrack = _.find(validSubtracks, { abbreviation: opp.challenge.subTrack }) || {};
+ const newType = _.find(validTypes, { name: opp.challenge.type }) || {};
// Review Opportunity objects have a challenge field which
// is largely compatible with many of the existing filter functions
@@ -257,12 +249,11 @@ export function getReviewOpportunitiesFilterFunction(state, validSubtracks) {
// This allows filterByText to search for Review Types and Challenge Titles
name: `${opp.challenge.title} ${REVIEW_OPPORTUNITY_TYPES[opp.type]}`,
registrationStartDate: opp.startDate, // startDate of Review, not Challenge
- subTrack: opp.challenge.subTrack || '', // Sometimes back-end doesn't return this field
submissionEndDate: opp.startDate, // Currently uses startDate for both date comparisons
communities: new Set([ // Used to filter by Track, and communities at a future date
opp.challenge.track.toLowerCase(),
]),
- typeId: newSubTrack.id,
+ typeId: newType.id,
tags: opp.challenge.technologies || [],
platforms: opp.challenge.platforms || [],
};
@@ -271,7 +262,7 @@ export function getReviewOpportunitiesFilterFunction(state, validSubtracks) {
filterByTrack(challenge, state)
&& filterByText(challenge, state)
&& filterByTags(challenge, state)
- && filterBySubtracks(challenge, state)
+ && filterByTypes(challenge, state)
&& filterByEndDate(challenge, state)
&& filterByStartDate(challenge, state)
&& filterByReviewOpportunityType(opp, state)
@@ -455,16 +446,16 @@ export function setStartDate(state, date) {
}
/**
- * Clones the state and sets the subtracks.
+ * Clones the state and sets the challenge types.
* @param {Object} state
- * @param {Array} subtracks
+ * @param {Array} types
* @return {Object}
*/
-export function setSubtracks(state, subtracks) {
- if (subtracks && subtracks.length) return { ...state, subtracks };
- if (!state.subtracks) return state;
+export function setTypes(state, types) {
+ if (types && types.length) return { ...state, types };
+ if (!state.types) return state;
const res = _.clone(state);
- delete res.subtracks;
+ delete res.types;
return res;
}
diff --git a/src/utils/tc.js b/src/utils/tc.js
index aed187ca..5388d4bb 100644
--- a/src/utils/tc.js
+++ b/src/utils/tc.js
@@ -11,9 +11,10 @@
* uses upper-case literals to encode the tracks. At some point, we should
* update it in this code as well! */
export const COMPETITION_TRACKS = {
- DATA_SCIENCE: 'data_science',
- DESIGN: 'design',
- DEVELOP: 'develop',
+ DATA_SCIENCE: 'Data Science',
+ DESIGN: 'Design',
+ DEVELOP: 'Development',
+ QA: 'Quality Assurance',
};
/**