diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..399ee1b --- /dev/null +++ b/.env.development @@ -0,0 +1 @@ +JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnk0u5Aag3eJk3FaiG9H+\nv/NLRjiZxFXGJBoOO5Zhal1j8tk1D1vkWRMk+KdCjN998s//62kwYMLkAjOuEoCc\n4Lb6hCeHVIgL+nX9JOxEny0Zi6Koli1KnyQNUZ7vVYHf5NZ7k1h6MShYIzhUPdks\ntiE9nQMtP18JBupccES986iMZw8hra3AGjTBXR6siRePnBa84rYlPhzETjZX4jf6\nM+aDI7+KY3ztrkcBSQL7sbPdILBepBzxHCN1uqUBoYbVTYPZYMmaGsK553KcVds2\nB83LAy626KRAD7Sp1/NwgRIcL55bB1xef/Q+qjSnIOGd4r2JkmjmNLEM4A0p1rEo\nFQIDAQAB\n-----END PUBLIC KEY-----" diff --git a/go b/go index dff6d68..b5400df 100755 --- a/go +++ b/go @@ -9,7 +9,7 @@ } function reset_db { - env=${1:-test} + env=${1:-test}q dbname=interviewdb-${env} dropdb ${dbname} createdb ${dbname} diff --git a/package.json b/package.json index f28e18d..c228482 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "devDependencies": { "body-parser": "^1.17.1", "chai": "^3.5.0", + "chai-enzyme": "^0.6.1", "chai-http": "^3.0.0", "dotenv": "^4.0.0", "enzyme": "^2.8.0", diff --git a/src/browser/components/common/router.js b/src/browser/components/common/router.js index 7cc1295..ba9a43b 100644 --- a/src/browser/components/common/router.js +++ b/src/browser/components/common/router.js @@ -21,10 +21,10 @@ export default class Routes extends Component { } const LandingComponent = (props, state, params) => - + const GameOptionsComponent = (props, state, params) => - + const ProfileComponent = (props, state, params) => diff --git a/src/browser/components/foo.js b/src/browser/components/foo.js deleted file mode 100644 index 9855a50..0000000 --- a/src/browser/components/foo.js +++ /dev/null @@ -1,6 +0,0 @@ -import React, {Component} from 'react' -export default class Foo extends Component { - render() { - return (
hello
) - } -} \ No newline at end of file diff --git a/src/browser/components/molecules/form/index.js b/src/browser/components/molecules/form/index.js index 3b647d5..c2b0996 100644 --- a/src/browser/components/molecules/form/index.js +++ b/src/browser/components/molecules/form/index.js @@ -42,6 +42,15 @@ export default class Form extends Component{ this.state = { input: {} } + + const form = this.props.inputModules.map( inputModule => { + return {'Input': this.initTextInput.bind(this, inputModule), + 'Checkbox': this.initCheckbox.bind(this, inputModule), + 'Radio': this.initRadio.bind(this, inputModule), + 'Select': this.initSelect.bind(this, inputModule) + }[inputModule.type]() + }) + this.state.form = form } parseName(inputModule, option){ @@ -63,9 +72,9 @@ export default class Form extends Component{ } initTextInput(inputModule) { - let domElement = ( ) @@ -76,9 +85,9 @@ export default class Form extends Component{ } initCheckbox(inputModule) { - let domElement = () let currentState = this.state @@ -90,9 +99,9 @@ export default class Form extends Component{ } initRadio(inputModule) { - let domElement = () let currentState = this.state @@ -104,11 +113,11 @@ export default class Form extends Component{ initSelect(inputModule) { let domElement = ( - ) let currentState = this.state @@ -117,17 +126,6 @@ export default class Form extends Component{ return domElement } - componentDidMount() { - const form = this.props.inputModules.map( inputModule => { - return {'Input': this.initTextInput.bind(this, inputModule), - 'Checkbox': this.initCheckbox.bind(this, inputModule), - 'Radio': this.initRadio.bind(this, inputModule), - 'Select': this.initSelect.bind(this, inputModule) - }[inputModule.type]() - }) - this.setState({form: form}) - } - render(){ return(
diff --git a/src/browser/components/molecules/prompt-input/index.js b/src/browser/components/molecules/prompt-input/index.js index 8fa53f7..0586669 100644 --- a/src/browser/components/molecules/prompt-input/index.js +++ b/src/browser/components/molecules/prompt-input/index.js @@ -11,7 +11,7 @@ export default class AddInput extends Component { render() { return ( -
+
diff --git a/src/browser/components/molecules/scorecard/index.js b/src/browser/components/molecules/scorecard/index.js index 7ccc127..3163660 100644 --- a/src/browser/components/molecules/scorecard/index.js +++ b/src/browser/components/molecules/scorecard/index.js @@ -5,10 +5,8 @@ export default class Scorecard extends Component { const {questions, answered, skipped} = this.props return (
-
Correct: {answered.length}/{questions.length}
Skipped: {skipped.length}/{questions.length}
-
) } diff --git a/src/browser/components/pages/game/index.js b/src/browser/components/pages/game/index.js index 42459e4..3015714 100644 --- a/src/browser/components/pages/game/index.js +++ b/src/browser/components/pages/game/index.js @@ -41,14 +41,14 @@ export default class Game extends Component {
-
-
-
+
diff --git a/test/browser/atoms/form_input_test.js b/test/browser/atoms/form_input_test.js new file mode 100644 index 0000000..7360131 --- /dev/null +++ b/test/browser/atoms/form_input_test.js @@ -0,0 +1,21 @@ +import React from 'react' +import { expect } from 'chai' +import { shallow, mount } from 'enzyme' +import { jsdom } from 'jsdom' + +import FormInput from '../../../src/browser/components/atoms/form-input/index' + +describe('', () => { + + it('should return a div', () => { + const wrapper = shallow() + expect(wrapper.find('div.uk-form-controls')).to.have.length(1) + }) + + it('should have an input field inside the main div', () => { + const wrapper = mount() + expect(wrapper.children()).to.have.length(1) + expect(wrapper.find('div.uk-form-controls').childAt(0).type()).to.equal('input') + expect(wrapper.find('#form-horizontal-text')).to.have.length(1) + }) +}) diff --git a/test/browser/atoms/profile_box_test.js b/test/browser/atoms/profile_box_test.js new file mode 100644 index 0000000..c833ff5 --- /dev/null +++ b/test/browser/atoms/profile_box_test.js @@ -0,0 +1,22 @@ +import React from 'react' +import { expect } from 'chai' +import { shallow, mount } from 'enzyme' +import { jsdom } from 'jsdom' + +import ProfileBox from '../../../src/browser/components/atoms/profile-box/index' + +describe('', () => { + + it('should return a div', () => { + const wrapper = shallow() + expect(wrapper.children()).to.have.length(1) + }) + + it('the child element should be a div', () => { + const wrapper = mount() + expect(wrapper.find('div.uk-grid-small').childAt(0).type()).to.equal('div') + }) + + + +}); diff --git a/test/browser/atoms/select_tag_test.js b/test/browser/atoms/select_tag_test.js new file mode 100644 index 0000000..f8111f2 --- /dev/null +++ b/test/browser/atoms/select_tag_test.js @@ -0,0 +1,48 @@ +import React from 'react' +import { expect } from 'chai' +import { shallow, mount } from 'enzyme' +import { jsdom } from 'jsdom' + +import SelectTag from '../../../src/browser/components/atoms/form-select/index' + + +describe('', () => { + const label = 'difficulty' + const options = ['Javascript', 'SQL', 'http'] + const value = 'SQL' + + it('should return a div', () => { + const wrapper = shallow() + expect(wrapper.find('div.uk-margin')).to.have.length(1) + }) + + context('the outer div should contain two html elements', () => { + it('should have a label', () => { + const wrapper = mount() + expect(wrapper.find('div.uk-margin').childAt(0).type()).to.equal('label') + expect(wrapper.props().label).to.equal('difficulty') + }) + + it('should have a div', () => { + const wrapper = mount() + expect(wrapper.find('div.uk-margin').childAt(1).type()).to.equal('div') + }) + }) + + context('inner divs child should be a select', () => { + it('is a selector', () => { + const wrapper = mount() + expect(wrapper.find('div.uk-form-controls').children().type()).to.equal('select') + }) + it('should display a value', () => { + const wrapper = mount() + expect(wrapper.props().value).to.equal('SQL') + }) + }) + + it('should render N+1