code-checkとはGiveryが開発中のWebアプリケーションです。このサービスでは、ユーザーは様々な種類のコーディングテストを作成したり、回答をすることが出来ます。 このテストは、そのサービスに向けてのプロトタイプのテストです。
- Giveryの求職者の開発スキルを測定する
- Giveryがどのような開発体制で開発をしているのかの理解を促す(api-first-specなど)
- code-checkのサービス開発・機能改善の参考にする
- Webアプリケーションフレームワーク等を活用してREST APIを作成してください。
- APIのスペックはspecからご覧いただけます.
- これらのスペックは api-first-specを使って作成されており、いくつかのAPIテストがあります。
- 上記で定義されているAPIの全てのテストを通過するWebアプリケーションを作成してください。
このテストには
- Webアプリケーションフレームワーク
- MySQLデータベース
- GitHubアカウント(リポジトリをフォークするため)
の利用が必要です。
まずはじめに、あなたのGithubアカウントでこのリポジトリをフォークし、その後フォークしたリポジトリを用いてWebアプリケーションを作成してください。
データベースの構造とサンプルデータは sql/create.sqlに記載しています。
MySQLサーバをたてて、スクリプトを実行してください。
もし、自動で開発環境を構築したい場合、弊社が提供している test env builderをご活用いただくことも可能です。
上記利用の場合は、以下のコマンドより実行してください。
git clone git@github.com:code-check/env-builder.git test-env
cd test-env
cp Vagrantfile.sample Vagrantfile
cp hosts.sample hosts
vagrant up
ansible-playbook all.yml
vagrant ssh
git clone git@github.com:[YOUR GITHUB ACCOUNT]/sample-test.git
mysql -uvagrant -pvagrant -Dvagrant < sample-test/sql/create.sql
cd sample-test
api-first-specはMochaを利用しています。 テストの実行は以下のコマンドより実行できます。
cd sample-test
npm install
mocha spec/*
単体テストも以下のコマンドより実行可能です。
mocha spec/users_login.js
アプリケーションのデフォルトの設定は spec/config/config.json.
に記載されています。
このアプリケーションは、シンプルなイベント予約システムです。
- 以下2通りのユーザーがあります。
- student
- company
- 全てのユーザーはイベントリストを閲覧することが出来ます。 (ログインしていないユーザーも含む)
- studentが予約していないイベントを予約することが出来ます。
- companyは、彼らの作成したイベントを閲覧することが出来ます。
- email と password をもちいてログイン出来るようにしてください。
- login token と user data を返すようにしてください。
- group_id = 1 は student userを表します。
- group_id = 2 は company userを表します。
- ログインは必須ではありません
- "from" パラメータは必須です。
- これは開催日が「いつから」のイベントを取得するかというものです。
- "offset" と "limit" のパラメータは任意です。
- ログインは必須です。
- 予約できるユーザーはstudentでないといけません。
- ログインは必須です。
- ユーザーはcompanyでなければいけません。
- イベント情報にはイベントエントリー者の合計が含まれます。
もし、あなたがこのアプリケーションのプロジェクトマネージャーだとして、このアプリケーションを改善するとしたら、何をしますか? あなたの意見を answer.md に記載してください。
- issueに以下の方法で提出してください。
- "implemented"というタイトルを付けてください。
- コメント欄にあなたの回答リポジトリのURLを記載してください。
もし質問がある場合はこのリポジトリの issueまでお問い合わせください。
このテストは新しいWebサービスのための実験的なテストでもありますので、もしフィードバックがあれば、是非アドバイス等いただければ幸いです。