Skip to content

Commit 08a664f

Browse files
committed
Refactor train model exports to make it mockable
1 parent a3d2fb4 commit 08a664f

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

src/oceans/models/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {init as initLoading} from './loading';
22
import {init as initWords} from './words';
3-
import {init as initTraining} from './train';
3+
import train from './train';
44
import {init as initPredicting} from './predict';
55
import {init as initPond} from './pond';
66
import {Modes} from '../constants';
@@ -17,7 +17,7 @@ export const init = state => {
1717
initWords();
1818
break;
1919
case Modes.Training:
20-
initTraining();
20+
train.init();
2121
break;
2222
case Modes.Predicting:
2323
initPredicting();

src/oceans/models/train.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import SimpleTrainer from '../../utils/SimpleTrainer';
55
import SVMTrainer from '../../utils/SVMTrainer';
66
import {generateOcean} from '../../utils/generateOcean';
77

8-
export const init = () => {
8+
const init = () => {
99
const state = getState();
1010

1111
let trainer = state.trainer;
@@ -38,7 +38,7 @@ export const init = () => {
3838
});
3939
};
4040

41-
export const onClassifyFish = doesLike => {
41+
const onClassifyFish = doesLike => {
4242
const state = getState();
4343

4444
// No-op if animation is currently in progress.
@@ -73,3 +73,8 @@ export const onClassifyFish = doesLike => {
7373

7474
return true;
7575
};
76+
77+
export default {
78+
init,
79+
onClassifyFish
80+
};

src/oceans/ui.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
resetTraining,
1313
friendlyNameForFishPart
1414
} from './helpers';
15-
import {onClassifyFish} from './models/train';
15+
import train from './models/train';
1616
import {arrangeFish} from './models/pond';
1717
import colors from './colors';
1818
import aiBotHead from '@public/images/ai-bot/ai-bot-head.png';
@@ -927,7 +927,7 @@ let UnwrappedTrain = class Train extends React.Component {
927927
style={styles.trainButtonNo}
928928
onClick={() => {
929929
this.setState({headOpen: true});
930-
return onClassifyFish(false);
930+
return train.onClassifyFish(false);
931931
}}
932932
sound={'no'}
933933
>
@@ -939,7 +939,7 @@ let UnwrappedTrain = class Train extends React.Component {
939939
style={styles.trainButtonYes}
940940
onClick={() => {
941941
this.setState({headOpen: true});
942-
return onClassifyFish(true);
942+
return train.onClassifyFish(true);
943943
}}
944944
sound={'yes'}
945945
>

test/unit/oceans/models/train.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const {initFishData} = require('@ml/utils/fishData');
22
import {setState, getState, resetState} from '@ml/oceans/state';
33
import {ClassType, Modes} from '@ml/oceans/constants';
4-
import {init, onClassifyFish} from '@ml/oceans/models/train.js';
4+
import train from '@ml/oceans/models/train.js';
55

66
describe('Model quality test', () => {
77
beforeAll(() => {
@@ -17,7 +17,7 @@ describe('Model quality test', () => {
1717
});
1818

1919
test('init state', () => {
20-
init();
20+
train.init();
2121
const state = getState();
2222
expect(state).toBeTruthy();
2323
expect(state.trainer).toBeTruthy();
@@ -26,11 +26,11 @@ describe('Model quality test', () => {
2626
});
2727

2828
test('state changes on classify', () => {
29-
init();
29+
train.init();
3030
// Set isRunning to false to simulate animation ending
3131
setState({isRunning: false});
3232
const previousState = getState();
33-
expect(onClassifyFish(true)).toBe(true);
33+
expect(train.onClassifyFish(true)).toBe(true);
3434
const newState = getState();
3535
expect(newState.trainingIndex).toBe(previousState.trainingIndex + 1);
3636
expect(newState.yesCount).toBe(previousState.yesCount + 1);

0 commit comments

Comments
 (0)