Software Development (CSC 321 2016S) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [Teaching & Learning]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Outlines]
Reference: [Slack] [Ruby@CodeCademy]
Related Courses: [Rails Tutorial] [CSC 321 2016S @ EdX] [CSC 321 2015S (Davis)] [CSC 321 2015F (Rebelsky)] [CSC 322 2016S (Rebelsky)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker]
Overview
Why does Dr. Racket make some words green and some words black?
Words in the dictionary are green. Other words are black.
What do you take as the key lessons from the modeling exercise?
The stack
Features
Scenarios
Steps
Step Definitions - regular expressions that turn "natural"
language into calls to functions
/I go to the page for user number ([0-9]+)/
gotopage "/users/\1"
Support Code
Where we write things like gotopage
Automation Library
Things your support code relies on
Capybara
When you write Cucumber, you need to write the "human stuff" (features, scenarios, steps), all reside in the feature file; and the programmer stuff (step definitions, support code)
Makes sense for code reuse Makes it harder to do updates And working in what feels like three different languages is not always all that fun
Let's walk through some scenarios and think about what work we might have to do to implement these Cucumber scenarios. Do they effect model, view, or controller (or all three)? (Suppose we had the repaired version of the original database, with no director.)
Feature: search for movies by director As a movie buff So that I can find movies with my favorite director I want to include and search on director information in movies I enter Background: movies in database Given the following movies exist: | title | rating | director | release_date | | Star Wars | PG | George Lucas | 1977-05-25 | | Blade Runner | PG | Ridley Scott | 1982-06-25 | | Alien | R | | 1979-05-25 | | THX-1138 | R | George Lucas | 1971-03-11 | Scenario: add director to existing movie When I go to the edit page for "Alien" And I fill in "Director" with "Ridley Scott" And I press "Update Movie Info" Then the director of "Alien" should be "Ridley Scott" Scenario: find movie with same director Given I am on the details page for "Star Wars" When I follow "Find Movies With Same Director" Then I should be on the Similar Movies page for "Star Wars" And I should see "THX-1138" But I should not see "Blade Runner" Scenario: can't find similar movies if we don't know director (sad path) Given I am on the details page for "Alien" Then I should not see "Ridley Scott" When I follow "Find Movies With Same Director" Then I should be on the home page And I should see "'Alien' has no director info"
vs.
movies reset
movies add new Movie("Star Wars", "PG", "George Lucas", ...);
IY says that the poorly named FactoryGirl Gem helps do this kind of code.