- RecipesHelper
- should be able to user-friendly a ferret query
- should view "number_of_ingredients:( >= 000)" as a special case (show all) when user-friendly-ing a ferret query string
- should be able to ferret-ize a user-friendly query
- should know the sort fields
- should know that the default sort order for date is descending
- should know that the default sort order for and non-date field is ascending
- should be able to user-friendly a ferret query
- should be able to obtain a Ferret SortField give a field
- should link_to_sort (without a direction indicator)
- should link_to_sort (with a direction indicator)
- ApplicationHelper
- should pretty format integer as itself
- should pretty format easy fractional number with HTML
- should pretty format non-trivial decimal as itself
- should be able to pretty print 1/8, 1/6, 1/4, 1/3, 3/8, 1/2, 5/8, 2/3, 3/4, 5/6, and 7/8
- should pretty print a fraction given a numerator and denominator
- should be able to convert recipe wiki tag to HTML
- should be able to convert recipe wiki tag to HTML (using recipe title)
- should be able to convert howto wiki tag to HTML (using HOWTO title)
- should return nil when wikify-ing recipe links on nil
- should return an empty string when attempting to wikify a link to a non-existent recipe
- should return an empty string when attempting to wikify a link to a non-existent howto
- should wiki-ify text
- should return nil when wikify-ing nil
- should do wiki by wikifying, then textilizing
- should do wiki (without paragraph) by textilizing (without paragraph), then wikifying
- should return nil for wiki with blank argument
- should return nil for wiki_without_paragraph with blank argument
- Kid class
- should provide a lookup for kid nickname (for public consumption)
- Recipe class
- should be able to return a mapping between ferret search fields and user-friendly equivalents
- should be able to find a recipe, given a date and label
- should be able to say if a recipe with a given date and label exists
- should be able to find a recipe given a URI (YYYY/MM/DD/label)
- should be able to find a recipe, given a year, month, day, and label
- should find nothing if trying to find a recipe by year, month, day, label without supplying those things
- should return a date and label when supplied with a URI
- should be able to determine if a recipe exists with a URI
- should be able to find HOWTO recipes
- should return nil when performing full text searches on nothing
- should use aaf's find_by_contents when performing full text searches
- should find unpublished recipes with proper scope
- should find all unpublished recipes by default
- Recipe instance
- should be able to push an ingredient with amount attributes
- should be able to return a nicely formatted URI
- should return a replacement if it has a successor (in RecipeUpdate)
- should return a nil replacement if it has no successor (in RecipeUpdate)
- should not have a replacement if it has no successor (in RecipeUpdate)
- should be able to create a new replacement for itself, using the has_one association's build_successor method
- should be able to set a new replacement for itself
- should return a replacement if it has a predecessor (in RecipeUpdate)
- should return a nil replacement if it has no predecessor (in RecipeUpdate)
- should not be a replacement if it has no predecessor (in RecipeUpdate)
- should not be indexed in ferret if it has a replacement
- should not be indexed in ferret if it is not published
- should be able to return the next recipe (date ordered)
- should be able to return the prev recipe (date ordered)
- should be able to assign tool IDs
- should aggregate inspirations from people associated with recipe
- should be able to assign person IDs
- should be able to assign book IDs
- should be able to produce a ferret-index-able list of ingredients
- should be able to produce a ferret-index-able list of tags
- should return a ferret-index-able "serves" string
- should return a ferret-index-able "prep time" string
- should return a ferret-index-able "cook time" string
- should return a ferret-index-able "inactive time" string
- should return a ferret-index-able "number of ingredients" string
- should have an aliased title method for use with ferret sorting
- should return empty for alternate preparations if no group
- should be able to get a list of all other recipes in the same group
- should be able to return a hash version of itself
- should be able to return a JSON version of itself
- Ingredient class
- should be able to list all unique names (sorted)
- should return a list of all common ingredients
- should produce a list of common ingredient names
- should produce a list of ingredient names
- should list recipes by ingredient name
- Ingredient instance
- should produce a pretty name
- should produce a full name that is the concatenation of its name and kind
- Book class
- should be able to get a list of all books, sorted by title (excluding initial articles)
- should be able to get a list of sorted books with images
- SiteMailer class
- should set feedback
- should be able to send mailing list subscriptions
- Meal callbacks
- after save, if published, it should publish all un-published recipes
- Meal class
- should be able to find all meals from a given year
- should be able to find all meals from a given month (given a date)
- should be able to find all meals from a given month (given a year and a month)
- should be able to find by date
- should be able to say if a meal exists on a given day
- should be able to find a meal given a URI
- should be able to find a meal by year, month and day
- should be able to derive a date from a URI
- should be able to determine if a meal exists with a particular URI
- should be able to find the most newest N meals
- should be able to find the newest meal
- should be able to find the most oldest N meals
- should be able to find the oldest meal
- should find unpublished meals with proper scope
- should find all unpublished meals by default
- Meal instance
- should not be valid without a title or date
- should be able obtain all links to recipes
- should be able to obtain all recipes made for this meal
- should be able to find recipes made new for this meal
- should generate a uri
- should return meal tags if they are not empty
- should return recipe tags if no meal tags
- should return recipe tags, minus vegetarian if chicken or meat, if no meal tags
- should be able to return the next meal (by date)
- should be able to return the previous meal (by date)
- should be able to return a hash version of itself
- should be able to return a JSON version of itself
- MenuItem with a name
- should find all wiki recipe uris
- RecipeUpdate instance
- should commit suicide if it lacks either a successor or a predecessor
- User class
- should be able to authenticate given a valid login and password
- should not authenticate, given an invalid login
- should not authenticate, given an invalid password
- should use digest/sha1 to encrypt a password & salt
- User instance
- should be able to encrypt a password with its salt
- should be able to authenticate a password by comparing it to the stored crypted password
- should remember a token if the token expiration is set and is in the future
- should be able to remember the user
- should be able to forget the user
- should be able to answer if is an author
- User callbacks
- should encrypt the password before saving
- User validations
- should be valid with a login, email, password, and password_confirmation
- should not be valid without a login
- should not be valid if the password and password confirmation are different
- should not be valid without a password
- should not be valid without an email
- Role class
- should be able to return the author role
- Image instance
- should have a path name partitioned by date
- should have a thumbnail path name partitioned by date
- should initialize thumbnails with resources (meal or recipe)
- RequireRoles instance
- should use a single initializer argument as both the model's user field and the name of the single role to require
- should use more than one initializer argument as the model's user field and the list of roles that are required
- should fail validation without a current user
- should fail validation with current user that is not the correct role
- should store the current user in the specified user field before saving
- Preparation instance
- should delegate ingredient name to ingredient
- should delegate ingredient kind to ingredient
- should be able to pretty format quantity
- MyAnalyzer instance
- should tokenize using an English stem filter, with initialized stop words, passed through a lower-case filter
- GET /meals/index
- should redirect_to the home page
- GET /meals/mini_calendar
- should determine first & last available month, requested month, and render in a frame
- should redirect back to last month with a meal if too far in the future
- should redirect back to first month with a meal if too far in the past
- GET /meals/show
- should destroy the cached version if flash is set (don't keep flash message in cache!)
- should assign show_recipe_search, meal, title, and tags
- should render with meal if passed YMD params
- should redirect to the home page with a flash notice, if unable to locate meal
- GET /meals/new
- should instantiate a new Meal object and render
- POST /meals/create
- should save a new meal (with the current_user as author) and redirect to the meal show page with a flash message
- should save a new meal and redirect to the meal edit page, if something other than "Create" is pressed
- should create new, associated, menu items, if supplied
- should re-render the new page if not able to update meal attributes
- GET /meals/edit
- should retrieve the meal
- POST /meals/update
- should update the meal and redirect to the show page
- should update the meal and redirect to the edit page, if a button other than "Save changes" is pressed
- should be able to create, update, and delete menu items
- should re-render the edit page if not able to update meal attributes
- should be authorized if the current user is an author
- GET /meals/show_month
- should find all meals within the month given
- should redirect to latest month with meal, if requested date is too far in the future
- should redirect to first month with meal, if requested date is too far in the past
- GET /meals/show_year
- should find all meal within the year given
- GET /meals/rss
- should find all meal within the year given
- Expiring actions
- expiring meals should expire a whole load of actions
- GET /home/index
- should assign @meals, @old_meals and render
- GET /home/about
- should render with the master (not home) layout
- GET /home/who
- should render with the master (not home) layout
- GET /home/feedback
- should accept two parameters: subject and uri
- GET /home/email
- should be successful
- GET /home/mailing_lists_subscribe
- should deliver the mailing lists subscription request and render OK
- GET /home/interstitial
- should redirect to the homepage after 5 seconds
- should redirect immediately to the homepage if no flash message
- GET /recipes/index
- should invoke list
- GET /recipes/show
- should render with recipe search box, assigning recipe, title and tags
- should render fine with year, month, day, label params
- should render JSON if that format is requested
- should destroy the cached version if flash is set (don't keep flash message in cache!)
- should redirect to the recipe list with an error if unable to find requested recipe
- GET /recipes/new
- should instantiate a new Recipe object and render
- POST /recipes/create
- should save a new recipe (with the current_user as author) and redirect to the recipe show page with a flash message
- should save a new recipe and redirect to the edit page with a flash message, if submitted with button other than "Create"
- should create ingredient preparation instructions, if supplied
- should re-render the new page if not able to update recipe attributes
- GET /recipes/edit
- should retrieve the recipe
- POST /recipes/update
- should update the recipe and redirect to the show page
- should update the recipe and redirect to the edit page, if a button other than "Save changes" is pressed
- should create ingredient preparation instructions, if supplied
- should delete ingredient preparation instructions, if the supplied ingredient name is blank
- should update supplied ingredient preparation instructions, if the supplied ingredient name is not blank
- should re-render the edit page if not able to update recipe attributes
- should be authorized if the current user is an author
- GET /recipes/list
- should set up pagination for entire Recipe collection and render search
- GET /recipes/advanced_search
- should render the advanced search form
- GET /recipes/search
- should re-ferret query and render search results page
- should show all if page=0
- should redirect to list if no query is passed
- should match all recipes if no query is passed, but sorting is applied
- should set tags instance variable when searching by tags
- should set tags instance variable to an array when searching by multiple tags
- should respond to the _all search parameter
- should respond to the _phrase search parameter
- should respond to the _any search parameter
- should respond to the _without search parameter
- should respond to the _title search parameter
- should respond to the _ingredient search parameter
- should respond to the _ingredient_count_min search parameter
- should respond to the _ingredient_count_max search parameter
- should respond to the _ingredient_count_min and _ingredient_count_max search parameters
- should respond to the _prep_min search parameter
- should respond to the _prep_max search parameter
- should respond to the _prep_min and _prep_max search parameters
- should respond to the _cook_min search parameter
- should respond to the _cook_max search parameter
- should respond to the _cook_min and _cook_max search parameters
- should respond to the _category search parameter & treat it as an "OR"
- GET /recipes/search_by_category
- should ferret tags and search
- should ferret tags and search, rendering entire list matching
- Expiring actions
- should expire a whole load of actions
- GET /ingredients/index
- should invoke list
- GET /ingredients/list
- should render OK
- GET /books/index
- should render list
- GET /books/list
- should obtain a list of books, and group recipes
- GET /image/new
- should load the appropriate meal and build an image
- POST /image/create
- should create a new image and redirect to the show meal page with a flash message
- should re-render the new page if the image can not be saved
- POST /image/destroy
- should flash a success message and redirect back to the meal page
- should flash a failure message and redirect back to the meal page if the image fails to get deleted
- GET /account/index
- should redirect to the author index page if the user is logged in and is an author
- should redirect to the home index page if the user is logged in and is NOT an author
- should redirect to the home index page if the user is not logged in
- GET /account/login
- should render the login page if the request is a GET
- POST /account/login
- should set the current user and send a flash message to the interstitial, if logged in
- should redirect to the author page upon successful login of an author
- should set the current user, remember her, and redirect home with a flash message, if logged in
- should render the login page if login was not successful
- GET /account/logout
- should forget the current user, redirect to the home page with a flash notice
- GET /account/interstitial
- display the page, with a default redirect of the homepage after 5 seconds
- display the page, redirecting to the author homepage after 5 seconds for authors
- GET /author/index
- should list all unpublished meals and recipes
- should be authorized if the current user is an author
- RecipeSweeper instance
- should expire recipe page after a recipe update
- should expire recipe page after a recipe destroy
- MealSweeper instance
- should expire meal page after a meal update
- should expire new recipe pages after a meal update
- should expire meal page after a meal destroy
- should expire new recipe pages after a meal destroy