In this phase we will continue our project to develop a foundation for the ScienceQuiz system. In this phase, we will focus our efforts on building out the models for the four entities given to you in the first ERD and adding all necessary business logic. In addition, you will have to write unit tests for all models. This phase will constitute 7 percent of your final course grade and is broken down into the following three components:
-
Creation of Models: In the starter code you are given, we have provided you an ERD, a database design, and a data dictionary, along with a set of project specs. These documents are all located in the docs
directory of your starter repository. All these documents are useful in this phase -- in some cases, they have overlapping coverage, but sometimes key ideas are found only in one of these documents. You are responsible for what is on all of the documents provided.
-
Unit Testing: Unit tests for all methods in all models must be written and fully passing. We will check to make sure there is 100 percent code coverage for unit tests using the simplecov
gem used in class and in lab. Because simplecov does suffer from some false positives (as mentioned in class) we may spot check tests to make sure certain tests were included. Only the models in this phase need complete coverage. There are steep penalties for less than 100 percent coverage and no credit at all for less than 90 percent coverage -- see the starter code README for more details, but this is a critical aspect of this phase.
-
Coding Style: All code must be appropriately organized. What that means at this stage is the following: Related or similar functionality is grouped or clustered together. Indentation should be used consistently to make code readable. Comments showing organization should be present and explaining difficult code should be used when/if necessary.
Checkpoints for this phase:
-
Checkpoint 1: One model must be written and tested by Sunday, February 28th. (Test requirement may be waived depending on class progress.) Model to be written and tested is at the student's discretion. Students will show model code and demonstrate the tests pass to a TA. The TA will not grade the code or review test coverage, just verify that the model was able to pass the test.
-
Checkpoint 2: One additional model must be written and tested by Sunday, March 7th. (Test requirement may be waived depending on class progress.) The additional model to be written and tested is at the student's discretion. Students will show model code and demonstrate the tests pass to a TA. The TA will not grade the code or review test coverage, just verify that the model was able to pass the test.
Getting the starter code for this phase:
You have all been enrolled in our GitHub Classroom with your Andrew email. If you do not already have a GitHub account associated with your Andrew email, please go to github.com and set up an account -- it's free and easy.
We strongly recommend that you add your public SSH key to this GitHub account. If you do not have a public key, we recommend this tutorial from GitHub that will walk you through the process of setting up SSH keys and this article that explains how to add the key to your GitHub account. (Additional hint: Prof. H recommends that you don't use a passphrase when setting up your key -- it will save a lot of aggravation later.)
Once you have a GitHub account established, go to the link https://classroom.github.com/a/hT4caH8F to get your copy of the starter code. This code will then be added to a private repo under your account. The teaching staff will have access to your code -- you don't need to give them access -- and no one else should have access to your code. We are monitoring access to your repo and the grading criteria in the starter code README clearly spell out consequences for access violations. See this tutorial for cloning the remote code to your local machine.
There are grading notes in the README of the starter code. Please read carefully before starting this phase. If you have any questions about the grading criteria, please let us know as soon as possible.