From 1effbf460dea6b7e441991bc1de83ce622d96dd4 Mon Sep 17 00:00:00 2001 From: Marin Usalj Date: Sat, 24 Nov 2012 14:20:22 -0800 Subject: [PATCH] added RSpec and Shoulda. Tested User --- .gitignore | 2 + .rspec | 3 + Gemfile | 5 + Gemfile.lock | 20 + selfstarter.sublime-workspace | 1349 --------------------------------- spec/fixtures/orders.yml | 27 + spec/fixtures/users.yml | 7 + spec/models/user_spec.rb | 6 + spec/spec_helper.rb | 38 + 9 files changed, 108 insertions(+), 1349 deletions(-) create mode 100644 .rspec delete mode 100644 selfstarter.sublime-workspace create mode 100644 spec/fixtures/orders.yml create mode 100644 spec/fixtures/users.yml create mode 100644 spec/models/user_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/.gitignore b/.gitignore index fd3f34b..8ea7842 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ config/settings.local.yml config/settings/*.local.yml config/environments/*.local.yml + +*.sublime-workspace diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..5293c4f --- /dev/null +++ b/.rspec @@ -0,0 +1,3 @@ +-fp +--color +--require spec_helper \ No newline at end of file diff --git a/Gemfile b/Gemfile index a2ed6a0..9053a7b 100644 --- a/Gemfile +++ b/Gemfile @@ -20,6 +20,11 @@ group :assets do gem 'uglifier', '>= 1.0.3' end +group :development, :test do + gem 'rspec-rails', '~> 2.0' + gem 'shoulda' +end + # jQuery gem 'jquery-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 50b87f7..732aeba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,6 +42,7 @@ GEM execjs coffee-script-source (1.3.3) daemons (1.1.9) + diff-lcs (1.1.3) erubis (2.7.0) eventmachine (1.0.0) execjs (1.4.0) @@ -92,11 +93,28 @@ GEM json (~> 1.4) rest-client (1.6.7) mime-types (>= 1.16) + rspec-core (2.12.0) + rspec-expectations (2.12.0) + diff-lcs (~> 1.1.3) + rspec-mocks (2.12.0) + rspec-rails (2.12.0) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 2.12.0) + rspec-expectations (~> 2.12.0) + rspec-mocks (~> 2.12.0) sass (3.2.1) sass-rails (3.2.5) railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) + shoulda (3.3.2) + shoulda-context (~> 1.0.1) + shoulda-matchers (~> 1.4.1) + shoulda-context (1.0.1) + shoulda-matchers (1.4.1) + activesupport (>= 3.0.0) sprockets (2.1.3) hike (~> 1.2) rack (~> 1.0) @@ -128,7 +146,9 @@ DEPENDENCIES pg rails (= 3.2.8) rails_config + rspec-rails (~> 2.0) sass-rails (~> 3.2.3) + shoulda sqlite3 therubyracer thin diff --git a/selfstarter.sublime-workspace b/selfstarter.sublime-workspace deleted file mode 100644 index 397a406..0000000 --- a/selfstarter.sublime-workspace +++ /dev/null @@ -1,1349 +0,0 @@ -{ - "auto_complete": - { - "selected_items": - [ - [ - "gray", - "gray_background_bottom_color" - ], - [ - "gray_b", - "gray_background_top_color" - ], - [ - "gray_back", - "gray_background" - ], - [ - "gray_backgrou", - "gray_background_top_color" - ], - [ - "verif", - "verified_orders" - ], - [ - "lockitron", - "lockitron_down" - ], - [ - "acc", - "access_notification" - ], - [ - "calcul", - "calculating_revenue" - ], - [ - "preord", - "preorders" - ], - [ - "preorder", - "preorder_revenue" - ], - [ - "javas", - "javascript_include_tag" - ], - [ - "new_", - "new_with_permission" - ], - [ - "visib", - "visibility" - ], - [ - "styles", - "stylesheet_link_tag" - ], - [ - "curr", - "current_application" - ], - [ - "cur", - "current_resource_owner" - ], - [ - "w", - "when when …" - ], - [ - "OPENC", - "OPENCV_DIRECTORY" - ], - [ - "OpENCV", - "OPENCV_DIRECTORY" - ], - [ - "regis", - "registered_device_and_request_avatar" - ], - [ - "H", - "HASNT_STARTED_YET" - ], - [ - "NOT", - "NOT_ALLOWED_TO_EDIT_KEY" - ], - [ - "NOT_", - "NOT_PERMISSABLE" - ], - [ - "editee", - "editee_key" - ], - [ - "invit", - "inviting_self_by_email" - ], - [ - "invitin", - "inviting_self_by_phone" - ], - [ - "inviting", - "inviting_self_by_email" - ], - [ - "invite_via", - "invite_via_email_and_phone_with_sms" - ], - [ - "passwor", - "password_confirmation" - ], - [ - "with", - "without_protection" - ], - [ - "registered", - "registered_device" - ], - [ - "create", - "create_new_user_and_register_device" - ], - [ - "def", - "def def … end" - ], - [ - "owner", - "owner_key" - ], - [ - "pass", - "password_confirmation" - ], - [ - "password", - "password" - ], - [ - "find", - "find_by_device_id" - ], - [ - "user", - "user_details" - ], - [ - "avatar", - "avatar_upload_form" - ], - [ - "JAR", - "JARRED_FACEBOOK_SECRET" - ], - [ - "FACE", - "FACEBOOK_SECRET" - ], - [ - "FACEB", - "FACEBOOK_KEY" - ], - [ - "curre", - "current_application" - ], - [ - "di", - "DIV Tag" - ], - [ - "gue", - "guest_two" - ], - [ - "passw", - "password_confirmation" - ], - [ - "permiss", - "permission_k" - ], - [ - "doork", - "doorkeeper_from_uid" - ], - [ - "curren", - "current_resource_owner" - ], - [ - "for", - "forgot" - ], - [ - "resource", - "resource_owner_id" - ], - [ - "opt", - "opts_or_token" - ], - [ - "argum", - "arguments_list" - ], - [ - "redirec", - "redirect_uri" - ], - [ - "oauth_authoriza", - "oauth_authorization_codes" - ], - [ - "sor", - "sorb sort_by { |e| .. }" - ], - [ - "format", - "format_start_time" - ], - [ - "uuid", - "UUID" - ], - [ - "cl", - "cla class BlankSlate .. initialize .. end" - ], - [ - "long", - "longitude" - ], - [ - "bor", - "border-bottom" - ], - [ - "curl", - "closing_curly_braces" - ], - [ - "lines", - "lines_as_char_array" - ], - [ - "open", - "opening_curly_braces" - ], - [ - "http", - "http_start_index" - ], - [ - "httt", - "http_start_index" - ], - [ - "htt", - "http_start_index" - ], - [ - "start", - "start_index" - ], - [ - "proc", - "process_server_blocks" - ], - [ - "line", - "line_with_block_type" - ], - [ - "find_h", - "find_http_block_start" - ], - [ - "read", - "read_lines" - ], - [ - "home", - "home_ending_from" - ] - ] - }, - "buffers": - [ - ], - "build_system": "", - "command_palette": - { - "height": 67.0, - "selected_items": - [ - [ - "markdown", - "Set Syntax: Markdown" - ], - [ - "html", - "Set Syntax: HTML (Rails)" - ], - [ - "ruby", - "Set Syntax: Ruby" - ], - [ - "bash", - "Set Syntax: Shell Script (Bash)" - ], - [ - "objec", - "Set Syntax: Objective-C" - ], - [ - "objecti", - "Set Syntax: Objective-C" - ], - [ - "b", - "BeautifyRuby" - ], - [ - "beau", - "BeautifyRuby" - ], - [ - "install", - "Package Control: Install Package" - ], - [ - "html rails", - "Set Syntax: HTML (Rails)" - ], - [ - "javascript", - "Set Syntax: JavaScript" - ], - [ - "coffee", - "Set Syntax: CoffeeScript" - ], - [ - "css", - "Set Syntax: CSS" - ], - [ - "objective", - "Set Syntax: Objective-C" - ], - [ - "object", - "Set Syntax: Objective-C" - ], - [ - "less", - "Set Syntax: LESS" - ], - [ - "scss", - "Set Syntax: SCSS" - ], - [ - "Markdown", - "Set Syntax: Markdown" - ], - [ - "json", - "Set Syntax: JSON" - ], - [ - "xml", - "Set Syntax: XML" - ], - [ - "snippet", - "Snippet: #include <…>" - ], - [ - "sni", - "Snippet: main()" - ], - [ - "Objec", - "Set Syntax: Objective-C" - ], - [ - "", - "About" - ] - ], - "width": 566.0 - }, - "console": - { - "height": 139.0 - }, - "distraction_free": - { - "menu_visible": true, - "show_minimap": false, - "show_open_files": false, - "show_tabs": false, - "side_bar_visible": false, - "status_bar_visible": false - }, - "file_history": - [ - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_key_points.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/javascripts/preorder.js.coffee", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage/stats.css.scss", - "/Users/jarred/Code/Selfstarter/app/models/order.rb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage/faq.css.scss", - "/Users/jarred/Code/Selfstarter/config/settings.yml", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/primitives.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/application.css", - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_show_dont_tell.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/index.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_footer.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/layouts/application.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_faqs.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_stats.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_middle_reserve.html.erb", - "/Users/jarred/Code/Selfstarter/config/locales/en.yml", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_google_analytics.html.erb", - "/Users/jarred/Code/Selfstarter/config/database.yml", - "/Users/jarred/Code/Selfstarter/README.rdoc", - "/Users/jarred/Code/Selfstarter/app/helpers/preorder_helper.rb", - "/Users/jarred/Code/Selfstarter/Gemfile", - "/Users/jarred/Code/Selfstarter/Procfile", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/main.css.scss", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_copyright.html.erb", - "/Users/jarred/Desktop/settings.yml", - "/Users/jarred/Code/Selfstarter/config/environments/production.rb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/variables.css.scss", - "/Users/jarred/Code/Selfstarter/config/application.rb", - "/Users/jarred/Code/Selfstarter/config.ru", - "/Users/jarred/Library/Application Support/Sublime Text 2/Packages/User/Preferences.sublime-settings", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/share.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage/key_points.css.scss", - "/Users/jarred/Code/Selfstarter/app/helpers/application_helper.rb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/share.html.erb", - "/Users/jarred/Code/Selfstarter/db/migrate/20121004072706_create_orders.rb", - "/Users/jarred/Code/Selfstarter/config/routes.rb", - "/Users/jarred/Code/Selfstarter/app/controllers/preorder_controller.rb", - "/Users/jarred/Code/Selfstarter/config/initializers/rails_config.rb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/share/_facebook_js.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/share/_twitter_js.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/buy.html.erb", - "/Users/jarred/Code/Selfstarter/db/schema.rb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage.css.scss", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_header.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/checkout.html.erb", - "/Users/jarred/Code/Lockitron/Rails/config/initializers/amazon_payments.rb", - "/Users/jarred/Code/Selfstarter/config/initializers/amazon_flexible_payments.rb", - "/Users/jarred/Code/Selfstarter/config/settings.local.yml", - "/Users/jarred/Code/Selfstarter/app/views/preorder/homepage/_value_proposition.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/javascripts/application.js", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/checkout.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage/call_to_action.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/footer.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/header.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/homepage/other_points.css.scss", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_press.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_show_dont_tell.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_stats.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_value_proposition.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_middle_reserve.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_faqs.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/stats.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/call_to_action.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/faq.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/reminder_modal.css.scss", - "/Users/jarred/Code/Selfstarter/app/views/preorder/checkout/_sidebar.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/other_points.css.scss", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_other_points.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/_key_points.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/key_points.css.scss", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/press.css.scss", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/preorder_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/index.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/checkout/untitled", - "/Users/jarred/Code/Lockitron/Rails/app/assets/javascripts/preorder.js.coffee", - "/Users/jarred/Code/Selfstarter/app/models/user.rb", - "/Users/jarred/Code/Lockitron/Rails/app/models/order.rb", - "/Users/jarred/Code/Selfstarter/app/views/layouts/_footer.html.erb", - "/Users/jarred/Code/Selfstarter/app/views/layouts/_header.html.erb", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/reset.css", - "/Users/jarred/Code/Selfstarter/app/assets/stylesheets/preorder.css.scss", - "/Users/jarred/Desktop/verifier.rb", - "/Users/jarred/Code/Selfstarter/app/controllers/application_controller.rb", - "/Users/jarred/Code/Selfstarter/app/views/preorder/get_excited.html.erb", - "/Users/jarred/Code/Lockitron/Rails/db/schema.rb", - "/Users/jarred/Code/Lockitron/Rails/config/routes.rb", - "/Users/jarred/Code/Lockitron/Rails/Gemfile", - "/Users/jarred/Code/Lockitron/Rails/config/initializers/kaminari.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/reserved.text.erb", - "/Users/jarred/Code/Lockitron/Rails/app/views/admin/metrics/preorder.html.erb", - "/Users/jarred/Code/Lockitron/Rails/log/development.log", - "/Users/jarred/Code/Lockitron/Rails/config/initializers/rails_admin.rb", - "/Users/jarred/Code/Lockitron/Rails/bin/wkhtmltopdf-amd64", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/admin/permissions_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/dashboard_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/helpers/metrics_helper.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/admin/metrics_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/lib/key_management.rb", - "/Users/jarred/Code/Lockitron/Rails/config/initializers/will_paginate.rb", - "/Users/jarred/Code/Lockitron/Rails/app/admin/users.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/home_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/assets/stylesheets/application.css", - "/Users/jarred/Code/Lockitron/Rails/app/models/user.rb", - "/Users/jarred/Code/Lockitron/Rails/app/models/notifier.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/admin/orders/show.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/admin/logs_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/admin/orders_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/admin/orders/index.html.erb", - "/Users/jarred/Code/Lockitron/Rails/config/deploy.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/admin/contact_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/sms/sms_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/welcome.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/views/notifier/reserve_lockitron.text.erb", - "/Users/jarred/Code/Lockitron/Rails/app/assets/stylesheets/preorder/main.css.scss", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/new_store_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/lib/root_domain.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/reserved.erb", - "/Users/jarred/Code/Lockitron/Rails/app/mailers/preorder.rb", - "/Users/jarred/Code/Lockitron/Rails/config/database.yml", - "/Users/jarred/Code/Lockitron/Rails/config/environments/development.rb", - "/Users/jarred/Code/Lockitron/Rails/config/initializers/omniauth.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/layouts/admin/orders.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/controllers/application_controller.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/layouts/application.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/models/facebook.rb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/_header.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/views/preorder/_subscribe.html.erb", - "/Users/jarred/Code/Lockitron/Rails/app/assets/images/field.gif" - ], - "find": - { - "height": 33.0 - }, - "find_in_files": - { - "height": 0.0, - "where_history": - [ - "", - "$primary_font, $secondary_font, $tertiary_font;", - "" - ] - }, - "find_state": - { - "case_sensitive": false, - "find_history": - [ - "lockitron", - "state", - "address_two", - "address_one", - "cost", - "\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n font-family: \"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;", - "ProximaNova\n font-family: \"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;", - "\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n font-family: \"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;", - " font-family: \"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n font-family: \"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;\n\"ProximaNova-Semibold\", \"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", sans-serif;", - "#F6F6F6", - "$gray_background_top_color", - "h2", - "h4", - "#backers", - ".stats", - "#login", - "reserve", - "devise", - "forgot", - "authenticate", - "log", - "'Log", - "result", - "order", - "admin/", - "admin", - ":preorder", - "invite_via_email", - "notifier", - ".round(4)", - "customer_id", - "Preorder.delay.reserved", - "country", - "bar", - "@@backers", - "count", - "calculate", - "revenue", - "launch", - "amount", - "role", - "HEAD", - "<<", - "else", - "reminded", - "opacity", - "rgba", - "logos", - "#logos", - "#update", - "pipe", - "mount", - "price", - "cost", - "keep", - "absolute", - "relative", - "header", - "update", - "remind", - "#login", - "login_butt", - "password", - "register", - ":password", - "new", - "index", - "help", - "twitter", - "update", - "phone", - "current_user", - "#email", - "#faqs ul", - "details", - ".active_faq", - "reserve", - "details", - "a", - "ul li a", - "current_user", - "reserve", - "image-path", - "../images/", - "image", - "1.png", - "protect", - "invite", - "email", - "tron", - "permissible", - "logs_for", - "is_valid", - "save_edit", - "save_ed", - "save", - "saved_edited_key", - "edit", - "outcome", - "user_ide", - "started_rece", - "visible", - "is_valid", - "email", - "def create", - ":key", - ":new_key", - ":key", - "options[:start", - "create_user_with_email", - "def index", - "Not Found", - "RoutingError", - "Not Found", - "alert", - "found", - "404", - "invite", - "permissions_owners", - "owner", - "\"guest\"", - "rvm", - "capistrano", - "printDiag", - "log_changes", - "params[:exp", - "exp", - "edit" - ], - "highlight": true, - "in_selection": false, - "preserve_case": false, - "regex": false, - "replace_history": - [ - "$gray_background_top_color", - "", - "image-path(\"", - "CANT_MODIFY_SELF", - "cant_modify_self!", - "@", - "=", - "", - "oil_rubbed_bronze", - "antique_brass", - "polished_brass", - "current_resource_owner", - "div", - "Session", - "session", - "@session", - "v1", - "@response", - "", - ":methods => :is_valid", - "permission.is_valid", - "permission.owner?", - "permission.guest?", - "permission.admin?", - "valid?", - "admin?", - "valid?", - "#flash", - "flash.now[:notice]", - "flash.now[:error]", - "
in New York City
", - "
in New York City", - "", - "", - "", - "", - "
", - "