Welcome, Guest User :: Click here to login

Logo 67272c

67-272 :: Phase 3: Basic Views and Controllers

Overview

This phase we will continue our project to develop a foundation for the Creamery system. In this phase, we will focus our efforts on building an initial interface for the Creamery online. This phase will constitute 6 percent of your final course grade and is broken down into the following four components:

  1. Implementation of Site Design: A basic design for the site using CSS and appropriate images should be created. Unless students have strong CSS skills and already have a series of stylesheets they like to work with, students should use a CSS framework like MaterializeCSS or Foundation or Bootstrap to build their application. (We strongly encourage the use of MaterializeCSS, but not a requirement.) At the same time, it is important to customize the framework for your own purposes; expect a grade penalty if you pretty much stick with all the defaults the framework provides. A home page for the application needs to be set up with some appropriate content, but design decisions about the exact contents are not being graded in this phase. The student's name must appear on the bottom of every page in the footer (name should be listed as webmaster or designer). The information layout for employee, store and assignment views as well as add/edit forms for these models should be appropriate. See handout for additional issues raised by our limited set of models in this phase

  2. CRUD Functionality Established: In this phase, you will continue to use the phase 2 data model, which is a simplified system. In addition, a list of high level uses cases is provided below to assist. A web-based interface for doing all CRUD operations for the entities must be up and working. The cucumber tests provided must all pass (levels 0-4). To a large extent, this section will be assessed using tests discussed below and carries the bulk of the grade in this phase.

  3. Unit and Functional Testing: All models along with all unit and functional tests (given as a solution to the previous phase) must be fully working. Since you were given a solution, expect a heavy penalty if this solution is not implemented and any unit tests fail. You are free to add new methods to the models, but be sure they are fully tested so your coverage does not fall below 100 percent.

  4. Coding Style: All code must be appropriately organized. What that means at this stage is the following: 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. All business logic should be in models, not views or controllers.


Starting the project

Starter code is available for you on darkknight. It is recommended that you begin with this code for two reasons. First, it has a complete set of models that are fully-tested and known to work for the task at hand. The second is that the code contains a set of cucumber tests that will be used to assess a large portion of the app's CRUD functionality.

It is also strongly encouraged that you read the README file with this repo as it has directions for running tests and populating the database with realistic data for you to experiment with.


Running Cucumber tests

In case you didn't read the README, in this phase we will be using cucumber tests to verify that much of the basic CRUD functionality is in place. These are not comprehensive, but should cover a lot of the essential read use cases and, along with controller tests, will count for a large portion of the grade in this phase (over half the grade). The following command will run these tests:

  bundle exec cucumber

Note that you will need to run rails db:test:prepare before your first cucumber test. If your design is very different and not able to pass the cucumber tests, discuss it with Prof. H to see if you are eligible for an exception. (All exceptions to cucumber tests must be granted in advance of the project's due date.)


Finishing the project

Your project will be turned in via git -- at 11:59pm on March 22, 2020 we will get a copy of your files in your remote git repository on darkknight-cmuis.net. We have published instructions on how to access your remote repository, but you should try to access your remote repository early in this phase; if you have not posted any code to the remote repository prior to spring break and run into access issues in the last few days of the project there will not be much grace given and you can expect a stiff grade penalty. The solution for this phase will be released on the next day -- no late assignments will be accepted after solutions are released.

Again, if you have questions regarding the turn-in of this project or problems downloading any of the materials below, please post them on Piazza or ask someone well in advance of the turn-in date. Especially since this is due at the end of spring break (we could have made it due prior to spring break, but since we are not grading until March 16th, we are giving you the extra time), waiting until a few days before it is due to get help is unwise -- you risk not getting a timely response that close to the deadline and will not be given an extension because of such an error.

Additional Information and Supporting Materials:

High Level Use Cases for Phase 3
Instructions for Accessing Remote Repositories

 

Due Date: March 22, 2020

Weight: 6.0