diff --git a/.codeclimate.yml b/.codeclimate.yml index bca8b1aee..e1c13452a 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -21,6 +21,10 @@ engines: - javascript fixme: enabled: true + exclude_fingerprints: # rubocop_todo filename + - 63b8552079d106832fbe281566b6d028 + - d38afbaaea3ecaa9a4cf046b07a01cec + - 57ff3968fd371d3e1f75c237d6c78acf ratings: paths: - "**.rb" @@ -34,3 +38,4 @@ exclude_paths: - db/ - spec/ - public/ +- app/assets/stylesheets/bootstrap-accessibility.css diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 000000000..43f27ddf4 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,78 @@ +inherit_from: .rubocop_todo.yml +AllCops: + Include: + - 'Rakefile' + - 'config.ru' + - 'lib/**/*.rake' + Exclude: + - 'db/schema.rb' + - 'vendor/**/*' + +Rails: + Enabled: true + +Style/FileName: + Exclude: + - 'Gemfile' + - 'Gemfile.lock' + +Style/StringLiterals: + Enabled: false + +Style/MultilineMethodCallIndentation: + EnforcedStyle: indented + +# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. +# SupportedStyles: with_first_parameter, with_fixed_indentation +Style/AlignParameters: + EnforcedStyle: with_fixed_indentation + +Metrics/MethodLength: + Description: 'Avoid methods longer than 30 lines of code.' + StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods' + # Set to 30 once all methods are fixed. + # Max: 30 + Max: 104 + +# Remove the following once the code style matches +# Offense count: 59 +Metrics/AbcSize: + Max: 38 + +# Offense count: 5 +# Configuration parameters: CountComments. +Metrics/BlockLength: + Max: 62 + +# Offense count: 6 +# Configuration parameters: CountComments. +Metrics/ClassLength: + Max: 275 + +# Offense count: 6 +Metrics/CyclomaticComplexity: + Max: 11 + +Metrics/LineLength: + Max: 120 + +# Offense count: 8 +Metrics/PerceivedComplexity: + Max: 10 + +# See https://github.com/bbatsov/rubocop/issues/3629 +Rails/HttpPositionalArguments: + Enabled: false + +Style/Documentation: + Enabled: false + +Style/FrozenStringLiteralComment: + Enabled: false + +# Configuration parameters: Include. +# Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb +Rails/Output: + Exclude: + - 'config/unicorn.rb' + - 'db/seeds.rb' \ No newline at end of file diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml new file mode 100644 index 000000000..a554d3d45 --- /dev/null +++ b/.rubocop_todo.yml @@ -0,0 +1,733 @@ +# This configuration was generated by +# `rubocop --auto-gen-config --exclude-limit 500` +# on 2016-11-13 10:16:38 +1300 using RuboCop version 0.45.0. +# The point is for the user to remove these configuration records +# one by one as the offenses are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of RuboCop, may require this file to be generated again. + +# Offense count: 24 +Lint/AmbiguousRegexpLiteral: + Exclude: + - 'app/models/order.rb' + - 'spec/controllers/admin/orders_controller_spec.rb' + - 'spec/controllers/orders_controller_spec.rb' + - 'spec/features/cms_spec.rb' + - 'spec/lib/haml/filters/escaped_markdown_spec.rb' + - 'spec/lib/haml/filters/growstuff_markdown_spec.rb' + - 'spec/models/comment_spec.rb' + - 'spec/models/planting_spec.rb' + - 'spec/models/post_spec.rb' + - 'spec/views/members/show.rss.haml_spec.rb' + - 'spec/views/posts/show.html.haml_spec.rb' + +# Offense count: 1 +Lint/HandleExceptions: + Exclude: + - 'lib/tasks/testing.rake' + +# Offense count: 15 +# Cop supports --auto-correct. +# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments. +Lint/UnusedBlockArgument: + Exclude: + - 'app/controllers/crops_controller.rb' + - 'app/controllers/sessions_controller.rb' + - 'app/models/post.rb' + - 'config/unicorn.rb' + - 'lib/haml/filters/growstuff_markdown.rb' + +# Offense count: 8 +# Cop supports --auto-correct. +# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods. +Lint/UnusedMethodArgument: + Exclude: + - 'app/controllers/application_controller.rb' + - 'app/controllers/passwords_controller.rb' + - 'app/controllers/registrations_controller.rb' + - 'app/models/crop.rb' + - 'app/validators/approved_validator.rb' + - 'spec/views/plantings/show.html.haml_spec.rb' + +# Offense count: 5 +Lint/Void: + Exclude: + - 'spec/models/crop_spec.rb' + - 'spec/models/garden_spec.rb' + - 'spec/models/post_spec.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +Performance/StringReplacement: + Exclude: + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/planting.rb' + - 'app/models/seed.rb' + - 'spec/rails_helper.rb' + +# Offense count: 10 +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: strict, flexible +Rails/Date: + Exclude: + - 'app/controllers/harvests_controller.rb' + - 'app/controllers/plantings_controller.rb' + - 'db/seeds.rb' + - 'lib/tasks/growstuff.rake' + - 'spec/controllers/plantings_controller_spec.rb' + - 'spec/factories/planting.rb' + - 'spec/features/plantings/planting_a_crop_spec.rb' + - 'spec/features/shared_examples/append_date.rb' + +# Offense count: 11 +# Configuration parameters: Include. +# Include: app/models/**/*.rb +Rails/HasAndBelongsToMany: + Exclude: + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/member.rb' + - 'app/models/photo.rb' + - 'app/models/planting.rb' + - 'app/models/post.rb' + - 'app/models/product.rb' + - 'app/models/role.rb' + +# Offense count: 3 +Rails/OutputSafety: + Exclude: + - 'app/helpers/application_helper.rb' + - 'app/helpers/auto_suggest_helper.rb' + - 'app/helpers/gardens_helper.rb' + +# Offense count: 9 +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: strict, flexible +Rails/TimeZone: + Exclude: + - 'app/helpers/plantings_helper.rb' + - 'spec/controllers/accounts_controller_spec.rb' + - 'spec/factories/member.rb' + - 'spec/factories/post.rb' + - 'spec/models/post_spec.rb' + - 'spec/views/plantings/index.html.haml_spec.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: Include. +# Include: app/models/**/*.rb +Rails/Validation: + Exclude: + - 'app/models/member.rb' + - 'app/models/order_item.rb' + +# Offense count: 12 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: always, conditionals +Style/AndOr: + Exclude: + - 'app/models/notification.rb' + - 'app/models/photo.rb' + - 'config/unicorn.rb' + - 'lib/tasks/growstuff.rake' + +# Offense count: 2 +Style/AsciiComments: + Exclude: + - 'app/models/crop.rb' + - 'config/initializers/comfortable_mexican_sofa.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: percent_q, bare_percent +Style/BarePercentLiterals: + Exclude: + - 'app/helpers/auto_suggest_helper.rb' + - 'spec/support/feature_helpers.rb' + +# Offense count: 25 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods. +# SupportedStyles: line_count_based, semantic, braces_for_chaining +# ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object +# FunctionalMethods: let, let!, subject, watch +# IgnoredMethods: lambda, proc, it +Style/BlockDelimiters: + Exclude: + - 'app/controllers/alternate_names_controller.rb' + - 'app/controllers/members_controller.rb' + - 'app/controllers/posts_controller.rb' + - 'app/controllers/scientific_names_controller.rb' + - 'spec/controllers/harvests_controller_spec.rb' + - 'spec/controllers/order_items_controller_spec.rb' + - 'spec/features/notifications_spec.rb' + - 'spec/models/ability_spec.rb' + - 'spec/models/comment_spec.rb' + - 'spec/models/follow_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/planting_spec.rb' + - 'spec/models/post_spec.rb' + - 'spec/views/crops/edit.html.haml_spec.rb' + +# Offense count: 8 +# Cop supports --auto-correct. +Style/BlockEndNewline: + Exclude: + - 'app/controllers/members_controller.rb' + - 'app/controllers/posts_controller.rb' + - 'spec/models/ability_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/planting_spec.rb' + +# Offense count: 93 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: braces, no_braces, context_dependent +Style/BracesAroundHashParameters: + Exclude: + - 'app/controllers/admin/orders_controller.rb' + - 'app/controllers/crops_controller.rb' + - 'app/controllers/posts_controller.rb' + - 'app/helpers/application_helper.rb' + - 'app/models/crop.rb' + - 'app/models/member.rb' + - 'app/models/order.rb' + - 'config/environments/test.rb' + - 'spec/controllers/admin/orders_controller_spec.rb' + - 'spec/controllers/comments_controller_spec.rb' + - 'spec/controllers/harvests_controller_spec.rb' + - 'spec/controllers/member_controller_spec.rb' + - 'spec/controllers/notifications_controller_spec.rb' + - 'spec/controllers/order_items_controller_spec.rb' + - 'spec/controllers/orders_controller_spec.rb' + - 'spec/controllers/places_controller_spec.rb' + - 'spec/controllers/plantings_controller_spec.rb' + - 'spec/controllers/posts_controller_spec.rb' + - 'spec/controllers/scientific_names_controller_spec.rb' + - 'spec/controllers/seeds_controller_spec.rb' + - 'spec/lib/actions/oauth_signup_action_spec.rb' + - 'spec/views/notifier/notify.html.haml_spec.rb' + - 'spec/views/photos/new.html.haml_spec.rb' + +# Offense count: 4 +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: nested, compact +Style/ClassAndModuleChildren: + Exclude: + - 'app/controllers/admin/orders_controller.rb' + - 'lib/actions/oauth_signup_action.rb' + - 'lib/haml/filters/escaped_markdown.rb' + - 'lib/haml/filters/growstuff_markdown.rb' + +# Offense count: 8 +# Cop supports --auto-correct. +Style/ClassMethods: + Exclude: + - 'app/models/crop.rb' + - 'app/models/member.rb' + - 'app/models/order.rb' + - 'app/models/planting.rb' + - 'app/models/post.rb' + - 'app/models/seed.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +Style/ColonMethodCall: + Exclude: + - 'spec/lib/haml/filters/escaped_markdown_spec.rb' + - 'spec/lib/haml/filters/growstuff_markdown_spec.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: Keywords. +# Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW +Style/CommentAnnotation: + Exclude: + - 'app/controllers/crops_controller.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/DefWithParentheses: + Exclude: + - 'spec/views/posts/_single.html.haml_spec.rb' + +# Offense count: 10 +# Cop supports --auto-correct. +Style/EachForSimpleLoop: + Exclude: + - 'spec/models/crop_spec.rb' + - 'spec/views/home/_crops.html.haml_spec.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/EmptyLiteral: + Exclude: + - 'app/models/member.rb' + +# Offense count: 1 +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: for, each +Style/For: + Exclude: + - 'app/models/order.rb' + +# Offense count: 5 +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: format, sprintf, percent +Style/FormatString: + Exclude: + - 'app/helpers/application_helper.rb' + - 'spec/helpers/application_helper_spec.rb' + - 'spec/views/shop/index_spec.rb' + +# Offense count: 35 +# Configuration parameters: MinBodyLength. +Style/GuardClause: + Exclude: + - 'app/controllers/members_controller.rb' + - 'app/helpers/harvests_helper.rb' + - 'app/helpers/plantings_helper.rb' + - 'app/mailers/notifier.rb' + - 'app/models/ability.rb' + - 'app/models/account.rb' + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/member.rb' + - 'app/models/notification.rb' + - 'app/models/order.rb' + - 'app/models/order_item.rb' + - 'app/models/photo.rb' + - 'app/models/seed.rb' + - 'app/validators/approved_validator.rb' + - 'config/initializers/comfortable_mexican_sofa.rb' + - 'lib/geocodable.rb' + - 'spec/lib/haml/filters/growstuff_markdown_spec.rb' + - 'spec/support/elasticsearch_helpers.rb' + +# Offense count: 4 +Style/IdenticalConditionalBranches: + Exclude: + - 'app/controllers/crops_controller.rb' + - 'app/controllers/follows_controller.rb' + +# Offense count: 1 +Style/IfInsideElse: + Exclude: + - 'app/models/harvest.rb' + +# Offense count: 26 +# Cop supports --auto-correct. +# Configuration parameters: MaxLineLength. +Style/IfUnlessModifier: + Exclude: + - 'app/controllers/gardens_controller.rb' + - 'app/controllers/shop_controller.rb' + - 'app/helpers/crops_helper.rb' + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/member.rb' + - 'app/models/order.rb' + - 'app/models/planting.rb' + - 'app/models/seed.rb' + - 'config/initializers/geocoder.rb' + - 'lib/tasks/growstuff.rake' + +# Offense count: 7 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: line_count_dependent, lambda, literal +Style/Lambda: + Exclude: + - 'spec/controllers/member_controller_spec.rb' + - 'spec/models/photo_spec.rb' + + +# Offense count: 3 +# Cop supports --auto-correct. +Style/MethodCallParentheses: + Exclude: + - 'app/models/photo.rb' + - 'spec/helpers/application_helper_spec.rb' + - 'spec/views/plantings/new.html.haml_spec.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: symmetrical, new_line, same_line +Style/MultilineArrayBraceLayout: + Exclude: + - 'app/models/seed.rb' + +# Offense count: 8 +# Cop supports --auto-correct. +Style/MultilineBlockLayout: + Exclude: + - 'app/controllers/members_controller.rb' + - 'app/controllers/posts_controller.rb' + - 'spec/models/ability_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/planting_spec.rb' + +# Offense count: 7 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: symmetrical, new_line, same_line +Style/MultilineHashBraceLayout: + Exclude: + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/planting.rb' + - 'app/models/product.rb' + - 'app/models/seed.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/MultilineIfModifier: + Exclude: + - 'spec/rails_helper.rb' + +# Offense count: 6 +# Cop supports --auto-correct. +Style/MultilineIfThen: + Exclude: + - 'lib/tasks/growstuff.rake' + - 'script/check_contributors_md' + - 'script/gemfile_check' + +# Offense count: 93 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: symmetrical, new_line, same_line +Style/MultilineMethodCallBraceLayout: + Exclude: + - 'app/controllers/application_controller.rb' + - 'app/controllers/authentications_controller.rb' + - 'app/controllers/seeds_controller.rb' + - 'app/models/account.rb' + - 'app/models/crop.rb' + - 'spec/controllers/order_items_controller_spec.rb' + - 'spec/helpers/gardens_helper_spec.rb' + - 'spec/helpers/harvests_helper_spec.rb' + - 'spec/helpers/plantings_helper_spec.rb' + - 'spec/helpers/seeds_helper_spec.rb' + - 'spec/models/ability_spec.rb' + - 'spec/models/crop_spec.rb' + - 'spec/models/harvest_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/order_spec.rb' + - 'spec/models/plant_part_spec.rb' + - 'spec/models/planting_spec.rb' + - 'spec/models/post_spec.rb' + - 'spec/views/account_types/edit.html.haml_spec.rb' + - 'spec/views/account_types/new.html.haml_spec.rb' + - 'spec/views/account_types/show.html.haml_spec.rb' + - 'spec/views/crops/_grown_for.html.haml_spec.rb' + - 'spec/views/crops/_planting_advice.html.haml_spec.rb' + - 'spec/views/forums/edit.html.haml_spec.rb' + - 'spec/views/harvests/index.html.haml_spec.rb' + - 'spec/views/orders/show.html.haml_spec.rb' + - 'spec/views/photos/edit.html.haml_spec.rb' + - 'spec/views/plant_parts/edit.html.haml_spec.rb' + - 'spec/views/plant_parts/new.html.haml_spec.rb' + - 'spec/views/plantings/_form.html.haml_spec.rb' + - 'spec/views/plantings/edit.html.haml_spec.rb' + - 'spec/views/plantings/index.html.haml_spec.rb' + - 'spec/views/plantings/new.html.haml_spec.rb' + - 'spec/views/plantings/show.html.haml_spec.rb' + - 'spec/views/posts/edit.html.haml_spec.rb' + - 'spec/views/products/edit.html.haml_spec.rb' + - 'spec/views/products/new.html.haml_spec.rb' + - 'spec/views/roles/edit.html.haml_spec.rb' + - 'spec/views/roles/index.html.haml_spec.rb' + - 'spec/views/roles/new.html.haml_spec.rb' + - 'spec/views/roles/show.html.haml_spec.rb' + - 'spec/views/scientific_names/edit.html.haml_spec.rb' + - 'spec/views/scientific_names/show.html.haml_spec.rb' + +# Offense count: 2 +Style/MultilineTernaryOperator: + Exclude: + - 'app/controllers/notifications_controller.rb' + - 'app/controllers/order_items_controller.rb' + +# Offense count: 10 +# Cop supports --auto-correct. +Style/MutableConstant: + Exclude: + - 'app/controllers/members_controller.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/planting.rb' + - 'app/models/seed.rb' + +# Offense count: 7 +# Cop supports --auto-correct. +Style/NegatedIf: + Exclude: + - 'app/controllers/crops_controller.rb' + - 'app/helpers/crops_helper.rb' + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'script/check_contributors_md' + +# Offense count: 2 +Style/NestedTernaryOperator: + Exclude: + - 'app/controllers/harvests_controller.rb' + - 'app/controllers/plantings_controller.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles. +# SupportedStyles: skip_modifier_ifs, always +Style/Next: + Exclude: + - 'app/models/post.rb' + - 'lib/tasks/growstuff.rake' + +# Offense count: 2 +# Cop supports --auto-correct. +Style/NilComparison: + Exclude: + - 'lib/tasks/growstuff.rake' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: IncludeSemanticChanges. +Style/NonNilCheck: + Exclude: + - 'app/models/harvest.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedOctalStyle, SupportedOctalStyles. +# SupportedOctalStyles: zero_with_o, zero_only +Style/NumericLiteralPrefix: + Exclude: + - 'spec/views/plantings/_form.html.haml_spec.rb' + +# Offense count: 3 +# Cop supports --auto-correct. +Style/NumericLiterals: + MinDigits: 9 + +# Offense count: 16 +# Cop supports --auto-correct. +# Configuration parameters: AutoCorrect, EnforcedStyle, SupportedStyles. +# SupportedStyles: predicate, comparison +Style/NumericPredicate: + Exclude: + - 'spec/**/*' + - 'app/helpers/crops_helper.rb' + - 'app/helpers/harvests_helper.rb' + - 'app/helpers/plantings_helper.rb' + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/photo.rb' + - 'lib/tasks/growstuff.rake' + - 'script/check_contributors_md' + +# Offense count: 3 +# Cop supports --auto-correct. +Style/ParallelAssignment: + Exclude: + - 'app/mailers/notifier.rb' + +# Offense count: 8 +# Cop supports --auto-correct. +# Configuration parameters: AllowSafeAssignment. +Style/ParenthesesAroundCondition: + Exclude: + - 'app/controllers/application_controller.rb' + - 'app/controllers/orders_controller.rb' + - 'app/helpers/crops_helper.rb' + - 'app/models/garden.rb' + - 'app/models/member.rb' + - 'config/factory_girl.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: PreferredDelimiters. +Style/PercentLiteralDelimiters: + Exclude: + - 'app/helpers/auto_suggest_helper.rb' + - 'script/check_contributors_md' + - 'spec/features/signin_spec.rb' + - 'spec/features/signout_spec.rb' + +# Offense count: 6 +# Cop supports --auto-correct. +Style/PerlBackrefs: + Exclude: + - 'app/models/post.rb' + - 'lib/haml/filters/growstuff_markdown.rb' + +# Offense count: 3 +# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist. +# NamePrefix: is_, has_, have_ +# NamePrefixBlacklist: is_, has_, have_ +# NameWhitelist: is_a? +Style/PredicateName: + Exclude: + - 'spec/**/*' + - 'app/models/member.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/RedundantBegin: + Exclude: + - 'app/controllers/members_controller.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +Style/RedundantParentheses: + Exclude: + - 'app/helpers/plantings_helper.rb' + - 'app/models/garden.rb' + +# Offense count: 56 +# Cop supports --auto-correct. +Style/RedundantSelf: + Exclude: + - 'app/models/comment.rb' + - 'app/models/crop.rb' + - 'app/models/follow.rb' + - 'app/models/harvest.rb' + - 'app/models/member.rb' + - 'app/models/notification.rb' + - 'app/models/order.rb' + - 'app/models/photo.rb' + - 'app/models/planting.rb' + - 'app/models/post.rb' + - 'app/models/seed.rb' + - 'lib/geocodable.rb' + +# Offense count: 9 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes. +# SupportedStyles: slashes, percent_r, mixed +Style/RegexpLiteral: + Exclude: + - 'app/models/crop.rb' + - 'spec/lib/haml/filters/growstuff_markdown_spec.rb' + - 'spec/rails_helper.rb' + - 'spec/views/devise/registrations/edit_spec.rb' + - 'spec/views/members/index.html.haml_spec.rb' + - 'spec/views/posts/index.html.haml_spec.rb' + - 'spec/views/posts/show.html.haml_spec.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/SelfAssignment: + Exclude: + - 'app/helpers/crops_helper.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: SupportedStyles. +# SupportedStyles: use_perl_names, use_english_names +Style/SpecialGlobalVars: + EnforcedStyle: use_perl_names + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: single_quotes, double_quotes +Style/StringLiteralsInInterpolation: + Exclude: + - 'app/models/follow.rb' + - 'app/models/post.rb' + +# Offense count: 9 +# Cop supports --auto-correct. +# Configuration parameters: IgnoredMethods. +# IgnoredMethods: respond_to, define_method +Style/SymbolProc: + Exclude: + - 'app/controllers/crops_controller.rb' + - 'app/models/crop.rb' + - 'app/models/garden.rb' + - 'app/models/harvest.rb' + - 'app/models/planting.rb' + - 'app/models/post.rb' + - 'lib/tasks/growstuff.rake' + +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles, AllowSafeAssignment. +# SupportedStyles: require_parentheses, require_no_parentheses +Style/TernaryParentheses: + Exclude: + - 'app/helpers/plantings_helper.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles. +# SupportedStyles: comma, consistent_comma, no_comma +Style/TrailingCommaInArguments: + Exclude: + - 'app/models/post.rb' + - 'db/seeds.rb' + - 'lib/actions/oauth_signup_action.rb' + - 'lib/tasks/growstuff.rake' + +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles. +# SupportedStyles: comma, consistent_comma, no_comma +Style/TrailingCommaInLiteral: + Exclude: + - 'app/models/crop.rb' + - 'config/environments/test.rb' + - 'spec/rails_helper.rb' + +# Offense count: 1 +# Cop supports --auto-correct. +Style/UnlessElse: + Exclude: + - 'app/controllers/omniauth_callbacks_controller.rb' + +# Offense count: 16 +# Cop supports --auto-correct. +Style/UnneededInterpolation: + Exclude: + - 'app/models/crop.rb' + - 'app/models/harvest.rb' + - 'spec/features/crops/crop_wranglers_spec.rb' + - 'spec/features/following_spec.rb' + - 'spec/features/shared_examples/append_date.rb' + - 'spec/models/crop_spec.rb' + - 'spec/models/forum_spec.rb' + - 'spec/models/member_spec.rb' + - 'spec/models/plant_part_spec.rb' + - 'spec/views/layouts/_header_spec.rb' + +# Offense count: 3 +# Cop supports --auto-correct. +Style/UnneededPercentQ: + Exclude: + - 'spec/support/feature_helpers.rb' + +# Offense count: 4 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles, MinSize, WordRegex. +# SupportedStyles: percent, brackets +Style/WordArray: + Exclude: + - 'app/controllers/omniauth_callbacks_controller.rb' + - 'app/models/crop.rb' + - 'spec/models/seed_spec.rb' + +# Offense count: 6 +# Cop supports --auto-correct. +Style/ZeroLengthPredicate: + Exclude: + - 'app/models/crop.rb' + - 'app/models/photo.rb' diff --git a/.travis.yml b/.travis.yml index 4b181855a..901cab8fe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,9 @@ sudo: false language: ruby -cache: bundler +cache: + bundler: true + directories: + - travis_phantomjs env: matrix: - GROWSTUFF_SITE_NAME="Growstuff (travis)" RAILS_SECRET_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' GROWSTUFF_ELASTICSEARCH='true' @@ -8,14 +11,27 @@ env: global: secure: "Z5TpM2jEX4UCvNePnk/LwltQX48U2u9BRc+Iypr1x9QW2o228QJhPIOH39a8RMUrepGnkQIq9q3ZRUn98RfrJz1yThtlNFL3NmzdQ57gKgjGwfpa0e4Dwj/ZJqV2D84tDGjvdVYLP7zzaYZxQcwk/cgNpzKf/jq97HLNP7CYuf4=" rvm: -- 2.3.1 + - 2.3.1 +before_install: + - export PATH=$PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH + - > + if [ $(phantomjs --version) != '2.1.1' ]; then + PHANTOM_URL=https://assets.membergetmember.co/software/phantomjs-2.1.1-linux-x86_64.tar.bz2; + rm -rf $PWD/travis_phantomjs; + mkdir -p $PWD/travis_phantomjs; + wget $PHANTOM_URL -O $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2; + tar -xvf $PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; + fi + - phantomjs --version before_script: -- psql -c 'create database growstuff_test;' -U postgres + - bundle exec rake db:create db:migrate db:test:prepare + - bundle exec rake assets:precompile script: -- script/gemfile_check -- bundle exec script/check_contributors_md -- bundle exec rake db:migrate --trace -- bundle exec rspec spec/ + - bundle exec rubocop --display-cop-names --rails + - script/gemfile_check + - bundle exec script/check_contributors_md + - bundle exec rake db:migrate --trace + - bundle exec rspec spec/ services: - elasticsearch before_deploy: @@ -28,6 +44,7 @@ deploy: repo: Growstuff/growstuff app: dev: growstuff-staging + master: growstuff-prod travis_deploy: tranquil-basin-3130 travis_containers: tranquil-basin-3130 run: diff --git a/.yamllint b/.yamllint new file mode 100644 index 000000000..06876caa2 --- /dev/null +++ b/.yamllint @@ -0,0 +1,7 @@ +extends: relaxed + +rules: + # 80 chars should be enough, but don't fail if a line is longer + line-length: + max: 150 + level: warning diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 71e94bd6b..1197b826c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ Thanks for contributing to Growstuff! When you create a pull request, please include the following: * Mention the issue it solves (eg. #123) -* Your code should follow our [Coding style guide](http://wiki.growstuff.org/index.php/Coding_style_guide) +* Your code should follow our [Coding style guide](https://github.com/Growstuff/growstuff/wiki/Development-process-overview#coding-practices) * Make sure you have automated tests for your work, where possible. * Add your name (and that of your pair partner, if any) to [CONTRIBUTORS.md](CONTRIBUTORS.md). diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d893dc537..67c9b0b7c 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -70,3 +70,6 @@ submit the change with your pull request. - Eric Tillberg / [Thrillberg](https://github.com/Thrillberg) - Lucas Nogueira / [lucasnogueira](https://github.com/lucasnogueira) - Charley Lewittes / [ctlewitt](https://github.com/ctlewitt) +- Kristine Nicole Polvoriza / [polveenomials](https://github.com/polveenomials) +- Brenda Wallace / [br3nda](https://github.com/br3nda) +- Jim Stallings / [jestallin](https://github.com/jestallin) diff --git a/Gemfile b/Gemfile index 6dd1d971b..a91ccba45 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,9 @@ +# frozen_string_literal: true source 'https://rubygems.org' ruby '2.3.1' -gem 'rails', '~> 4.2.0' +gem 'rails', '~> 4.2.7' gem 'bundler', '>=1.1.5' @@ -14,11 +15,11 @@ gem 'haml' gem 'bootstrap-sass', '~> 3.3.6' gem 'font-awesome-sass' -gem 'uglifier', '~> 2.7.2' # JavaScript compressor +gem 'uglifier', '~> 2.7.2' # JavaScript compressor gem 'jquery-rails' gem 'jquery-ui-rails', '~> 5.0.2' -gem 'js-routes' # provides access to Rails routes in Javascript +gem 'js-routes' # provides access to Rails routes in Javascript gem 'flickraw' gem 'leaflet-rails' @@ -38,6 +39,7 @@ gem 'bootstrap-kaminari-views' # bootstrap views for kaminari gem 'activemerchant' gem 'active_utils' +gem 'sidekiq' # Markdown formatting for updates etc gem 'bluecloth' @@ -64,9 +66,10 @@ gem 'bootstrap-datepicker-rails' gem 'omniauth' gem 'omniauth-twitter' gem 'omniauth-flickr', '>= 0.0.15' +gem 'omniauth-facebook' # client for Elasticsearch. Elasticsearch is a flexible -# and powerful, distributed, real-time search and analytics engine. +# and powerful, distributed, real-time search and analytics engine. # An example of the use in the project is fuzzy crop search. gem "elasticsearch-model" gem "elasticsearch-rails" @@ -78,7 +81,8 @@ group :production, :staging do gem 'dalli' gem 'memcachier' gem 'rails_12factor' # supresses heroku plugin injection - gem 'bonsai-elasticsearch-rails' # Integration with Bonsa-Elasticsearch on heroku + gem 'bonsai-elasticsearch-rails' # Integration with Bonsa-Elasticsearch on heroku + gem 'sparkpost_rails' end group :development do @@ -106,11 +110,16 @@ group :development, :test do gem 'capybara' # integration tests gem 'capybara-email' # integration tests for email gem 'capybara-screenshot' # for test debugging - gem 'poltergeist', '~> 1.6' # for headless JS testing + gem 'poltergeist' # for headless JS testing gem 'i18n-tasks' # adds tests for finding missing and unused translations gem 'selenium-webdriver' - gem "codeclimate-test-reporter", group: :test, require: nil + gem 'haml-i18n-extractor' gem "active_merchant-paypal-bogus-gateway" + gem 'rubocop', require: false +end + +group :test do + gem 'codeclimate-test-reporter', require: false end group :travis do diff --git a/Gemfile.lock b/Gemfile.lock index 0345f4ad7..425491475 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,21 +1,21 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.2.6) - actionpack (= 4.2.6) - actionview (= 4.2.6) - activejob (= 4.2.6) + actionmailer (4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.6) - actionview (= 4.2.6) - activesupport (= 4.2.6) + actionpack (4.2.7.1) + actionview (= 4.2.7.1) + activesupport (= 4.2.7.1) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.6) - activesupport (= 4.2.6) + actionview (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) @@ -24,34 +24,35 @@ GEM actionpack active_merchant-paypal-bogus-gateway (0.1.0) activemerchant - active_utils (3.2.0) - activesupport (>= 3.2) + active_utils (3.2.3) + activesupport (>= 3.2, < 5.1.0) i18n - activejob (4.2.6) - activesupport (= 4.2.6) + activejob (4.2.7.1) + activesupport (= 4.2.7.1) globalid (>= 0.3.0) - activemerchant (1.59.0) + activemerchant (1.61.0) activesupport (>= 3.2.14, < 5.1) builder (>= 2.1.2, < 4.0.0) i18n (>= 0.6.9) nokogiri (~> 1.4) - activemodel (4.2.6) - activesupport (= 4.2.6) + activemodel (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) - activerecord (4.2.6) - activemodel (= 4.2.6) - activesupport (= 4.2.6) + activerecord (4.2.7.1) + activemodel (= 4.2.7.1) + activesupport (= 4.2.7.1) arel (~> 6.0) - activesupport (4.2.6) + activesupport (4.2.7.1) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.4.0) + addressable (2.5.0) + public_suffix (~> 2.0, >= 2.0.2) arel (6.0.3) ast (2.3.0) - autoprefixer-rails (6.3.6.2) + autoprefixer-rails (6.4.0.2) execjs bcrypt (3.1.11) better_errors (2.1.1) @@ -62,19 +63,19 @@ GEM debug_inspector (>= 0.0.1) bluecloth (2.2.0) bonsai-elasticsearch-rails (0.0.4) - bootstrap-datepicker-rails (1.6.1.1) + bootstrap-datepicker-rails (1.6.4.1) railties (>= 3.0) bootstrap-kaminari-views (0.0.5) kaminari (>= 0.13) rails (>= 3.1) - bootstrap-sass (3.3.6) + bootstrap-sass (3.3.7) autoprefixer-rails (>= 5.2.1) sass (>= 3.3.4) - bootstrap_form (2.3.0) + bootstrap_form (2.5.2) builder (3.2.2) - byebug (9.0.5) + byebug (9.0.6) cancancan (1.15.0) - capybara (2.7.1) + capybara (2.10.1) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -84,7 +85,7 @@ GEM capybara-email (2.5.0) capybara (~> 2.4) mail - capybara-screenshot (1.0.13) + capybara-screenshot (1.0.14) capybara (>= 1.0, < 3) launchy childprocess (0.5.9) @@ -96,8 +97,8 @@ GEM climate_control (>= 0.0.3, < 1.0) codeclimate-test-reporter (0.6.0) simplecov (>= 0.7.1, < 1.0.0) - codemirror-rails (5.11) - railties (>= 3.0, < 5) + codemirror-rails (5.16.0) + railties (>= 3.0, < 6.0) coderay (1.1.1) coffee-rails (4.1.1) coffee-script (>= 2.2.0) @@ -122,18 +123,19 @@ GEM rails-i18n (>= 4.0.0) sass-rails (>= 4.0.3) concurrent-ruby (1.0.2) - coveralls (0.8.13) - json (~> 1.8) - simplecov (~> 0.11.0) - term-ansicolor (~> 1.3) + connection_pool (2.2.0) + coveralls (0.8.16) + json (>= 1.8, < 3) + simplecov (~> 0.12.0) + term-ansicolor (~> 1.3.0) thor (~> 0.19.1) - tins (~> 1.6.0) - csv_shaper (1.2.0) + tins (>= 1.6.0, < 2) + csv_shaper (1.3.0) activesupport (>= 3.0.0) dalli (2.7.6) database_cleaner (1.5.3) debug_inspector (0.0.2) - devise (4.1.1) + devise (4.2.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0, < 5.1) @@ -145,21 +147,21 @@ GEM json thread thread_safe - elasticsearch (1.0.18) - elasticsearch-api (= 1.0.18) - elasticsearch-transport (= 1.0.18) - elasticsearch-api (1.0.18) + elasticsearch (2.0.0) + elasticsearch-api (= 2.0.0) + elasticsearch-transport (= 2.0.0) + elasticsearch-api (2.0.0) multi_json elasticsearch-model (0.1.9) activesupport (> 3) elasticsearch (> 0.4) hashie elasticsearch-rails (0.1.9) - elasticsearch-transport (1.0.18) + elasticsearch-transport (2.0.0) faraday multi_json erubis (2.7.0) - excon (0.50.1) + excon (0.54.0) execjs (2.7.0) factory_girl (4.7.0) activesupport (>= 3.0.0) @@ -168,7 +170,7 @@ GEM railties (>= 3.0.0) faraday (0.9.2) multipart-post (>= 1.2, < 3) - ffi (1.9.10) + ffi (1.9.14) figaro (1.1.1) thor (~> 0.14) flickraw (0.9.9) @@ -181,7 +183,7 @@ GEM gibbon (1.2.1) httparty multi_json (>= 1.9.0) - globalid (0.3.6) + globalid (0.3.7) activesupport (>= 4.1.0) gravatar-ultimate (2.0.0) activesupport (>= 2.3.14) @@ -196,12 +198,18 @@ GEM shellany (~> 0.0) thor (>= 0.18.1) guard-compat (1.2.1) - guard-rspec (4.7.2) + guard-rspec (4.7.3) guard (~> 2.1) guard-compat (~> 1.1) rspec (>= 2.99.0, < 4.0) haml (4.0.7) tilt + haml-i18n-extractor (0.5.9) + activesupport + haml + highline + tilt + trollop (= 1.16.2) haml-rails (0.9.0) actionpack (>= 4.0.1) activesupport (>= 4.0.1) @@ -218,11 +226,10 @@ GEM haml (~> 4.0.0) nokogiri (~> 1.6.0) ruby_parser (~> 3.5) - httparty (0.13.7) - json (~> 1.8) + httparty (0.14.0) multi_xml (>= 0.5.2) i18n (0.7.0) - i18n-tasks (0.9.5) + i18n-tasks (0.9.6) activesupport (>= 4.0.2) ast (>= 2.1.0) easy_translate (>= 0.5.0) @@ -232,21 +239,22 @@ GEM parser (>= 2.2.3.0) term-ansicolor (>= 1.3.2) terminal-table (>= 1.5.1) - jquery-rails (4.1.1) + jquery-rails (4.2.1) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-ui-rails (5.0.5) railties (>= 3.2.16) - js-routes (1.2.6) + js-routes (1.3.0) railties (>= 3.2) sprockets-rails json (1.8.3) + jwt (1.5.6) kaminari (0.17.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) kgio (2.10.0) - kramdown (1.11.1) + kramdown (1.13.1) launchy (2.4.3) addressable (~> 2.3) leaflet-markercluster-rails (0.7.0) @@ -268,69 +276,82 @@ GEM mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) - mimemagic (0.3.0) + mimemagic (0.3.2) mini_portile2 (2.1.0) - minitest (5.9.0) + minitest (5.9.1) multi_json (1.11.3) multi_xml (0.5.5) multipart-post (2.0.0) nenv (0.3.0) - newrelic_rpm (3.16.0.318) - nokogiri (1.6.8) + newrelic_rpm (3.17.1.326) + nokogiri (1.6.8.1) mini_portile2 (~> 2.1.0) - pkg-config (~> 1.1.7) - notiffany (0.1.0) + notiffany (0.1.1) nenv (~> 0.1) shellany (~> 0.0) oauth (0.5.1) + oauth2 (1.2.0) + faraday (>= 0.8, < 0.10) + jwt (~> 1.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) omniauth (1.3.1) hashie (>= 1.2, < 4) rack (>= 1.0, < 3) + omniauth-facebook (3.0.0) + omniauth-oauth2 (~> 1.2) omniauth-flickr (0.0.19) multi_json (~> 1.11.0) omniauth-oauth (~> 1.0) omniauth-oauth (1.1.0) oauth omniauth (~> 1.0) + omniauth-oauth2 (1.4.0) + oauth2 (~> 1.0) + omniauth (~> 1.2) omniauth-twitter (1.2.1) json (~> 1.3) omniauth-oauth (~> 1.1) orm_adapter (0.5.0) - paperclip (4.3.6) - activemodel (>= 3.2.0) - activesupport (>= 3.2.0) + paperclip (5.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) cocaine (~> 0.5.5) mime-types - mimemagic (= 0.3.0) - parser (2.3.1.2) + mimemagic (~> 0.3.0) + parser (2.3.2.0) ast (~> 2.2) - pg (0.18.4) - pkg-config (1.1.7) + pg (0.19.0) plupload-rails (1.2.1) rails (>= 3.1) - poltergeist (1.10.0) + poltergeist (1.11.0) capybara (~> 2.1) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) - pry (0.10.3) + powerpack (0.1.1) + pry (0.10.4) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) + public_suffix (2.0.4) quiet_assets (1.1.0) railties (>= 3.1, < 5.0) - rack (1.6.4) + rack (1.6.5) + rack-protection (1.5.3) + rack rack-test (0.6.3) rack (>= 1.0) - rails (4.2.6) - actionmailer (= 4.2.6) - actionpack (= 4.2.6) - actionview (= 4.2.6) - activejob (= 4.2.6) - activemodel (= 4.2.6) - activerecord (= 4.2.6) - activesupport (= 4.2.6) + rails (4.2.7.1) + actionmailer (= 4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) + activemodel (= 4.2.7.1) + activerecord (= 4.2.7.1) + activesupport (= 4.2.7.1) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.6) + railties (= 4.2.7.1) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) @@ -340,7 +361,7 @@ GEM rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - rails-i18n (4.0.8) + rails-i18n (4.0.9) i18n (~> 0.7) railties (~> 4.0) rails_12factor (0.0.3) @@ -348,50 +369,59 @@ GEM rails_stdout_logging rails_serve_static_assets (0.0.5) rails_stdout_logging (0.0.5) - railties (4.2.6) - actionpack (= 4.2.6) - activesupport (= 4.2.6) + railties (4.2.7.1) + actionpack (= 4.2.7.1) + activesupport (= 4.2.7.1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - raindrops (0.16.0) - rake (11.2.2) - rb-fsevent (0.9.7) + rainbow (2.1.0) + raindrops (0.17.0) + rake (11.3.0) + rb-fsevent (0.9.8) rb-inotify (0.9.7) ffi (>= 0.5.0) - responders (2.2.0) + redis (3.3.2) + responders (2.3.0) railties (>= 4.2.0, < 5.1) - rspec (3.4.0) - rspec-core (~> 3.4.0) - rspec-expectations (~> 3.4.0) - rspec-mocks (~> 3.4.0) + rspec (3.5.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) rspec-activemodel-mocks (1.0.3) activemodel (>= 3.0) activesupport (>= 3.0) rspec-mocks (>= 2.99, < 4.0) - rspec-core (3.4.4) - rspec-support (~> 3.4.0) - rspec-expectations (3.4.0) + rspec-core (3.5.4) + rspec-support (~> 3.5.0) + rspec-expectations (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.4.0) - rspec-mocks (3.4.1) + rspec-support (~> 3.5.0) + rspec-mocks (3.5.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.4.0) - rspec-rails (3.4.2) - actionpack (>= 3.0, < 4.3) - activesupport (>= 3.0, < 4.3) - railties (>= 3.0, < 4.3) - rspec-core (~> 3.4.0) - rspec-expectations (~> 3.4.0) - rspec-mocks (~> 3.4.0) - rspec-support (~> 3.4.0) - rspec-support (3.4.1) - ruby-units (2.0.0) - ruby_dep (1.3.1) - ruby_parser (3.8.2) + rspec-support (~> 3.5.0) + rspec-rails (3.5.2) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.5.0) + rspec-expectations (~> 3.5.0) + rspec-mocks (~> 3.5.0) + rspec-support (~> 3.5.0) + rspec-support (3.5.0) + rubocop (0.45.0) + parser (>= 2.3.1.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 1.99.1, < 3.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + ruby-progressbar (1.8.1) + ruby-units (2.0.1) + ruby_dep (1.4.0) + ruby_parser (3.8.3) sexp_processor (~> 4.1) rubyzip (1.2.0) sass (3.4.22) - sass-rails (5.0.5) + sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) @@ -403,13 +433,24 @@ GEM websocket (~> 1.0) sexp_processor (4.7.0) shellany (0.0.1) - simplecov (0.11.2) + sidekiq (4.1.4) + concurrent-ruby (~> 1.0) + connection_pool (~> 2.2, >= 2.2.0) + redis (~> 3.2, >= 3.2.1) + sinatra (>= 1.4.7) + simplecov (0.12.0) docile (~> 1.1.0) - json (~> 1.8) + json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) + sinatra (1.4.7) + rack (~> 1.5) + rack-protection (~> 1.4) + tilt (>= 1.3, < 3) slop (3.6.0) - sprockets (3.6.2) + sparkpost_rails (1.4.0) + rails (>= 4.0, < 5.1) + sprockets (3.7.0) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.1.1) @@ -418,17 +459,20 @@ GEM sprockets (>= 3.0.0) term-ansicolor (1.3.2) tins (~> 1.0) - terminal-table (1.6.0) - thor (0.19.1) + terminal-table (1.7.3) + unicode-display_width (~> 1.1.1) + thor (0.19.3) thread (0.2.2) thread_safe (0.3.5) tilt (2.0.5) - tins (1.6.0) + tins (1.13.0) + trollop (1.16.2) tzinfo (1.2.2) thread_safe (~> 0.1) uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) + unicode-display_width (1.1.1) unicorn (5.1.0) kgio (~> 2.6) raindrops (~> 0.7) @@ -487,6 +531,7 @@ DEPENDENCIES guard guard-rspec haml + haml-i18n-extractor haml-rails heroku-api i18n-tasks @@ -500,20 +545,24 @@ DEPENDENCIES memcachier newrelic_rpm omniauth + omniauth-facebook omniauth-flickr (>= 0.0.15) omniauth-twitter pg - poltergeist (~> 1.6) + poltergeist pry quiet_assets - rails (~> 4.2.0) + rails (~> 4.2.7) rails_12factor rake (>= 10.0.0) rspec-activemodel-mocks rspec-rails + rubocop ruby-units sass-rails (~> 5.0.4) selenium-webdriver + sidekiq + sparkpost_rails uglifier (~> 2.7.2) unicorn webrat @@ -523,4 +572,4 @@ RUBY VERSION ruby 2.3.1p112 BUNDLED WITH - 1.12.5 + 1.13.6 diff --git a/README.md b/README.md index fc4371b73..52f43ba42 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ frontend features. We welcome contributions -- see * To set up your development environment, see [Getting started](https://github.com/Growstuff/growstuff/wiki/New-contributor-guide). * We encourage [pair programming](http://wiki.growstuff.org/index.php/Pairing), especially for newer developers. [Find a pair programming partner.](http://talk.growstuff.org/t/find-a-pair-programming-partner/13) * Drop in to our [discussion forums](http://talk.growstuff.org/), IRC or Gitter to chat to other developers, get help, etc. -* You may also be interested in our [API](http://wiki.growstuff.org/index.php/API). +* You may also be interested in our [API](https://github.com/Growstuff/growstuff/wiki/API). ## For designers, writers, researchers, data wranglers, and other contributors diff --git a/app/assets/images/facebook-login-splash.png b/app/assets/images/facebook-login-splash.png new file mode 100644 index 000000000..445a00b30 Binary files /dev/null and b/app/assets/images/facebook-login-splash.png differ diff --git a/app/assets/javascripts/append_date.js.coffee b/app/assets/javascripts/append_date.js.coffee index c1be9ce47..64c782a94 100644 --- a/app/assets/javascripts/append_date.js.coffee +++ b/app/assets/javascripts/append_date.js.coffee @@ -5,16 +5,15 @@ jQuery -> el = $('.append-date') - - el.datepicker({'format': 'yyyy-mm-dd'}) - href = el.attr('href') + el.datepicker({'format': 'yyyy-mm-dd'}) el.click (e) -> e.stopPropagation() e.preventDefault() originalText = $(this).text() + href = $(this).attr('href') $(this).text('Confirm without date') $(this).bind('click.confirm', (e) -> @@ -30,6 +29,8 @@ jQuery -> el.one 'changeDate', -> date = $(this).datepicker('getDate') + href = $(this).attr('href') + url = "#{href}&planting[finished_at]=#{date}" link = $("") diff --git a/app/assets/javascripts/crops.js.erb b/app/assets/javascripts/crops.js.erb index c31666d23..9a60dd60c 100644 --- a/app/assets/javascripts/crops.js.erb +++ b/app/assets/javascripts/crops.js.erb @@ -1,6 +1,7 @@ if (document.getElementById("cropmap") !== null) { mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>"; - mapbox_base_url = "https://c.tiles.mapbox.com/v3/" + mapbox_map_id + "/{z}/{x}/{y}.png"; + mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>"; + mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token; L.Icon.Default.imagePath = '/assets' diff --git a/app/assets/javascripts/members.js.erb b/app/assets/javascripts/members.js.erb index f55f35732..500e79b25 100644 --- a/app/assets/javascripts/members.js.erb +++ b/app/assets/javascripts/members.js.erb @@ -1,6 +1,7 @@ if (document.getElementById("membermap") !== null) { mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>"; - mapbox_base_url = "https://c.tiles.mapbox.com/v3/" + mapbox_map_id + "/{z}/{x}/{y}.png"; + mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>"; + mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token; L.Icon.Default.imagePath = '/assets' diff --git a/app/assets/javascripts/places.js.erb b/app/assets/javascripts/places.js.erb index 2dba78340..48cb960d7 100644 --- a/app/assets/javascripts/places.js.erb +++ b/app/assets/javascripts/places.js.erb @@ -1,7 +1,8 @@ if (document.getElementById("placesmap") !== null) { places_base_path = "/places"; mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>"; - mapbox_base_url = "https://c.tiles.mapbox.com/v3/" + mapbox_map_id + "/{z}/{x}/{y}.png"; + mapbox_access_token = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_access_token %>"; + mapbox_base_url = "http://a.tiles.mapbox.com/v4/" + mapbox_map_id + "/{z}/{x}/{y}.png?access_token=" + mapbox_access_token; nominatim_base_url = 'http://nominatim.openstreetmap.org/search/'; nominatim_user_agent_email = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.user_agent_email %>"; diff --git a/app/assets/javascripts/seeds.js.coffee b/app/assets/javascripts/seeds.js.coffee index 500c851d9..ab88a1163 100644 --- a/app/assets/javascripts/seeds.js.coffee +++ b/app/assets/javascripts/seeds.js.coffee @@ -42,4 +42,3 @@ $ -> element = document.getElementById(tmp) console.log("%s",tmp) element.remove() - \ No newline at end of file diff --git a/app/assets/stylesheets/overrides.sass b/app/assets/stylesheets/overrides.sass index 4b95b2bb6..3261470ca 100644 --- a/app/assets/stylesheets/overrides.sass +++ b/app/assets/stylesheets/overrides.sass @@ -2,7 +2,7 @@ @import "bootstrap" @import "custom_bootstrap/variables" // this padding needs to be done before the responsive stuff is imported -body +body // modifying this for our promotional banner. can be replaced after if // needed. // padding-top: $navbar-height + 15px @@ -19,14 +19,14 @@ body //@import "bootstrap/glyphicons" -.list-inline > li.first +.list-inline > li.first padding-left: 0px -h2 +h2 font-size: 150% -//#subtitle +//#subtitle // color: lighten($brown, 30%) // font-style: italic // font-weight: normal @@ -34,36 +34,49 @@ h2 // padding-left: 1em // padding-top: 0px -h3 +h3 font-size: 120% -.main +.main padding-right: 1em +.navbar .navbar-form + padding-top: 0 + padding-bottom: 0 + margin-right: 0 + margin-left: 15px + border: 0 + -webkit-box-shadow: none + box-shadow: none + +.img-responsive + max-width: 100% + height: auto + .sidebar border-left: 1px solid darken($beige, 10%) margin-left: -1px padding-left: 1em // this is used for eg. crops and members index pages -.six-across:nth-child(6n+1) +.six-across:nth-child(6n+1) margin-left: 0px -.three-across:nth-child(3n+1) +.three-across:nth-child(3n+1) margin-left: 0px clear: both // let's condense the hero unit a little -.jumbotron +.jumbotron padding-top: 30px padding-bottom: 30px // info under the main heading on homepage -.jumbotron .info +.jumbotron .info padding-top: 15px // signup widget on homepage -.jumbotron .signup +.jumbotron .signup background-color: lighten($green, 40%) border: 1px solid lighten($green, 20%) border-radius: 6px @@ -72,19 +85,19 @@ h3 text-align: center // stats shown on homepage. eg. "999 members..." -p.stats +p.stats font-weight: bold -.member-cards +.member-cards display: flex flex: none flex-wrap: wrap justify-content: space-between -.member-thumbnail +.member-thumbnail padding: .25em - div + div width: 5em display: inline-block vertical-align: top @@ -103,7 +116,7 @@ p.stats margin-left: auto @media (min-width: $screen-md-min) - .planting-thumbnail + .planting-thumbnail dl.planting-attributes font-size: 85% width: 100% @@ -115,10 +128,14 @@ p.stats padding-left: 80px margin-left: auto -#placesmap, #cropmap + .navbar .navbar-form + width: 250px + + +#placesmap, #cropmap height: 500px -#membermap +#membermap height: 250px .location-not-set @@ -128,23 +145,23 @@ p.stats background-repeat: no-repeat background-position: center -.member-location +.member-location font-size: small font-style: italic -.member-location a +.member-location a color: $brown -.photo-thumbnail +.photo-thumbnail padding: 0 position: relative img width: 100% - - .text + + .text display: none color: #000 position: absolute @@ -152,100 +169,100 @@ p.stats background: rgba(0, 0, 0, 0.8) width: 100% margin: 0 - - p + + p padding: 5px margin: 0 color: #fff - - &:hover - .text + + &:hover + .text display: block -.thumbnail +.thumbnail border: none text-align: center margin-bottom: 1.5em - .member-thumbnail + .member-thumbnail text-align: left - img + img height: 85px width: 85px max-width: 85px - .crop-thumbnail + .crop-thumbnail height: 220px - .cropinfo + .cropinfo display: inline-block max-width: 100% white-space: nowrap line-height: 1em padding-bottom: 2px - .cropname + .cropname overflow: hidden text-overflow: ellipsis - .scientificname + .scientificname font-size: small font-style: italic overflow: hidden text-overflow: ellipsis - .plantingcount + .plantingcount font-size: small - .crop-name a + .crop-name a padding-top: 2px - .scientific-name small + .scientific-name small margin-bottom: -2px -li.crop-hierarchy +li.crop-hierarchy list-style-type: disc -.navbar-brand +.navbar-brand margin: 0px padding: 0px -.navbar-bottom +.navbar-bottom margin: 40px 0px 0px 0px !important // footer -footer - #footer1, #footer2, #footer3 +footer + #footer1, #footer2, #footer3 text-align: left padding-top: 1em padding-bottom: 2em - ul + ul list-style-type: none list-style-position: outside padding-left: 0px margin-left: 0px - - a + + a color: $navbar-default-link-color text-decoration: none - - a:hover + + a:hover color: $navbar-default-link-hover-color - - a:active + + a:active color: $navbar-default-link-active-color - .navbar-bottom.navbar + .navbar-bottom.navbar border-radius: 0 // ensure footer is pushed to bottom of browser window -#maincontainer +#maincontainer min-height: 80% -html, body +html, body height: 100% -.crop-image, .member-image +.crop-image, .member-image width: 100% height: 100% @@ -255,24 +272,29 @@ html, body background: white z-index: $zindex-tooltip -.alert - a +.alert + a font-weight: 800 // Overrides applying only to mobile view. This must be at the end of the overrides file. -@media only screen and (max-width: 767px) - .sidebar +@media only screen and (max-width: 767px) + .sidebar margin-left: 0 border-left: none padding-left: 0 - #map + #map height: 300px - .navbar .nav > li + .navbar .nav > li display: block + .navbar .navbar-form + width: 185px + padding-left: 0 + padding-right: 0 + /* override "info" alert boxes to be green, not blue, on Growstuff */ $state-info-text: darken($green, 10%) $state-info-bg: lighten($green, 50%) @@ -283,7 +305,7 @@ $state-info-bg: lighten($green, 50%) $state-success-text: darken($green, 10%) $state-success-bg: lighten($green, 50%) -.hide +.hide display: none #add-sci_name-row, #remove-sci_name-row, #add-alt_name-row, #remove-alt_name-row @@ -300,14 +322,14 @@ $state-success-bg: lighten($green, 50%) #gardens_panel_body height: 20em -.form-group.required .control-label:before +.form-group.required .control-label:before content: "* " color: red -.margin-bottom +.margin-bottom margin-bottom: 1em -.red +.red color: red .truncate diff --git a/app/constants/photo_models.rb b/app/constants/photo_models.rb new file mode 100644 index 000000000..8f79933e4 --- /dev/null +++ b/app/constants/photo_models.rb @@ -0,0 +1,38 @@ +module Growstuff + module Constants + class PhotoModels + PLANTING = { type: 'planting', class: 'Planting', relation: 'plantings' }.freeze + HARVEST = { type: 'harvest', class: 'Harvest', relation: 'harvests' }.freeze + GARDEN = { type: 'garden', class: 'Garden', relation: 'gardens' }.freeze + SEED = { type: 'seed', class: 'Seed', relation: 'seeds' }.freeze + + ALL = [PLANTING, HARVEST, GARDEN, SEED].freeze + + def self.types + ALL.map do |model| + model[:type] + end + end + + def self.relations + ALL.map do |model| + model[:relation] + end + end + + def self.get_relation(object, type) + relation = ALL.select do |model| + model[:type] == type + end[0][:relation] + object.send(relation) + end + + def self.get_item(type) + class_name = ALL.select do |model| + model[:type] == type + end[0][:class] + class_name.constantize + end + end + end +end diff --git a/app/controllers/account_types_controller.rb b/app/controllers/account_types_controller.rb index 4c3da9080..f1c78706b 100644 --- a/app/controllers/account_types_controller.rb +++ b/app/controllers/account_types_controller.rb @@ -1,7 +1,7 @@ class AccountTypesController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource - + # GET /account_types def index @account_types = AccountType.all @@ -13,8 +13,6 @@ class AccountTypesController < ApplicationController # GET /account_types/1 def show - @account_type = AccountType.find(params[:id]) - respond_to do |format| format.html # show.html.erb end @@ -31,7 +29,6 @@ class AccountTypesController < ApplicationController # GET /account_types/1/edit def edit - @account_type = AccountType.find(params[:id]) end # POST /account_types @@ -49,8 +46,6 @@ class AccountTypesController < ApplicationController # PUT /account_types/1 def update - @account_type = AccountType.find(params[:id]) - respond_to do |format| if @account_type.update(account_type_params) format.html { redirect_to @account_type, notice: 'Account type was successfully updated.' } @@ -62,7 +57,6 @@ class AccountTypesController < ApplicationController # DELETE /account_types/1 def destroy - @account_type = AccountType.find(params[:id]) @account_type.destroy respond_to do |format| @@ -70,7 +64,7 @@ class AccountTypesController < ApplicationController end end - private + private def account_type_params params.require(:account_type).permit(:is_paid, :is_permanent_paid, :name) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index cdfcc2d00..c7396bfce 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -1,7 +1,7 @@ class AccountsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource - + # GET /accounts def index @accounts = Account.all @@ -13,8 +13,6 @@ class AccountsController < ApplicationController # GET /accounts/1 def show - @account = Account.find(params[:id]) - respond_to do |format| format.html # show.html.erb end @@ -22,13 +20,10 @@ class AccountsController < ApplicationController # GET /accounts/1/edit def edit - @account = Account.find(params[:id]) end # PUT /accounts/1 def update - @account = Account.find(params[:id]) - respond_to do |format| if @account.update(params[:account]) format.html { redirect_to @account, notice: 'Account detail was successfully updated.' } @@ -43,5 +38,4 @@ class AccountsController < ApplicationController def account_params params.require(:account).permit(:account_type_id, :member_id, :paid_until) end - end diff --git a/app/controllers/admin/orders_controller.rb b/app/controllers/admin/orders_controller.rb index c092ba7f2..574afc024 100644 --- a/app/controllers/admin/orders_controller.rb +++ b/app/controllers/admin/orders_controller.rb @@ -8,7 +8,7 @@ class Admin::OrdersController < ApplicationController def search authorize! :manage, :all - @orders = Order.search({by: params[:search_by], for: params[:search_text]}) + @orders = Order.search({ by: params[:search_by], for: params[:search_text] }) if @orders.empty? flash[:alert] = "Couldn't find order with #{params[:search_by]} = #{params[:search_text]}" @@ -17,6 +17,5 @@ class Admin::OrdersController < ApplicationController respond_to do |format| format.html # index.html.haml end - end end diff --git a/app/controllers/alternate_names_controller.rb b/app/controllers/alternate_names_controller.rb index bfcbb2a4f..43d76fff3 100644 --- a/app/controllers/alternate_names_controller.rb +++ b/app/controllers/alternate_names_controller.rb @@ -1,5 +1,5 @@ class AlternateNamesController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /alternate_names @@ -17,7 +17,7 @@ class AlternateNamesController < ApplicationController # GET /alternate_names/new.json def new @alternate_name = AlternateName.new - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.haml @@ -27,7 +27,6 @@ class AlternateNamesController < ApplicationController # GET /alternate_names/1/edit def edit - @alternate_name = AlternateName.find(params[:id]) end # POST /alternate_names @@ -50,8 +49,6 @@ class AlternateNamesController < ApplicationController # PUT /alternate_names/1 # PUT /alternate_names/1.json def update - @alternate_name = AlternateName.find(params[:id]) - respond_to do |format| if @alternate_name.update(alternate_name_params) format.html { redirect_to @alternate_name.crop, notice: 'Alternate name was successfully updated.' } @@ -66,7 +63,6 @@ class AlternateNamesController < ApplicationController # DELETE /alternate_names/1 # DELETE /alternate_names/1.json def destroy - @alternate_name = AlternateName.find(params[:id]) @crop = @alternate_name.crop @alternate_name.destroy diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f082d13cf..468f767c6 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,8 +3,8 @@ class ApplicationController < ActionController::Base include ApplicationHelper - after_filter :store_location - before_filter :set_locale + after_action :store_location + before_action :set_locale def store_location if (request.path != "/members/sign_in" && @@ -14,7 +14,7 @@ class ApplicationController < ActionController::Base request.path != "/members/confirmation" && request.path != "/members/sign_out" && !request.xhr?) - store_location_for(:member, request.fullpath) + store_location_for(:member, request.fullpath) end end @@ -23,7 +23,7 @@ class ApplicationController < ActionController::Base end def after_sign_out_path_for(resource_or_scope) - request.referrer + request.referer end # tweak CanCan defaults because we don't have a "current_user" method @@ -73,10 +73,9 @@ class ApplicationController < ActionController::Base :bio, :location, :latitude, :longitude, # email settings :show_email, :newsletter, :send_notification_email, :send_planting_reminder, - #update password + # update password :current_password ) end end - end diff --git a/app/controllers/authentications_controller.rb b/app/controllers/authentications_controller.rb index 7a6ddf724..3567ea67f 100644 --- a/app/controllers/authentications_controller.rb +++ b/app/controllers/authentications_controller.rb @@ -1,5 +1,5 @@ class AuthenticationsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # POST /authentications @@ -7,27 +7,18 @@ class AuthenticationsController < ApplicationController auth = request.env['omniauth.auth'] @authentication = nil if auth - - name = '' - case auth['provider'] - when 'twitter' - name = auth['info']['nickname'] - when 'flickr' - name = auth['info']['name'] - else - name = auth['info']['name'] - end + name = Growstuff::OauthSignupAction.new.determine_name(auth) @authentication = current_member.authentications - .create_with( - name: name, - token: auth['credentials']['token'], - secret: auth['credentials']['secret'] - ) - .find_or_create_by( - provider: auth['provider'], - uid: auth['uid'], - name: name) + .create_with( + name: name, + token: auth['credentials']['token'], + secret: auth['credentials']['secret'] + ) + .find_or_create_by( + provider: auth['provider'], + uid: auth['uid'], + name: name) flash[:notice] = "Authentication successful." else diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 884727646..bde0876e8 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -1,5 +1,5 @@ class CommentsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /comments @@ -18,7 +18,7 @@ class CommentsController < ApplicationController # GET /comments/new.json def new @comment = Comment.new - @post = Post.find_by_id(params[:post_id]) + @post = Post.find_by(id: params[:post_id]) if @post @comments = @post.comments @@ -34,7 +34,6 @@ class CommentsController < ApplicationController # GET /comments/1/edit def edit - @comment = Comment.find(params[:id]) @comments = @comment.post.comments end @@ -58,8 +57,6 @@ class CommentsController < ApplicationController # PUT /comments/1 # PUT /comments/1.json def update - @comment = Comment.find(params[:id]) - # you should never be able to change the author or post when # updating params[:comment].delete("post_id") @@ -79,7 +76,6 @@ class CommentsController < ApplicationController # DELETE /comments/1 # DELETE /comments/1.json def destroy - @comment = Comment.find(params[:id]) @post = @comment.post @comment.destroy @@ -89,7 +85,7 @@ class CommentsController < ApplicationController end end - private + private def comment_params params.require(:comment).permit(:author_id, :body, :post_id) diff --git a/app/controllers/crops_controller.rb b/app/controllers/crops_controller.rb index 9dd8a3ed4..0b9d713a0 100644 --- a/app/controllers/crops_controller.rb +++ b/app/controllers/crops_controller.rb @@ -1,7 +1,7 @@ require 'will_paginate/array' class CropsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :hierarchy, :search, :show] + before_action :authenticate_member!, except: [:index, :hierarchy, :search, :show] load_and_authorize_resource skip_authorize_resource only: [:hierarchy, :search] @@ -9,15 +9,12 @@ class CropsController < ApplicationController # GET /crops.json def index @sort = params[:sort] - if @sort == 'alpha' - # alphabetical order - @crops = Crop.includes(:scientific_names, {plantings: :photos}) - @paginated_crops = @crops.approved.paginate(page: params[:page]) - else - # default to sorting by popularity - @crops = Crop.popular.includes(:scientific_names, {plantings: :photos}) - @paginated_crops = @crops.approved.paginate(page: params[:page]) - end + @crops = if @sort == 'alpha' + Crop.includes(:scientific_names, { plantings: :photos }) + else + popular_crops + end + @paginated_crops = @crops.approved.paginate(page: params[:page]) respond_to do |format| format.html @@ -37,14 +34,14 @@ class CropsController < ApplicationController # GET /crops/wrangle def wrangle @approval_status = params[:approval_status] - case @approval_status - when "pending" - @crops = Crop.pending_approval - when "rejected" - @crops = Crop.rejected - else - @crops = Crop.recent - end + @crops = case @approval_status + when "pending" + Crop.pending_approval + when "rejected" + Crop.rejected + else + Crop.recent + end @crops = @crops.paginate(page: params[:page]) @@ -77,7 +74,7 @@ class CropsController < ApplicationController # GET /crops/1 # GET /crops/1.json def show - @crop = Crop.includes(:scientific_names, {plantings: :photos}).find(params[:id]) + @crop = Crop.includes(:scientific_names, { plantings: :photos }).find(params[:id]) @posts = @crop.posts.paginate(page: params[:page]) respond_to do |format| @@ -86,14 +83,14 @@ class CropsController < ApplicationController # TODO RABL or similar one day to avoid presentation logic here owner_structure = { owner: { - only: [:id, :login_name, :location, :latitude, :longitude] + only: [:id, :login_name, :location, :latitude, :longitude] } } render json: @crop.to_json(include: { - plantings: { - include: owner_structure - } - }) + plantings: { + include: owner_structure + } + }) end end end @@ -113,16 +110,13 @@ class CropsController < ApplicationController # GET /crops/1/edit def edit - @crop = Crop.find(params[:id]) @crop.alternate_names.build if @crop.alternate_names.blank? @crop.scientific_names.build if @crop.scientific_names.blank? - end # POST /crops # POST /crops.json def create - @crop = Crop.new(crop_params) if current_member.has_role? :crop_wrangler @@ -137,14 +131,14 @@ class CropsController < ApplicationController respond_to do |format| if @crop.save params[:alt_name].each do |index, value| - @crop.alternate_names.create(name: value, creator_id: current_member.id) + create_name('alternate', value) end params[:sci_name].each do |index, value| - @crop.scientific_names.create(scientific_name: value, creator_id: current_member.id) + create_name('scientific', value) end unless current_member.has_role? :crop_wrangler Role.crop_wranglers.each do |w| - Notifier.new_crop_request(w, @crop).deliver_now! + Notifier.new_crop_request(w, @crop).deliver_later! end end @@ -160,36 +154,20 @@ class CropsController < ApplicationController # PUT /crops/1 # PUT /crops/1.json def update - @crop = Crop.find(params[:id]) - previous_status = @crop.approval_status @crop.creator = current_member if previous_status == "pending" respond_to do |format| if @crop.update(crop_params) - if !params[:alt_name].nil? - @crop.alternate_names.each do |alt_name| - alt_name.destroy - end + recreate_names('alt_name', 'alternate') + recreate_names('sci_name', 'scientific') - params[:alt_name].each do |index, value| - alt_name = @crop.alternate_names.create(name: value, creator_id: current_member.id) - end - - @crop.scientific_names.each do |sci_name| - sci_name.destroy - end - params[:sci_name].each do |index, value| - sci_name = @crop.scientific_names.create(scientific_name: value, creator_id: current_member.id) - end - end - if previous_status == "pending" requester = @crop.requester new_status = @crop.approval_status - Notifier.crop_request_approved(requester, @crop).deliver_now! if new_status == "approved" - Notifier.crop_request_rejected(requester, @crop).deliver_now! if new_status == "rejected" + Notifier.crop_request_approved(requester, @crop).deliver_later! if new_status == "approved" + Notifier.crop_request_rejected(requester, @crop).deliver_later! if new_status == "rejected" end format.html { redirect_to @crop, notice: 'Crop was successfully updated.' } format.json { head :no_content } @@ -203,7 +181,6 @@ class CropsController < ApplicationController # DELETE /crops/1 # DELETE /crops/1.json def destroy - @crop = Crop.find(params[:id]) @crop.destroy respond_to do |format| @@ -214,7 +191,38 @@ class CropsController < ApplicationController private + def popular_crops + Crop.popular.includes(:scientific_names, { plantings: :photos }) + end + + def recreate_names(param_name, name_type) + return unless params[param_name].present? + destroy_names(name_type) + params[param_name].each do |index, value| + create_name(name_type, value) + end + end + + def destroy_names(name_type) + @crop.send("#{name_type}_names").each do |alt_name| + alt_name.destroy + end + end + + def create_name(name_type, value) + @crop.send("#{name_type}_names").create(name: value, creator_id: current_member.id) + end + def crop_params - params.require(:crop).permit(:en_wikipedia_url, :name, :parent_id, :creator_id, :approval_status, :request_notes, :reason_for_rejection, :rejection_notes, scientific_names_attributes: [:scientific_name, :_destroy, :id]) + params.require(:crop).permit(:en_wikipedia_url, + :name, + :parent_id, + :creator_id, + :approval_status, + :request_notes, + :reason_for_rejection, + :rejection_notes, scientific_names_attributes: [:scientific_name, + :_destroy, + :id]) end end diff --git a/app/controllers/follows_controller.rb b/app/controllers/follows_controller.rb index 2e2e5ec48..2c4b2daab 100644 --- a/app/controllers/follows_controller.rb +++ b/app/controllers/follows_controller.rb @@ -1,15 +1,14 @@ class FollowsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource skip_load_resource only: :create # POST /follows def create - @follow = current_member.follows.build(followed_id: follow_params[:followed_id]) if @follow.save - flash[:notice] = "Followed #{ @follow.followed.login_name }" + flash[:notice] = "Followed #{@follow.followed.login_name}" redirect_to :back else flash[:error] = "Already following or error while following." @@ -23,7 +22,7 @@ class FollowsController < ApplicationController unfollowed_name = @follow.followed.login_name @follow.destroy - flash[:notice] = "Unfollowed #{ unfollowed_name }" + flash[:notice] = "Unfollowed #{unfollowed_name}" redirect_to root_path end diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index 68bb919c4..fca489384 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -1,16 +1,16 @@ class GardensController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource - # GET /gardens # GET /gardens.json def index - @gardens = Garden.paginate(page: params[:page]) - @owner = Member.find_by_slug(params[:owner]) - if @owner - @gardens = @owner.gardens.paginate(page: params[:page]) - end + @owner = Member.find_by(slug: params[:owner]) + @gardens = if @owner + @owner.gardens.paginate(page: params[:page]) + else + Garden.paginate(page: params[:page]) + end respond_to do |format| format.html # index.html.erb @@ -21,8 +21,6 @@ class GardensController < ApplicationController # GET /gardens/1 # GET /gardens/1.json def show - @garden = Garden.find(params[:id]) - respond_to do |format| format.html # show.html.erb format.json { render json: @garden } @@ -42,7 +40,6 @@ class GardensController < ApplicationController # GET /gardens/1/edit def edit - @garden = Garden.find(params[:id]) end # POST /gardens @@ -66,8 +63,6 @@ class GardensController < ApplicationController # PUT /gardens/1 # PUT /gardens/1.json def update - @garden = Garden.find(params[:id]) - respond_to do |format| if @garden.update(garden_params) format.html { redirect_to @garden, notice: 'Garden was successfully updated.' } @@ -82,12 +77,13 @@ class GardensController < ApplicationController # DELETE /gardens/1 # DELETE /gardens/1.json def destroy - @garden = Garden.find(params[:id]) @garden.destroy expire_fragment("homepage_stats") respond_to do |format| - format.html { redirect_to gardens_by_owner_path(owner: @garden.owner), notice: 'Garden was successfully deleted.' } + format.html do + redirect_to gardens_by_owner_path(owner: @garden.owner), notice: 'Garden was successfully deleted.' + end format.json { head :no_content } end end @@ -96,6 +92,6 @@ class GardensController < ApplicationController def garden_params params.require(:garden).permit(:name, :slug, :owner_id, :description, :active, - :location, :latitude, :longitude, :area, :area_unit) + :location, :latitude, :longitude, :area, :area_unit) end end diff --git a/app/controllers/harvests_controller.rb b/app/controllers/harvests_controller.rb index 13dcedea7..1b924cace 100644 --- a/app/controllers/harvests_controller.rb +++ b/app/controllers/harvests_controller.rb @@ -1,20 +1,19 @@ class HarvestsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource - # GET /harvests # GET /harvests.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) - if @owner - @harvests = @owner.harvests.includes(:owner, :crop) - elsif @crop - @harvests = @crop.harvests.includes(:owner, :crop) - else - @harvests = Harvest.includes(:owner, :crop) - end + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) + @harvests = if @owner + @owner.harvests.includes(:owner, :crop) + elsif @crop + @crop.harvests.includes(:owner, :crop) + else + Harvest.includes(:owner, :crop) + end respond_to do |format| format.html { @harvests = @harvests.paginate(page: params[:page]) } @@ -33,7 +32,7 @@ class HarvestsController < ApplicationController @harvest = Harvest.new('harvested_at' => Date.today) # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.erb @@ -43,7 +42,6 @@ class HarvestsController < ApplicationController # GET /harvests/1/edit def edit - @harvest = Harvest.find(params[:id]) end # POST /harvests @@ -67,8 +65,6 @@ class HarvestsController < ApplicationController # PUT /harvests/1 # PUT /harvests/1.json def update - @harvest = Harvest.find(params[:id]) - respond_to do |format| if @harvest.update(harvest_params) format.html { redirect_to @harvest, notice: 'Harvest was successfully updated.' } @@ -83,7 +79,6 @@ class HarvestsController < ApplicationController # DELETE /harvests/1 # DELETE /harvests/1.json def destroy - @harvest = Harvest.find(params[:id]) @harvest.destroy respond_to do |format| @@ -96,6 +91,6 @@ class HarvestsController < ApplicationController def harvest_params params.require(:harvest).permit(:crop_id, :harvested_at, :description, :owner_id, - :quantity, :unit, :weight_quantity, :weight_unit, :plant_part_id, :slug, :si_weight) + :quantity, :unit, :weight_quantity, :weight_unit, :plant_part_id, :slug, :si_weight) end end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 69e9a95a2..9eb6e5003 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -2,7 +2,6 @@ class HomeController < ApplicationController skip_authorize_resource def index - # we were previously generating a lot of instance variables like # @members_count and @interesting_crops in here, but now we call # the relevant class methods directly in the view, so that fragment @@ -12,5 +11,4 @@ class HomeController < ApplicationController format.html # index.html.haml end end - end diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 7d8c892bb..d13a5e843 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -1,37 +1,46 @@ class MembersController < ApplicationController load_and_authorize_resource - skip_authorize_resource only: [:nearby, :unsubscribe] + skip_authorize_resource only: [:nearby, :unsubscribe, :finish_signup] after_action :expire_cache_fragments, only: :create def index @sort = params[:sort] - if @sort == 'recently_joined' - @members = Member.confirmed.recently_joined.paginate(page: params[:page]) - else - @members = Member.confirmed.paginate(page: params[:page]) - end + @members = if @sort == 'recently_joined' + Member.confirmed.recently_joined.paginate(page: params[:page]) + else + Member.confirmed.paginate(page: params[:page]) + end respond_to do |format| format.html # index.html.haml - format.json { render json: @members.to_json(only: [:id, :login_name, :slug, :bio, :created_at, :location, :latitude, :longitude]) } + format.json { + render json: @members.to_json(only: [ + :id, :login_name, :slug, :bio, :created_at, :location, :latitude, :longitude + ]) + } end end def show - @member = Member.confirmed.find(params[:id]) - @twitter_auth = @member.auth('twitter') - @flickr_auth = @member.auth('flickr') - @posts = @member.posts + @member = Member.confirmed.find(params[:id]) + @twitter_auth = @member.auth('twitter') + @flickr_auth = @member.auth('flickr') + @facebook_auth = @member.auth('facebook') + @posts = @member.posts # The garden form partial is called from the "New Garden" tab; # it requires a garden to be passed in @garden. # The new garden is not persisted unless Garden#save is called. @garden = Garden.new - + respond_to do |format| format.html # show.html.haml - format.json { render json: @member.to_json(only: [:id, :login_name, :bio, :created_at, :slug, :location, :latitude, :longitude]) } + format.json { + render json: @member.to_json(only: [ + :id, :login_name, :bio, :created_at, :slug, :location, :latitude, :longitude + ]) + } format.rss { render( layout: false, locals: { member: @member } @@ -70,10 +79,27 @@ class MembersController < ApplicationController end end + def finish_signup + @member = current_member + if request.patch? && params[:member] + if @member.update(member_params) + @member.skip_reconfirmation! + bypass_sign_in(@member) + redirect_to root_path, notice: 'Welcome.' + else + flash[:alert] = 'Failed to complete signup' + @show_errors = true + end + end + end + private def expire_cache_fragments expire_fragment("homepage_stats") end + def member_params + params.require(:member).permit(:login_name, :tos_agreement, :email, :newsletter) + end end diff --git a/app/controllers/notifications_controller.rb b/app/controllers/notifications_controller.rb index 57b5836ba..03b0ef8f8 100644 --- a/app/controllers/notifications_controller.rb +++ b/app/controllers/notifications_controller.rb @@ -1,11 +1,11 @@ class NotificationsController < ApplicationController include NotificationsHelper - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /notifications def index - @notifications = Notification.where(recipient_id: current_member).page(params[:page]) + @notifications = Notification.by_recipient(current_member).page(params[:page]) respond_to do |format| format.html # index.html.erb @@ -14,7 +14,6 @@ class NotificationsController < ApplicationController # GET /notifications/1 def show - @notification = Notification.find(params[:id]) @notification.read = true @notification.save @reply_link = reply_link(@notification) @@ -28,7 +27,7 @@ class NotificationsController < ApplicationController def new @notification = Notification.new - @recipient = Member.find_by_id(params[:recipient_id]) + @recipient = Member.find_by(id: params[:recipient_id]) @subject = params[:subject] || "" respond_to do |format| @@ -46,7 +45,6 @@ class NotificationsController < ApplicationController @subject = @sender_notification.subject =~ /^Re: / ? @sender_notification.subject : "Re: " + @sender_notification.subject - respond_to do |format| format.html # reply.html.haml @@ -55,7 +53,6 @@ class NotificationsController < ApplicationController # DELETE /notifications/1 def destroy - @notification = Notification.find(params[:id]) @notification.destroy respond_to do |format| @@ -67,7 +64,7 @@ class NotificationsController < ApplicationController def create params[:notification][:sender_id] = current_member.id @notification = Notification.new(notification_params) - @recipient = Member.find_by_id(params[:notification][:recipient_id]) + @recipient = Member.find_by(id: params[:notification][:recipient_id]) respond_to do |format| if @notification.save diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb new file mode 100644 index 000000000..e89f7577a --- /dev/null +++ b/app/controllers/omniauth_callbacks_controller.rb @@ -0,0 +1,52 @@ +require './lib/actions/oauth_signup_action' + +# +# Handle signup or signin +# from various oauth providers +# +# Heavily overlaps with Authentications controller +# +class OmniauthCallbacksController < Devise::OmniauthCallbacksController + def facebook + create + end + + def failure + flash[:alert] = "Authentication failed." + redirect_to request.env['omniauth.origin'] || "/" + end + + private + + def create + auth = request.env['omniauth.auth'] + action = Growstuff::OauthSignupAction.new + + @authentication = nil + if auth + member = action.find_or_create_from_authorization(auth) + @authentication = action.establish_authentication(auth, member) + + unless action.member_created? + sign_in_and_redirect member, event: :authentication # this will throw if @user is not activated + set_flash_message(:notice, :success, kind: auth['provider']) if is_navigational_format? + else + raise "Invalid provider" unless ['facebook', 'twitter', 'flickr'].index(auth['provider'].to_s) + + session["devise.#{auth['provider']}_data"] = request.env["omniauth.auth"] + sign_in member + redirect_to finish_signup_url(member) + end + else + redirect_to request.env['omniauth.origin'] || edit_member_registration_path + end + end + + def after_sign_in_path_for(resource) + if resource.tos_agreement + super resource + else + finish_signup_path(resource) + end + end +end diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb index 7781913d4..0eb381a89 100644 --- a/app/controllers/order_items_controller.rb +++ b/app/controllers/order_items_controller.rb @@ -1,5 +1,5 @@ class OrderItemsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # POST /order_items diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 82bb337f9..def0a018a 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,10 +1,10 @@ class OrdersController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /orders def index - @orders = Order.where(member_id: current_member.id) + @orders = Order.by_member(current_member) respond_to do |format| format.html # index.html.erb @@ -13,8 +13,6 @@ class OrdersController < ApplicationController # GET /orders/1 def show - @order = Order.find(params[:id]) - respond_to do |format| format.html # show.html.erb end @@ -31,8 +29,6 @@ class OrdersController < ApplicationController # checkout with PayPal def checkout - @order = Order.find(params[:id]) - respond_to do |format| if @order.update_attributes(referral_code: params[:referral_code]) response = EXPRESS_GATEWAY.setup_purchase( @@ -49,12 +45,9 @@ class OrdersController < ApplicationController format.html { render action: "show" } end end - end def complete - @order = Order.find(params[:id]) - if (params[:token] && params['PayerID']) purchase = EXPRESS_GATEWAY.purchase( @order.total, @@ -78,11 +71,9 @@ class OrdersController < ApplicationController respond_to do |format| format.html # new.html.erb end - end def cancel - @order = Order.find(params[:id]) respond_to do |format| format.html { redirect_to shop_url, notice: 'Order was cancelled.' } end @@ -90,7 +81,6 @@ class OrdersController < ApplicationController # DELETE /orders/1 def destroy - @order = Order.find(params[:id]) @order.destroy respond_to do |format| diff --git a/app/controllers/passwords_controller.rb b/app/controllers/passwords_controller.rb index 7a31ffddd..c14a02b40 100644 --- a/app/controllers/passwords_controller.rb +++ b/app/controllers/passwords_controller.rb @@ -1,7 +1,7 @@ class PasswordsController < Devise::PasswordsController + protected -protected def after_resetting_password_path_for(resource) root_path end -end \ No newline at end of file +end diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index d64419fcf..056e7f3f5 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -1,5 +1,5 @@ class PhotosController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /photos @@ -41,43 +41,17 @@ class PhotosController < ApplicationController # GET /photos/1/edit def edit - @photo = Photo.find(params[:id]) end # POST /photos # POST /photos.json def create - @photo = Photo.find_by_flickr_photo_id(params[:photo][:flickr_photo_id]) || - Photo.new(photo_params) - @photo.owner_id = current_member.id - @photo.set_flickr_metadata - - - collection = case params[:type] - when 'garden' - @photo.gardens - when 'planting' - @photo.plantings - when 'harvest' - @photo.harvests - else - nil - end - - if collection && has_item_id - item = params[:type].camelcase.constantize.find_by_id(params[:id]) - if item && member_owns_item(item) - collection << item unless collection.include?(item) - else - flash[:alert] = "Could not find this item owned by you" - end - else - flash[:alert] = "Missing or invalid type or id parameter" - end + find_or_create_photo_from_flickr_photo + add_photo_to_collection respond_to do |format| - if @photo.save - format.html { redirect_to @photo, notice: 'Photo was successfully added.' } + if @photo.present? && @photo.save + format.html { redirect_to photo_path(@photo), notice: 'Photo was successfully added.' } format.json { render json: @photo, status: :created, location: @photo } else format.html { render action: "new" } @@ -89,8 +63,6 @@ class PhotosController < ApplicationController # PUT /photos/1 # PUT /photos/1.json def update - @photo = Photo.find(params[:id]) - respond_to do |format| if @photo.update(photo_params) format.html { redirect_to @photo, notice: 'Photo was successfully updated.' } @@ -105,10 +77,9 @@ class PhotosController < ApplicationController # DELETE /photos/1 # DELETE /photos/1.json def destroy - @photo = Photo.find(params[:id]) @photo.destroy flash[:alert] = "Photo successfully deleted." - + respond_to do |format| format.html { redirect_to photos_url } format.json { head :no_content } @@ -117,16 +88,38 @@ class PhotosController < ApplicationController private - def has_item_id + def item_id? params.key? :id end - def member_owns_item(item) - item.owner.id == current_member.id + def flickr_photo_id_param + params[:photo][:flickr_photo_id] end def photo_params params.require(:photo).permit(:flickr_photo_id, :owner_id, :title, :license_name, - :license_url, :thumbnail_url, :fullsize_url, :link_url) + :license_url, :thumbnail_url, :fullsize_url, :link_url) + end + + def find_or_create_photo_from_flickr_photo + @photo = Photo.find_by(flickr_photo_id: flickr_photo_id_param) + @photo = Photo.new(photo_params) unless @photo + @photo.owner_id = current_member.id + @photo.set_flickr_metadata + @photo + end + + def add_photo_to_collection + raise "Missing or invalid type provided" unless Growstuff::Constants::PhotoModels.types.include?(params[:type]) + raise "No item id provided" unless item_id? + collection = Growstuff::Constants::PhotoModels.get_relation(@photo, params[:type]) + + item_class = Growstuff::Constants::PhotoModels.get_item(params[:type]) + item = item_class.find_by!(id: params[:id], owner_id: current_member.id) + raise "Could not find this item owned by you" unless item + + collection << item unless collection.include?(item) + rescue => e + flash[:alert] = e.message end end diff --git a/app/controllers/places_controller.rb b/app/controllers/places_controller.rb index 13c0bd05c..4982b1830 100644 --- a/app/controllers/places_controller.rb +++ b/app/controllers/places_controller.rb @@ -5,7 +5,11 @@ class PlacesController < ApplicationController respond_to do |format| format.html # json response is whatever we want to map here - format.json { render json: Member.located.to_json(only: [:id, :login_name, :slug, :location, :latitude, :longitude]) } + format.json do + render json: Member.located.to_json(only: [ + :id, :login_name, :slug, :location, :latitude, :longitude + ]) + end end end @@ -16,7 +20,11 @@ class PlacesController < ApplicationController @nearby_members = Member.nearest_to(params[:place]) respond_to do |format| format.html # show.html.haml - format.json { render json: @nearby_members.to_json(only: [:id, :login_name, :slug, :location, :latitude, :longitude]) } + format.json do + render json: @nearby_members.to_json(only: [ + :id, :login_name, :slug, :location, :latitude, :longitude + ]) + end end end @@ -35,5 +43,4 @@ class PlacesController < ApplicationController end end end - end diff --git a/app/controllers/plant_parts_controller.rb b/app/controllers/plant_parts_controller.rb index ed67926c7..e91bf57ba 100644 --- a/app/controllers/plant_parts_controller.rb +++ b/app/controllers/plant_parts_controller.rb @@ -15,8 +15,6 @@ class PlantPartsController < ApplicationController # GET /plant_parts/1 # GET /plant_parts/1.json def show - @plant_part = PlantPart.find(params[:id]) - respond_to do |format| format.html # show.html.erb format.json { render json: @plant_part } @@ -36,7 +34,6 @@ class PlantPartsController < ApplicationController # GET /plant_parts/1/edit def edit - @plant_part = PlantPart.find(params[:id]) end # POST /plant_parts @@ -58,8 +55,6 @@ class PlantPartsController < ApplicationController # PUT /plant_parts/1 # PUT /plant_parts/1.json def update - @plant_part = PlantPart.find(params[:id]) - respond_to do |format| if @plant_part.update(plant_part_params) format.html { redirect_to @plant_part, notice: 'Plant part was successfully updated.' } @@ -74,7 +69,6 @@ class PlantPartsController < ApplicationController # DELETE /plant_parts/1 # DELETE /plant_parts/1.json def destroy - @plant_part = PlantPart.find(params[:id]) @plant_part.destroy respond_to do |format| diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index 276024309..00b080946 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -1,24 +1,24 @@ class PlantingsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /plantings # GET /plantings.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) - if @owner - @plantings = @owner.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) - elsif @crop - @plantings = @crop.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) - else - @plantings = Planting.includes(:owner, :crop, :garden).paginate(page: params[:page]) - end + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) + @plantings = if @owner + @owner.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) + elsif @crop + @crop.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) + else + Planting.includes(:owner, :crop, :garden).paginate(page: params[:page]) + end respond_to do |format| format.html { @plantings = @plantings.paginate(page: params[:page]) } format.json { render json: @plantings } - format.rss { render layout: false } #index.rss.builder + format.rss { render layout: false } # index.rss.builder format.csv do specifics = (@owner ? "#{@owner.login_name}-" : @crop ? "#{@crop.name}-" : nil) @filename = "Growstuff-#{specifics}Plantings-#{Time.zone.now.to_s(:number)}.csv" @@ -44,8 +44,8 @@ class PlantingsController < ApplicationController @planting = Planting.new('planted_at' => Date.today) # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new - @garden = Garden.find_by_id(params[:garden_id]) || Garden.new + @crop = Crop.find_by(id: params[:crop_id]) || Crop.new + @garden = Garden.find_by(id: params[:garden_id]) || Garden.new respond_to do |format| format.html # new.html.erb @@ -55,8 +55,6 @@ class PlantingsController < ApplicationController # GET /plantings/1/edit def edit - @planting = Planting.find(params[:id]) - # the following are needed to display the form but aren't used @crop = Crop.new @garden = Garden.new @@ -71,7 +69,8 @@ class PlantingsController < ApplicationController respond_to do |format| if @planting.save - @planting.update_attribute(:days_before_maturity, update_days_before_maturity(@planting, planting_params[:crop_id])) + @planting.update_attribute(:days_before_maturity, + update_days_before_maturity(@planting, planting_params[:crop_id])) format.html { redirect_to @planting, notice: 'Planting was successfully created.' } format.json { render json: @planting, status: :created, location: @planting } expire_fragment("homepage_stats") @@ -85,12 +84,12 @@ class PlantingsController < ApplicationController # PUT /plantings/1 # PUT /plantings/1.json def update - @planting = Planting.find(params[:id]) params[:planted_at] = parse_date(params[:planted_at]) respond_to do |format| if @planting.update(planting_params) - @planting.update_attribute(:days_before_maturity, update_days_before_maturity(@planting, planting_params[:crop_id])) + @planting.update_attribute(:days_before_maturity, + update_days_before_maturity(@planting, planting_params[:crop_id])) format.html { redirect_to @planting, notice: 'Planting was successfully updated.' } format.json { head :no_content } else @@ -103,7 +102,6 @@ class PlantingsController < ApplicationController # DELETE /plantings/1 # DELETE /plantings/1.json def destroy - @planting = Planting.find(params[:id]) @garden = @planting.garden @planting.destroy expire_fragment("homepage_stats") @@ -118,8 +116,8 @@ class PlantingsController < ApplicationController def planting_params params.require(:planting).permit(:crop_id, :description, :garden_id, :planted_at, - :quantity, :sunniness, :planted_from, :owner_id, :finished, - :finished_at) + :quantity, :sunniness, :planted_from, :owner_id, :finished, + :finished_at) end def update_days_before_maturity(planting, crop_id) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index e30ea1f7f..2df88beab 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -1,22 +1,22 @@ class PostsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /posts # GET /posts.json def index - @author = Member.find_by_slug(params[:author]) - if @author - @posts = @author.posts.includes(:author, { comments: :author }).paginate(page: params[:page]) - else - @posts = Post.includes(:author, { comments: :author }).paginate(page: params[:page]) - end + @author = Member.find_by(slug: params[:author]) + @posts = if @author + @author.posts.includes(:author, { comments: :author }).paginate(page: params[:page]) + else + Post.includes(:author, { comments: :author }).paginate(page: params[:page]) + end respond_to do |format| format.html # index.html.haml format.json { render json: @posts } - format.rss { render layout: false } #index.rss.builder + format.rss { render layout: false } # index.rss.builder end end @@ -39,7 +39,7 @@ class PostsController < ApplicationController # GET /posts/new.json def new @post = Post.new - @forum = Forum.find_by_id(params[:forum_id]) + @forum = Forum.find_by(id: params[:forum_id]) respond_to do |format| format.html # new.html.haml @@ -49,7 +49,6 @@ class PostsController < ApplicationController # GET /posts/1/edit def edit - @post = Post.find(params[:id]) end # POST /posts @@ -72,8 +71,6 @@ class PostsController < ApplicationController # PUT /posts/1 # PUT /posts/1.json def update - @post = Post.find(params[:id]) - respond_to do |format| if @post.update(post_params) format.html { redirect_to @post, notice: 'Post was successfully updated.' } @@ -88,7 +85,6 @@ class PostsController < ApplicationController # DELETE /posts/1 # DELETE /posts/1.json def destroy - @post = Post.find(params[:id]) @post.destroy respond_to do |format| diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 1ed69703f..fa5108250 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,5 @@ class ProductsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /products @@ -13,8 +13,6 @@ class ProductsController < ApplicationController # GET /products/1 def show - @product = Product.find(params[:id]) - respond_to do |format| format.html # show.html.erb end @@ -31,7 +29,6 @@ class ProductsController < ApplicationController # GET /products/1/edit def edit - @product = Product.find(params[:id]) end # POST /products @@ -49,8 +46,6 @@ class ProductsController < ApplicationController # PUT /products/1 def update - @product = Product.find(params[:id]) - respond_to do |format| if @product.update(product_params) format.html { redirect_to @product, notice: 'Product was successfully updated.' } @@ -62,7 +57,6 @@ class ProductsController < ApplicationController # DELETE /products/1 def destroy - @product = Product.find(params[:id]) @product.destroy respond_to do |format| @@ -74,6 +68,6 @@ class ProductsController < ApplicationController def product_params params.require(:product).permit(:description, :min_price, :recommended_price, :name, - :account_type_id, :paid_months) + :account_type_id, :paid_months) end end diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index d0ab917b0..98651eb00 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -1,28 +1,29 @@ class RegistrationsController < Devise::RegistrationsController + respond_to :json def edit - @twitter_auth = current_member.auth('twitter') - @flickr_auth = current_member.auth('flickr') + @twitter_auth = current_member.auth('twitter') + @flickr_auth = current_member.auth('flickr') + @facebook_auth = current_member.auth('facebook') render "edit" end -# we need this subclassed method so that Devise doesn't force people to -# change their password every time they want to edit their settings. -# we also check that they give their current password to change their password. -# Code copied from -# https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password + # we need this subclassed method so that Devise doesn't force people to + # change their password every time they want to edit their settings. + # we also check that they give their current password to change their password. + # Code copied from + # https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password def update - @member = Member.find(current_member.id) - successfully_updated = if needs_password?(@member, params) - @member.update_with_password(devise_parameter_sanitizer.sanitize(:account_update)) + if needs_password?(@member, params) + successfully_updated = @member.update_with_password(devise_parameter_sanitizer.sanitize(:account_update)) else # remove the virtual current_password attribute # update_without_password doesn't know how to ignore it params[:member].delete(:current_password) - @member.update_without_password(devise_parameter_sanitizer.sanitize(:account_update)) + successfully_updated = @member.update_without_password(devise_parameter_sanitizer.sanitize(:account_update)) end if successfully_updated @@ -33,12 +34,11 @@ class RegistrationsController < Devise::RegistrationsController else render "edit" end - end end # check if we need the current password to update fields def needs_password?(member, params) params[:member][:password].present? || - params[:member][:password_confirmation].present? + params[:member][:password_confirmation].present? end diff --git a/app/controllers/robots_controller.rb b/app/controllers/robots_controller.rb index 090e0e031..eb846d23d 100644 --- a/app/controllers/robots_controller.rb +++ b/app/controllers/robots_controller.rb @@ -1,14 +1,9 @@ class RobotsController < ApplicationController - DEFAULT_FILENAME = 'config/robots.txt'.freeze def robots - filename = if subdomain && subdomain != 'www' - "config/robots.#{ subdomain }.txt" - end - - file_to_render = File.exists?(filename.to_s) ? filename : DEFAULT_FILENAME - + filename = "config/robots.#{subdomain}.txt" if subdomain && subdomain != 'www' + file_to_render = File.exist?(filename.to_s) ? filename : DEFAULT_FILENAME render file: file_to_render, layout: false, content_type: 'text/plain' end diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index c932d75ae..5c8b6f03d 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -1,7 +1,7 @@ class RolesController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource - + # GET /roles def index @roles = Role.all @@ -13,8 +13,6 @@ class RolesController < ApplicationController # GET /roles/1 def show - @role = Role.find(params[:id]) - respond_to do |format| format.html # show.html.erb end @@ -31,7 +29,6 @@ class RolesController < ApplicationController # GET /roles/1/edit def edit - @role = Role.find(params[:id]) end # POST /roles @@ -49,8 +46,6 @@ class RolesController < ApplicationController # PUT /roles/1 def update - @role = Role.find(params[:id]) - respond_to do |format| if @role.update(role_params) format.html { redirect_to @role, notice: 'Role was successfully updated.' } @@ -62,7 +57,6 @@ class RolesController < ApplicationController # DELETE /roles/1 def destroy - @role = Role.find(params[:id]) @role.destroy respond_to do |format| diff --git a/app/controllers/scientific_names_controller.rb b/app/controllers/scientific_names_controller.rb index cc7723b0b..981dd5c9f 100644 --- a/app/controllers/scientific_names_controller.rb +++ b/app/controllers/scientific_names_controller.rb @@ -1,5 +1,5 @@ class ScientificNamesController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /scientific_names @@ -16,8 +16,6 @@ class ScientificNamesController < ApplicationController # GET /scientific_names/1 # GET /scientific_names/1.json def show - @scientific_name = ScientificName.find(params[:id]) - respond_to do |format| format.html # show.html.haml format.json { render json: @scientific_name } @@ -28,7 +26,7 @@ class ScientificNamesController < ApplicationController # GET /scientific_names/new.json def new @scientific_name = ScientificName.new - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.haml @@ -38,7 +36,6 @@ class ScientificNamesController < ApplicationController # GET /scientific_names/1/edit def edit - @scientific_name = ScientificName.find(params[:id]) end # POST /scientific_names @@ -61,8 +58,6 @@ class ScientificNamesController < ApplicationController # PUT /scientific_names/1 # PUT /scientific_names/1.json def update - @scientific_name = ScientificName.find(params[:id]) - respond_to do |format| if @scientific_name.update(scientific_name_params) format.html { redirect_to @scientific_name.crop, notice: 'Scientific name was successfully updated.' } @@ -77,7 +72,6 @@ class ScientificNamesController < ApplicationController # DELETE /scientific_names/1 # DELETE /scientific_names/1.json def destroy - @scientific_name = ScientificName.find(params[:id]) @crop = @scientific_name.crop @scientific_name.destroy @@ -92,6 +86,6 @@ class ScientificNamesController < ApplicationController private def scientific_name_params - params.require(:scientific_name).permit(:crop_id, :scientific_name, :creator_id) + params.require(:scientific_name).permit(:crop_id, :name, :creator_id) end end diff --git a/app/controllers/seeds_controller.rb b/app/controllers/seeds_controller.rb index 70f3936a1..85f181e45 100644 --- a/app/controllers/seeds_controller.rb +++ b/app/controllers/seeds_controller.rb @@ -1,24 +1,24 @@ class SeedsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /seeds # GET /seeds.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) - if @owner - @seeds = @owner.seeds.includes(:owner, :crop).paginate(page: params[:page]) - elsif @crop - @seeds = @crop.seeds.includes(:owner, :crop).paginate(page: params[:page]) - else - @seeds = Seed.includes(:owner, :crop).paginate(page: params[:page]) - end + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) + @seeds = if @owner + @owner.seeds.includes(:owner, :crop).paginate(page: params[:page]) + elsif @crop + @crop.seeds.includes(:owner, :crop).paginate(page: params[:page]) + else + Seed.includes(:owner, :crop).paginate(page: params[:page]) + end respond_to do |format| format.html # index.html.erb format.json { render json: @seeds } - format.rss { render layout: false } #index.rss.builder + format.rss { render layout: false } # index.rss.builder format.csv do if @owner @filename = "Growstuff-#{@owner}-Seeds-#{Time.zone.now.to_s(:number)}.csv" @@ -35,8 +35,6 @@ class SeedsController < ApplicationController # GET /seeds/1 # GET /seeds/1.json def show - @seed = Seed.find(params[:id]) - respond_to do |format| format.html # show.html.erb format.json { render json: @seed } @@ -49,7 +47,7 @@ class SeedsController < ApplicationController @seed = Seed.new # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.erb @@ -59,7 +57,6 @@ class SeedsController < ApplicationController # GET /seeds/1/edit def edit - @seed = Seed.find(params[:id]) end # POST /seeds @@ -82,8 +79,6 @@ class SeedsController < ApplicationController # PUT /seeds/1 # PUT /seeds/1.json def update - @seed = Seed.find(params[:id]) - respond_to do |format| if @seed.update(seed_params) format.html { redirect_to @seed, notice: 'Seed was successfully updated.' } @@ -98,7 +93,6 @@ class SeedsController < ApplicationController # DELETE /seeds/1 # DELETE /seeds/1.json def destroy - @seed = Seed.find(params[:id]) @seed.destroy respond_to do |format| diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 99676c86f..cc461f1c3 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,4 +1,6 @@ class SessionsController < Devise::SessionsController + respond_to :json + def create super do |resource| if Crop.pending_approval.present? && current_member.has_role?(:crop_wrangler) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 333c84aa8..f66dfe03f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,18 +1,16 @@ module ApplicationHelper - def price_in_dollars(price) - return sprintf('%.2f', price / 100.0) + sprintf('%.2f', price / 100.0) end # 999 cents becomes 9.99 AUD -- for products/orders/etc def price_with_currency(price) - return sprintf('%.2f %s', price / 100.0, - Growstuff::Application.config.currency) + sprintf('%.2f %s', price / 100.0, Growstuff::Application.config.currency) end def parse_date(str) str ||= '' # Date.parse barfs on nil - return str == '' ? nil : Date.parse(str) + str == '' ? nil : Date.parse(str) end def forex_link(price) @@ -20,26 +18,26 @@ module ApplicationHelper currency = Growstuff::Application.config.currency link = "http://www.wolframalpha.com/input/?i=#{pid}+#{currency}" - link_to "(convert)", link, target: "_blank" + link_to "(convert)", link, target: "_blank", rel: "noopener noreferrer" end def build_alert_classes(alert_type = :info) classes = 'alert alert-dismissable ' case alert_type.to_sym - when :alert, :danger, :error, :validation_errors - classes += 'alert-danger' - when :warning, :todo - classes += 'alert-warning' - when :notice, :success - classes += 'alert-success' - when :info - classes += 'alert-info' + when :alert, :danger, :error, :validation_errors + classes += 'alert-danger' + when :warning, :todo + classes += 'alert-warning' + when :notice, :success + classes += 'alert-success' + when :info + classes += 'alert-info' end classes end # Produces a cache key for uniquely identifying cached fragments. - def cache_key_for(klass, identifier="all") + def cache_key_for(klass, identifier = "all") count = klass.count max_updated_at = klass.maximum(:updated_at).try(:utc).try(:to_s, :number) "#{klass.name.downcase.pluralize}/#{identifier}-#{count}-#{max_updated_at}" @@ -57,12 +55,25 @@ module ApplicationHelper # Falls back to Gravatar # def avatar_uri(member, size = 150) - return member.preferred_avatar_uri if member.preferred_avatar_uri.present? + if member.preferred_avatar_uri.present? + # Some avatars support different sizes + # http://graph.facebook.com/12345678/picture?width=150&height=150 + uri = URI.parse(member.preferred_avatar_uri) + + if uri.host == 'graph.facebook.com' + uri.query = "&width=#{size}&height=#{size}" + end + + # TODO: Assess twitter - https://dev.twitter.com/overview/general/user-profile-images-and-banners + # TODO: Assess flickr - https://www.flickr.com/services/api/misc.buddyicons.html + + return uri.to_s + end Gravatar.new(member.email).image_url({ - size: size, - default: :identicon - }) + size: size, + default: :identicon + }) end # Returns a string with the quantity and the right pluralization for a @@ -73,4 +84,3 @@ module ApplicationHelper "#{size} #{model_name}" end end - diff --git a/app/helpers/auto_suggest_helper.rb b/app/helpers/auto_suggest_helper.rb index f7722c59c..a8a86de56 100644 --- a/app/helpers/auto_suggest_helper.rb +++ b/app/helpers/auto_suggest_helper.rb @@ -1,6 +1,5 @@ module AutoSuggestHelper - - def auto_suggest(resource, source, options={}) + def auto_suggest(resource, source, options = {}) if options[:default] && !options[:default].new_record? default = options[:default] default_id = options[:default].try(:id) @@ -13,10 +12,14 @@ module AutoSuggestHelper source_path = Rails.application.routes.url_helpers.send("#{source}s_search_path") %Q{ - - - + + + }.html_safe end - end diff --git a/app/helpers/crops_helper.rb b/app/helpers/crops_helper.rb index 512efce8d..da3f72f10 100644 --- a/app/helpers/crops_helper.rb +++ b/app/helpers/crops_helper.rb @@ -2,7 +2,7 @@ module CropsHelper def display_seed_availability(member, crop) total_quantity = 0 - seeds = member.seeds.select {|seed| seed.crop.name == crop.name } + seeds = member.seeds.select { |seed| seed.crop.name == crop.name } seeds.each do |seed| total_quantity = total_quantity + seed.quantity if seed.quantity diff --git a/app/helpers/gardens_helper.rb b/app/helpers/gardens_helper.rb index 57f0c7bc6..5d1895e8f 100644 --- a/app/helpers/gardens_helper.rb +++ b/app/helpers/gardens_helper.rb @@ -1,10 +1,11 @@ module GardensHelper - def display_garden_description(garden) if garden.description.nil? "no description provided." else - truncate(garden.description, length: 130, separator: ' ', omission: '... ') { link_to "Read more", garden_path(garden) } + truncate(garden.description, length: 130, separator: ' ', omission: '... ') do + link_to "Read more", garden_path(garden) + end end end diff --git a/app/helpers/harvests_helper.rb b/app/helpers/harvests_helper.rb index b5f695a9d..67f668804 100644 --- a/app/helpers/harvests_helper.rb +++ b/app/helpers/harvests_helper.rb @@ -1,5 +1,4 @@ module HarvestsHelper - def display_quantity(harvest) human_quantity = display_human_quantity(harvest) weight = display_weight(harvest) @@ -16,33 +15,24 @@ module HarvestsHelper end def display_human_quantity(harvest) - if ! harvest.quantity.blank? && harvest.quantity > 0 + if !harvest.quantity.blank? && harvest.quantity > 0 if harvest.unit == 'individual' # just the number number_to_human(harvest.quantity, strip_insignificant_zeros: true) - elsif ! harvest.unit.blank? # pluralize anything else - return pluralize(number_to_human(harvest.quantity, strip_insignificant_zeros: true), harvest.unit) + elsif !harvest.unit.blank? # pluralize anything else + pluralize(number_to_human(harvest.quantity, strip_insignificant_zeros: true), harvest.unit) else - return "#{number_to_human(harvest.quantity, strip_insignificant_zeros: true)} #{harvest.unit}" + "#{number_to_human(harvest.quantity, strip_insignificant_zeros: true)} #{harvest.unit}" end - else - return nil end end def display_weight(harvest) - if ! harvest.weight_quantity.blank? && harvest.weight_quantity > 0 - return "#{number_to_human(harvest.weight_quantity, strip_insignificant_zeros: true)} #{harvest.weight_unit}" - else - return nil - end + return if harvest.weight_quantity.blank? || harvest.weight_quantity <= 0 + "#{number_to_human(harvest.weight_quantity, strip_insignificant_zeros: true)} #{harvest.weight_unit}" end def display_harvest_description(harvest) - if harvest.description.empty? - "No description provided." - else - harvest.description - end + return "No description provided." if harvest.description.empty? + harvest.description end - end diff --git a/app/helpers/plantings_helper.rb b/app/helpers/plantings_helper.rb index fb6e2e7dc..15f756ace 100644 --- a/app/helpers/plantings_helper.rb +++ b/app/helpers/plantings_helper.rb @@ -1,14 +1,13 @@ module PlantingsHelper - def display_days_before_maturity(planting) if planting.finished? - 0 + "0" elsif !planting.finished_at.nil? - ((p = planting.finished_at - DateTime.now).to_i) <= 0 ? 0 : p.to_i - elsif planting.days_before_maturity.nil? + ((p = planting.finished_at - Date.current).to_i) <= 0 ? "0" : p.to_i.to_s + elsif planting.planted_at.nil? || planting.days_before_maturity.nil? "unknown" else - ((p = (planting.planted_at + planting.days_before_maturity) - DateTime.now).to_i <= 0) ? 0 : p.to_i + ((p = (planting.planted_at + planting.days_before_maturity) - Date.current).to_i <= 0) ? "0" : p.to_i.to_s end end @@ -32,14 +31,13 @@ module PlantingsHelper def display_planting(planting) if planting.quantity.to_i > 0 && planting.planted_from.present? - return "#{planting.owner} planted #{pluralize(planting.quantity, planting.planted_from)}." + "#{planting.owner} planted #{pluralize(planting.quantity, planting.planted_from)}." elsif planting.quantity.to_i > 0 - return "#{planting.owner} planted #{pluralize(planting.quantity, 'unit')}." + "#{planting.owner} planted #{pluralize(planting.quantity, 'unit')}." elsif planting.planted_from.present? - return "#{planting.owner} planted #{planting.planted_from.pluralize}." + "#{planting.owner} planted #{planting.planted_from.pluralize}." else - return "#{planting.owner}." + "#{planting.owner}." end end - end diff --git a/app/helpers/seeds_helper.rb b/app/helpers/seeds_helper.rb index 2d4f5a299..f0bc76dd9 100644 --- a/app/helpers/seeds_helper.rb +++ b/app/helpers/seeds_helper.rb @@ -1,11 +1,9 @@ module SeedsHelper - def display_seed_description(seed) - if seed.description.nil? - "no description provided." + if seed.description.nil? + "no description provided." else - truncate(seed.description, length: 130, separator: ' ', omission: '... ') { link_to "Read more", seed_path(seed) } + truncate(seed.description, length: 130, separator: ' ', omission: '... ') { link_to "Read more", seed_path(seed) } end end - -end \ No newline at end of file +end diff --git a/app/mailers/notifier.rb b/app/mailers/notifier.rb index e16c4a5fb..e97fedcda 100644 --- a/app/mailers/notifier.rb +++ b/app/mailers/notifier.rb @@ -3,17 +3,21 @@ class Notifier < ActionMailer::Base default from: "Growstuff " def verifier - raise "RAILS_SECRET_TOKEN environment variable not set - have you created config/application.yml?" unless ENV['RAILS_SECRET_TOKEN'] + unless ENV['RAILS_SECRET_TOKEN'] + raise "RAILS_SECRET_TOKEN environment variable"\ + "not set - have you created config/application.yml?" + end - return ActiveSupport::MessageVerifier.new(ENV['RAILS_SECRET_TOKEN']) + ActiveSupport::MessageVerifier.new(ENV['RAILS_SECRET_TOKEN']) end def notify(notification) @notification = notification @reply_link = reply_link(@notification) - # Encrypting - @signed_message = verifier.generate ({ member_id: @notification.recipient.id, type: :send_notification_email }) + # Encrypting + message = { member_id: @notification.recipient.id, type: :send_notification_email } + @signed_message = verifier.generate(message) mail(to: @notification.recipient.email, subject: @notification.subject) @@ -25,18 +29,19 @@ class Notifier < ActionMailer::Base @plantings = @member.plantings.first(5) @harvests = @member.harvests.first(5) - # Encrypting - @signed_message = verifier.generate ({ member_id: @member.id, type: :send_planting_reminder }) + # Encrypting + message = { member_id: @member.id, type: :send_planting_reminder } + @signed_message = verifier.generate(message) if @member.send_planting_reminder mail(to: @member.email, - subject: "What have you planted lately?") + subject: "What have you planted lately?") end end def new_crop_request(member, request) @member, @request = member, request - mail(to: @member.email, subject: "#{@request.requester.login_name} has requested #{@request.name} as a new crop") + mail(to: @member.email, subject: "#{@request.requester.login_name} has requested #{@request.name} as a new crop") end def crop_request_approved(member, crop) @@ -48,5 +53,4 @@ class Notifier < ActionMailer::Base @member, @crop = member, crop mail(to: @member.email, subject: "#{crop.name.capitalize} has been rejected") end - end diff --git a/app/models/ability.rb b/app/models/ability.rb index 96b4ea69e..9085d7962 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -1,7 +1,7 @@ class Ability include CanCan::Ability - def initialize(member) + def initialize(member) # rubocop:disable Metrics/AbcSize # See the wiki for details: https://github.com/ryanb/cancan/wiki/Defining-Abilities # everyone can do these things, even non-logged in @@ -22,7 +22,7 @@ class Ability cannot :read, AccountType # nobody should be able to view unapproved crops unless they - # are wranglers or admins + # are wranglers or admins cannot :read, Crop can :read, Crop, approval_status: "approved" # scientific names should only be viewable if associated crop is approved @@ -108,7 +108,7 @@ class Ability can :cancel, Order, member_id: member.id, completed_at: nil can :destroy, Order, member_id: member.id, completed_at: nil - can :create, OrderItem + can :create, OrderItem # for now, let's not let people mess with individual order items cannot :read, OrderItem, order: { member_id: member.id } cannot :update, OrderItem, order: { member_id: member.id, completed_at: nil } diff --git a/app/models/account.rb b/app/models/account.rb index bfbf60e5d..1dd914d62 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -8,7 +8,7 @@ class Account < ActiveRecord::Base before_create do |account| unless account.account_type - account.account_type = AccountType.find_or_create_by(name: + account.account_type = AccountType.find_or_create_by(name: Growstuff::Application.config.default_account_type ) end @@ -16,10 +16,9 @@ class Account < ActiveRecord::Base def paid_until_string if account_type.is_permanent_paid - return "forever" + "forever" elsif account_type.is_paid - return paid_until.to_s + paid_until.to_s end end - end diff --git a/app/models/comment.rb b/app/models/comment.rb index e649eb2b4..c1a49a2bb 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -19,5 +19,4 @@ class Comment < ActiveRecord::Base ) end end - end diff --git a/app/models/concerns/photo_capable.rb b/app/models/concerns/photo_capable.rb new file mode 100644 index 000000000..61c92c98d --- /dev/null +++ b/app/models/concerns/photo_capable.rb @@ -0,0 +1,17 @@ +require_relative '../../constants/photo_models.rb' +module PhotoCapable + extend ActiveSupport::Concern + + included do + has_and_belongs_to_many :photos # rubocop:disable Rails/HasAndBelongsToMany + + before_destroy :remove_from_list + end + + def remove_from_list + photolist = photos.to_a # save a temp copy of the photo list + photos.clear # clear relationship b/w object and photo + + photolist.each(&:destroy_if_unused) + end +end diff --git a/app/models/crop.rb b/app/models/crop.rb index 82c11ba9f..8d14f981c 100644 --- a/app/models/crop.rb +++ b/app/models/crop.rb @@ -1,4 +1,4 @@ -class Crop < ActiveRecord::Base +class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength extend FriendlyId friendly_id :name, use: [:slugged, :finders] @@ -19,13 +19,22 @@ class Crop < ActiveRecord::Base belongs_to :parent, class_name: 'Crop' has_many :varieties, class_name: 'Crop', foreign_key: 'parent_id' has_and_belongs_to_many :posts - before_destroy {|crop| crop.posts.clear} + before_destroy { |crop| crop.posts.clear } default_scope { order("lower(name) asc") } - scope :recent, -> { where(approval_status: "approved").reorder("created_at desc") } - scope :toplevel, -> { where(approval_status: "approved", parent_id: nil) } - scope :popular, -> { where(approval_status: "approved").reorder("plantings_count desc, lower(name) asc") } - scope :randomized, -> { where(approval_status: "approved").reorder('random()') } # ok on sqlite and psql, but not on mysql + scope :recent, lambda { + where(approval_status: "approved").reorder("created_at desc") + } + scope :toplevel, lambda { + where(approval_status: "approved", parent_id: nil) + } + scope :popular, lambda { + where(approval_status: "approved").reorder("plantings_count desc, lower(name) asc") + } + scope :randomized, lambda { + # ok on sqlite and psql, but not on mysql + where(approval_status: "approved").reorder('random()') + } scope :pending_approval, -> { where(approval_status: "pending") } scope :approved, -> { where(approval_status: "approved") } scope :rejected, -> { where(approval_status: "rejected") } @@ -33,7 +42,7 @@ class Crop < ActiveRecord::Base ## Wikipedia urls are only necessary when approving a crop validates :en_wikipedia_url, format: { - with: /\Ahttps?:\/\/en\.wikipedia\.org\/wiki/, + with: /\Ahttps?:\/\/en\.wikipedia\.org\/wiki\/[[:alnum:]%_\.()-]+\z/, message: 'is not a valid English Wikipedia URL' }, if: :approved? @@ -50,55 +59,57 @@ class Crop < ActiveRecord::Base #################################### # Elastic search configuration - include Elasticsearch::Model - include Elasticsearch::Model::Callbacks - # In order to avoid clashing between different environments, - # use Rails.env as a part of index name (eg. development_growstuff) - index_name [Rails.env, "growstuff"].join('_') - settings index: { number_of_shards: 1 }, - analysis: { - tokenizer: { - gs_edgeNGram_tokenizer: { - type: "edgeNGram", # edgeNGram: NGram match from the start of a token - min_gram: 3, - max_gram: 10, - # token_chars: Elasticsearch will split on characters - # that don’t belong to any of these classes - token_chars: [ "letter", "digit" ] - } - }, - analyzer: { - gs_edgeNGram_analyzer: { - tokenizer: "gs_edgeNGram_tokenizer", - filter: ["lowercase"] - } - }, - } do - mappings dynamic: 'false' do - indexes :id, type: 'long' - indexes :name, type: 'string', analyzer: 'gs_edgeNGram_analyzer' - indexes :approval_status, type: 'string' - indexes :scientific_names do - indexes :scientific_name, - type: 'string', - analyzer: 'gs_edgeNGram_analyzer', - # Disabling field-length norm (norm). If the norm option is turned on(by default), - # higher weigh would be given for shorter fields, which in our case is irrelevant. - norms: { enabled: false } - end - indexes :alternate_names do + if ENV["GROWSTUFF_ELASTICSEARCH"] == "true" + include Elasticsearch::Model + include Elasticsearch::Model::Callbacks + # In order to avoid clashing between different environments, + # use Rails.env as a part of index name (eg. development_growstuff) + index_name [Rails.env, "growstuff"].join('_') + settings index: { number_of_shards: 1 }, + analysis: { + tokenizer: { + gs_edgeNGram_tokenizer: { + type: "edgeNGram", # edgeNGram: NGram match from the start of a token + min_gram: 3, + max_gram: 10, + # token_chars: Elasticsearch will split on characters + # that don’t belong to any of these classes + token_chars: ["letter", "digit"] + } + }, + analyzer: { + gs_edgeNGram_analyzer: { + tokenizer: "gs_edgeNGram_tokenizer", + filter: ["lowercase"] + } + }, + } do + mappings dynamic: 'false' do + indexes :id, type: 'long' indexes :name, type: 'string', analyzer: 'gs_edgeNGram_analyzer' + indexes :approval_status, type: 'string' + indexes :scientific_names do + indexes :name, + type: 'string', + analyzer: 'gs_edgeNGram_analyzer', + # Disabling field-length norm (norm). If the norm option is turned on(by default), + # higher weigh would be given for shorter fields, which in our case is irrelevant. + norms: { enabled: false } + end + indexes :alternate_names do + indexes :name, type: 'string', analyzer: 'gs_edgeNGram_analyzer' + end end end end - def as_indexed_json(options={}) + def as_indexed_json(options = {}) self.as_json( only: [:id, :name, :approval_status], include: { - scientific_names: { only: :scientific_name }, + scientific_names: { only: :name }, alternate_names: { only: :name } - }) + }) end # update the Elasticsearch index (only if we're using it in this @@ -112,14 +123,12 @@ class Crop < ActiveRecord::Base # End Elasticsearch section def to_s - return name + name end def default_scientific_name if scientific_names.size > 0 - return scientific_names.first.scientific_name - else - return nil + scientific_names.first.name end end @@ -128,7 +137,11 @@ class Crop < ActiveRecord::Base # later we can choose a default photo based on different criteria, # eg. popularity def default_photo - return photos.first + return photos.first if photos.any? + + # Crop has no photos? Look for the most recent harvest with a photo. + harvest_with_photo = Harvest.where(crop_id: id).joins(:photos).order('harvests.id DESC').limit(1).first + harvest_with_photo.photos.first if harvest_with_photo end # crop.sunniness @@ -137,13 +150,7 @@ class Crop < ActiveRecord::Base # key: sunniness (eg. 'sun') # value: count of how many times it's been used by plantings def sunniness - sunniness = Hash.new(0) - plantings.each do |p| - if !p.sunniness.blank? - sunniness[p.sunniness] += 1 - end - end - return sunniness + count_uses_of_property 'sunniness' end # crop.planted_from @@ -151,13 +158,7 @@ class Crop < ActiveRecord::Base # key: propagation method (eg. 'seed') # value: count of how many times it's been used by plantings def planted_from - planted_from = Hash.new(0) - plantings.each do |p| - if !p.planted_from.blank? - planted_from[p.planted_from] += 1 - end - end - return planted_from + count_uses_of_property 'planted_from' end # crop.popular_plant_parts @@ -171,7 +172,7 @@ class Crop < ActiveRecord::Base popular_plant_parts[h.plant_part] += 1 end end - return popular_plant_parts + popular_plant_parts end def interesting? @@ -179,7 +180,7 @@ class Crop < ActiveRecord::Base min_photos = 3 # needs this many photos to be interesting return false unless photos.size >= min_photos return false unless plantings_count >= min_plantings - return true + true end def pending? @@ -195,38 +196,38 @@ class Crop < ActiveRecord::Base end def approval_statuses - [ 'rejected', 'pending', 'approved' ] + ['rejected', 'pending', 'approved'] end def reasons_for_rejection - [ "already in database", "not edible", "not enough information", "other" ] + ["already in database", "not edible", "not enough information", "other"] end # Crop.interesting # returns a list of interesting crops, for use on the homepage etc def Crop.interesting - howmany = 12 # max number to find - interesting_crops = [] + howmany = 12 # max number to find + interesting_crops = [] Crop.includes(:photos).randomized.each do |c| break if interesting_crops.size == howmany next unless c.interesting? interesting_crops.push(c) end - return interesting_crops + interesting_crops end -# Crop.create_from_csv(row) -# used by db/seeds.rb and rake growstuff:import_crops -# CSV fields: -# - name (required) -# - en_wikipedia_url (required) -# - parent (name, optional) -# - scientific name (optional, can be picked up from parent if it has one) + # Crop.create_from_csv(row) + # used by db/seeds.rb and rake growstuff:import_crops + # CSV fields: + # - name (required) + # - en_wikipedia_url (required) + # - parent (name, optional) + # - scientific name (optional, can be picked up from parent if it has one) def Crop.create_from_csv(row) - name,en_wikipedia_url,parent,scientific_names,alternate_names = row + name, en_wikipedia_url, parent, scientific_names, alternate_names = row - cropbot = Member.find_by_login_name('cropbot') + cropbot = Member.find_by(login_name: 'cropbot') raise "cropbot account not found: run rake db:seed" unless cropbot crop = Crop.find_or_create_by(name: name) @@ -236,7 +237,7 @@ class Crop < ActiveRecord::Base ) if parent - parent = Crop.find_by_name(parent) + parent = Crop.find_by(name: parent) if parent crop.update_attributes(parent_id: parent.id) else @@ -246,64 +247,43 @@ class Crop < ActiveRecord::Base crop.add_scientific_names_from_csv(scientific_names) crop.add_alternate_names_from_csv(alternate_names) - end def add_scientific_names_from_csv(scientific_names) names_to_add = [] - if ! scientific_names.blank? # i.e. we actually passed something in, which isn't a given + if !scientific_names.blank? # i.e. we actually passed something in, which isn't a given names_to_add = scientific_names.split(%r{,\s*}) elsif parent && parent.scientific_names.size > 0 # pick up from parent - names_to_add = parent.scientific_names.map{|s| s.scientific_name} + names_to_add = parent.scientific_names.map { |s| s.name } else logger.warn("Warning: no scientific name (not even on parent crop) for #{self}") end + cropbot = Member.find_by(login_name: 'cropbot') + if names_to_add.size > 0 - cropbot = Member.find_by_login_name('cropbot') raise "cropbot account not found: run rake db:seed" unless cropbot - names_to_add.each do |n| - if self.scientific_names.exists?(scientific_name: n) - logger.warn("Warning: skipping duplicate scientific name #{n} for #{self}") - else - - self.scientific_names.create( - scientific_name: n, - creator_id: cropbot.id - ) - end - end + add_names_to_list(names_to_add, 'scientific') end end def add_alternate_names_from_csv(alternate_names) - names_to_add = [] - if ! alternate_names.blank? # i.e. we actually passed something in, which isn't a given - cropbot = Member.find_by_login_name('cropbot') + cropbot = Member.find_by(login_name: 'cropbot') + + if !alternate_names.blank? # i.e. we actually passed something in, which isn't a given raise "cropbot account not found: run rake db:seed" unless cropbot names_to_add = alternate_names.split(%r{,\s*}) - - names_to_add.each do |n| - if self.alternate_names.exists?(name: n) - logger.warn("Warning: skipping duplicate alternate name #{n} for #{self}") - else - self.alternate_names.create( - name: n, - creator_id: cropbot.id - ) - end - end - + add_names_to_list(names_to_add, 'alternate') end end def rejection_explanation if reason_for_rejection == "other" - return rejection_notes + rejection_notes else - return reason_for_rejection + reason_for_rejection end end @@ -311,23 +291,25 @@ class Crop < ActiveRecord::Base def self.search(query) if ENV['GROWSTUFF_ELASTICSEARCH'] == "true" search_str = query.nil? ? "" : query.downcase - response = __elasticsearch__.search( { - # Finds documents which match any field, but uses the _score from - # the best field insead of adding up _score from each field. - query: { - multi_match: { - query: "#{search_str}", - analyzer: "standard", - fields: ["name", "scientific_names.scientific_name", "alternate_names.name"] - } - }, - filter: { - term: {approval_status: "approved"} - }, - size: 50 - } + response = __elasticsearch__.search({ + # Finds documents which match any field, but uses the _score from + # the best field insead of adding up _score from each field. + query: { + multi_match: { + query: "#{search_str}", + analyzer: "standard", + fields: ["name", + "scientific_names.scientific_name", + "alternate_names.name"] + } + }, + filter: { + term: { approval_status: "approved" } + }, + size: 50 + } ) - return response.records.to_a + response.records.to_a else # if we don't have elasticsearch, just do a basic SQL query. # also, make sure it's an actual array not an activerecord @@ -338,16 +320,55 @@ class Crop < ActiveRecord::Base # we want to make sure that exact matches come first, even if not # using elasticsearch (eg. in development) - exact_match = Crop.approved.find_by_name(query) + exact_match = Crop.approved.find_by(name: query) if exact_match matches.delete(exact_match) matches.unshift(exact_match) end - return matches + matches end end + def Crop.case_insensitive_name(name) + where(["lower(name) = :value", { value: name.downcase }]) + end + + private + + def add_names_to_list(names_to_add, list_name) + names_to_add.each do |n| + if name_already_exists(list_name, n) + logger.warn("Warning: skipping duplicate #{list_name} name #{n} for #{self}") + else + create_crop_in_list(list_name, n) + end + end + end + + def create_crop_in_list(list_name, name) + cropbot = Member.find_by(login_name: 'cropbot') + create_hash = { + creator_id: "#{cropbot.id}", + name: name + } + self.send("#{list_name}_names").create(create_hash) + end + + def name_already_exists(list_name, name) + self.send("#{list_name}_names").exists?(name: name) + end + + def count_uses_of_property(col_name) + data = Hash.new(0) + plantings.each do |p| + if !p.send("#{col_name}").blank? + data[p.send("#{col_name}")] += 1 + end + end + data + end + # Custom validations def approval_status_cannot_be_changed_again @@ -370,5 +391,4 @@ class Crop < ActiveRecord::Base errors.add(:rejection_notes, "must be added if the reason for rejection is \"other\"") end end - end diff --git a/app/models/follow.rb b/app/models/follow.rb index 997352ebf..733c4fb43 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -11,6 +11,4 @@ class Follow < ActiveRecord::Base body: "#{self.follower.login_name} just followed you on #{ENV["GROWSTUFF_SITE_NAME"]}. " ) end - - end diff --git a/app/models/forum.rb b/app/models/forum.rb index 0e2e2615d..42bf1800e 100644 --- a/app/models/forum.rb +++ b/app/models/forum.rb @@ -6,7 +6,6 @@ class Forum < ActiveRecord::Base belongs_to :owner, class_name: "Member" def to_s - return name + name end - end diff --git a/app/models/garden.rb b/app/models/garden.rb index 448d7d60e..8f4e73678 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -1,23 +1,13 @@ class Garden < ActiveRecord::Base - include Geocodable extend FriendlyId + include Geocodable + include PhotoCapable friendly_id :garden_slug, use: [:slugged, :finders] belongs_to :owner, class_name: 'Member', foreign_key: 'owner_id' has_many :plantings, -> { order(created_at: :desc) }, dependent: :destroy has_many :crops, through: :plantings - has_and_belongs_to_many :photos - - before_destroy do |garden| - photolist = garden.photos.to_a # save a temp copy of the photo list - garden.photos.clear # clear relationship b/w garden and photo - - photolist.each do |photo| - photo.destroy_if_unused - end - end - # set up geocoding geocoded_by :location after_validation :geocode @@ -33,7 +23,7 @@ class Garden < ActiveRecord::Base validates :name, format: { - with: /\S/ + with: /\A\w+[\w ]+\z/ }, length: { maximum: 255 } @@ -50,9 +40,9 @@ class Garden < ActiveRecord::Base "acres" => "acre" } validates :area_unit, inclusion: { in: AREA_UNITS_VALUES.values, - message: "%{value} is not a valid area unit" }, - allow_nil: true, - allow_blank: true + message: "%{value} is not a valid area unit" }, + allow_nil: true, + allow_blank: true after_validation :cleanup_area @@ -76,13 +66,13 @@ class Garden < ActiveRecord::Base seen_crops = [] plantings.each do |p| - if (! seen_crops.include?(p.crop)) + if (!seen_crops.include?(p.crop)) unique_plantings.push(p) seen_crops.push(p.crop) end end - return unique_plantings[0..3] + unique_plantings[0..3] end def to_s @@ -101,7 +91,6 @@ class Garden < ActiveRecord::Base end def default_photo - return photos.first + photos.first end - end diff --git a/app/models/harvest.rb b/app/models/harvest.rb index 8a1fea37b..3c5b3ac96 100644 --- a/app/models/harvest.rb +++ b/app/models/harvest.rb @@ -1,30 +1,20 @@ class Harvest < ActiveRecord::Base - include ActionView::Helpers::NumberHelper extend FriendlyId + include ActionView::Helpers::NumberHelper + include PhotoCapable friendly_id :harvest_slug, use: [:slugged, :finders] belongs_to :crop belongs_to :owner, class_name: 'Member' belongs_to :plant_part - has_and_belongs_to_many :photos - - before_destroy do |harvest| - photolist = harvest.photos.to_a # save a temp copy of the photo list - harvest.photos.clear # clear relationship b/w harvest and photo - - photolist.each do |photo| - photo.destroy_if_unused - end - end - default_scope { order('created_at DESC') } validates :crop, approved: true - validates :crop, presence: {message: "must be present and exist in our database"} + validates :crop, presence: { message: "must be present and exist in our database" } - validates :plant_part, presence: {message: "must be present and exist in our database"} + validates :plant_part, presence: { message: "must be present and exist in our database" } validates :quantity, numericality: { @@ -45,9 +35,9 @@ class Harvest < ActiveRecord::Base "bushels" => "bushel" } validates :unit, inclusion: { in: UNITS_VALUES.values, - message: "%{value} is not a valid unit" }, - allow_nil: true, - allow_blank: true + message: "%{value} is not a valid unit" }, + allow_nil: true, + allow_blank: true validates :weight_quantity, numericality: { only_integer: false }, @@ -59,15 +49,15 @@ class Harvest < ActiveRecord::Base "oz" => "oz" } validates :weight_unit, inclusion: { in: WEIGHT_UNITS_VALUES.values, - message: "%{value} is not a valid unit" }, - allow_nil: true, - allow_blank: true + message: "%{value} is not a valid unit" }, + allow_nil: true, + allow_blank: true after_validation :cleanup_quantities before_save :set_si_weight - # we're storing the harvest weight in kilograms in the db too + # we're storing the harvest weight in kilograms in the db too # to make data manipulation easier def set_si_weight if self.weight_unit != nil @@ -105,34 +95,32 @@ class Harvest < ActiveRecord::Base string = '' if self.quantity string += "#{number_to_human(self.quantity.to_s, strip_insignificant_zeros: true)} " - if self.unit == 'individual' - string += 'individual ' - else - if self.quantity == 1 - string += "#{self.unit} of " - else - string += "#{self.unit.pluralize} of " - end - end + string += if self.unit == 'individual' + 'individual ' + elsif self.quantity == 1 + "#{self.unit} of " + else + "#{self.unit.pluralize} of " + end end - if self.unit != 'individual' # buckets of apricot*s* - string += "#{self.crop.name.pluralize}" - elsif self.quantity == 1 - string += "#{self.crop.name}" - else - string += "#{self.crop.name.pluralize}" - end + string += if self.unit != 'individual' # buckets of apricot*s* + "#{self.crop.name.pluralize}" + elsif self.quantity == 1 + "#{self.crop.name}" + else + "#{self.crop.name.pluralize}" + end if self.weight_quantity - string += " weighing #{number_to_human(self.weight_quantity, strip_insignificant_zeros: true)} #{self.weight_unit}" + string += " weighing #{number_to_human(self.weight_quantity, strip_insignificant_zeros: true)}"\ + " #{self.weight_unit}" end - return string + string end def default_photo - return photos.first + photos.first || crop.default_photo end - end diff --git a/app/models/member.rb b/app/models/member.rb index 13c650fbe..efd4e39bc 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -4,7 +4,7 @@ class Member < ActiveRecord::Base friendly_id :login_name, use: [:slugged, :finders] - has_many :posts, foreign_key: 'author_id' + has_many :posts, foreign_key: 'author_id' has_many :comments, foreign_key: 'author_id' has_many :forums, foreign_key: 'owner_id' @@ -29,7 +29,6 @@ class Member < ActiveRecord::Base has_many :likes, :dependent => :destroy - default_scope { order("lower(login_name) asc") } scope :confirmed, -> { where('confirmed_at IS NOT NULL') } scope :located, -> { where("location <> '' and latitude IS NOT NULL and longitude IS NOT NULL") } @@ -47,8 +46,8 @@ class Member < ActiveRecord::Base # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :trackable, :validatable, - :confirmable, :lockable, :timeoutable + :recoverable, :rememberable, :trackable, :validatable, + :confirmable, :lockable, :timeoutable, :omniauthable # set up geocoding geocoded_by :location @@ -60,8 +59,8 @@ class Member < ActiveRecord::Base attr_accessor :login # Requires acceptance of the Terms of Service - validates_acceptance_of :tos_agreement, allow_nil: false, - accept: true + validates_acceptance_of :tos_agreement, allow_nil: true, + accept: true validates :login_name, length: { @@ -82,27 +81,25 @@ class Member < ActiveRecord::Base } # Give each new member a default garden - after_create {|member| Garden.create(name: "Garden", owner_id: member.id) } + after_create { |member| Garden.create(name: "Garden", owner_id: member.id) } # and an account record (for paid accounts etc) # we use find_or_create to avoid accidentally creating a second one, # which can happen sometimes especially with FactoryGirl associations - after_create {|member| Account.find_or_create_by(member_id: member.id) } + after_create { |member| Account.find_or_create_by(member_id: member.id) } after_save :update_newsletter_subscription # allow login via either login_name or email address def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup - if login = conditions.delete(:login) - where(conditions).where(["lower(login_name) = :value OR lower(email) = :value", { value: login.downcase }]).first - else - where(conditions).first - end + login = conditions.delete(:login) + return where(conditions).login_name_or_email(login).first if login + find_by(conditions) end def to_s - return login_name + login_name end def has_role?(role_sym) @@ -110,7 +107,7 @@ class Member < ActiveRecord::Base end def current_order - orders.where(completed_at: nil).first + orders.find_by(completed_at: nil) end # when purchasing a product that gives you a paid account, this method @@ -131,16 +128,16 @@ class Member < ActiveRecord::Base def is_paid? if account.account_type.is_permanent_paid - return true + true elsif account.account_type.is_paid && account.paid_until >= Time.zone.now - return true + true else - return false + false end end def auth(provider) - return authentications.find_by_provider(provider) + authentications.find_by(provider: provider) end # Authenticates against Flickr and returns an object we can use for subsequent api calls @@ -155,27 +152,26 @@ class Member < ActiveRecord::Base @flickr.access_secret = flickr_auth.secret end end - return @flickr + @flickr end # Fetches a collection of photos from Flickr # Returns a [[page of photos], total] pair. # Total is needed for pagination. - def flickr_photos(page_num=1, set=nil) - result = false - if set - result = flickr.photosets.getPhotos( - photoset_id: set, - page: page_num, - per_page: 30 - ) - else - result = flickr.people.getPhotos( - user_id: 'me', - page: page_num, - per_page: 30 - ) - end + def flickr_photos(page_num = 1, set = nil) + result = if set + flickr.photosets.getPhotos( + photoset_id: set, + page: page_num, + per_page: 30 + ) + else + flickr.people.getPhotos( + user_id: 'me', + page: page_num, + per_page: 30 + ) + end if result return [result.photo, result.total] else @@ -185,11 +181,11 @@ class Member < ActiveRecord::Base # Returns a hash of Flickr photosets' ids and titles def flickr_sets - sets = Hash.new + sets = Hash.new flickr.photosets.getList.each do |p| sets[p.title] = p.id end - return sets + sets end def interesting? @@ -197,7 +193,15 @@ class Member < ActiveRecord::Base # Member.confirmed.located as those are required for # interestingness, as well. return true if plantings.present? - return false + false + end + + def Member.login_name_or_email(login) + where(["lower(login_name) = :value OR lower(email) = :value", { value: login.downcase }]) + end + + def Member.case_insensitive_login_name(login) + where(["lower(login_name) = :value", { value: login.downcase }]) end def Member.interesting @@ -209,18 +213,18 @@ class Member < ActiveRecord::Base interesting_members.push(m) end end - return interesting_members + interesting_members end def Member.nearest_to(place) nearby_members = [] if place - latitude, longitude = Geocoder.coordinates(place, params: {limit: 1}) + latitude, longitude = Geocoder.coordinates(place, params: { limit: 1 }) if latitude && longitude nearby_members = Member.located.sort_by { |x| x.distance_from([latitude, longitude]) } end end - return nearby_members + nearby_members end def update_newsletter_subscription @@ -237,24 +241,24 @@ class Member < ActiveRecord::Base end end - def newsletter_subscribe(testing=false) + def newsletter_subscribe(testing = false) return true if (Rails.env.test? && !testing) gb = Gibbon::API.new - res = gb.lists.subscribe({ - id: Growstuff::Application.config.newsletter_list_id, - email: { email: email }, - merge_vars: { login_name: login_name }, - double_optin: false # they already confirmed their email with us - }) + gb.lists.subscribe({ + id: Growstuff::Application.config.newsletter_list_id, + email: { email: email }, + merge_vars: { login_name: login_name }, + double_optin: false # they already confirmed their email with us + }) end - def newsletter_unsubscribe(testing=false) + def newsletter_unsubscribe(testing = false) return true if (Rails.env.test? && !testing) gb = Gibbon::API.new - res = gb.lists.unsubscribe({ - id: Growstuff::Application.config.newsletter_list_id, - email: { email: email } - }) + gb.lists.unsubscribe({ + id: Growstuff::Application.config.newsletter_list_id, + email: { email: email } + }) end def already_following?(member) @@ -262,7 +266,6 @@ class Member < ActiveRecord::Base end def get_follow(member) - self.follows.where(followed_id: member.id).first if already_following?(member) + self.follows.find_by(followed_id: member.id) if already_following?(member) end - end diff --git a/app/models/notification.rb b/app/models/notification.rb index 7b61e0c45..f19de9b34 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -7,6 +7,7 @@ class Notification < ActiveRecord::Base default_scope { order('created_at DESC') } scope :unread, -> { where(read: false) } + scope :by_recipient, ->(recipient) { where(recipient_id: recipient) } before_create :replace_blank_subject after_create :send_email @@ -23,8 +24,7 @@ class Notification < ActiveRecord::Base def send_email if self.recipient.send_notification_email - Notifier.notify(self).deliver_now + Notifier.notify(self).deliver_later end end - end diff --git a/app/models/order.rb b/app/models/order.rb index f3a4eaafb..81caa7f8e 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -12,14 +12,16 @@ class Order < ActiveRecord::Base before_save :standardize_referral_code + scope :by_member, ->(member) { where(member: member) } + # total price of an order def total sum = 0 for i in order_items do subtotal = i.price * i.quantity - sum += subtotal + sum += subtotal end - return sum + sum end # return items in the format ActiveMerchant/PayPal want them @@ -27,12 +29,12 @@ class Order < ActiveRecord::Base items = [] order_items.each do |i| items.push({ - name: i.product.name, - quantity: i.quantity, - amount: i.price - }) + name: i.product.name, + quantity: i.quantity, + amount: i.price + }) end - return items + items end # record the paypal details for reference @@ -62,35 +64,34 @@ class Order < ActiveRecord::Base # search orders (used by admin/orders) # usage: Order.search({ :by => 'member', :for => 'Skud' }) # can search by: member, order_id, paypal_token, paypal_payer_id, - def Order.search(args={}) + def Order.search(args = {}) if args[:for] case args[:by] - when "member" - member = Member.find_by_login_name(args[:for]) - if member - return member.orders - end - when "order_id" - order = Order.find_by_id(args[:for]) - if order - return [order] - end - when "paypal_token" - order = Order.find_by_paypal_express_token(args[:for]) - if order - return [order] - end - when "paypal_payer_id" - order = Order.find_by_paypal_express_payer_id(args[:for]) - if order - return [order] - end - when "referral_code" - # coerce to uppercase - return Order.where(referral_code: args[:for].upcase) + when "member" + member = Member.find_by(login_name: args[:for]) + if member + return member.orders + end + when "order_id" + order = Order.find_by(id: args[:for]) + if order + return [order] + end + when "paypal_token" + order = Order.find_by(paypal_express_token: args[:for]) + if order + return [order] + end + when "paypal_payer_id" + order = Order.find_by(paypal_express_payer_id: args[:for]) + if order + return [order] + end + when "referral_code" + # coerce to uppercase + return Order.where(referral_code: args[:for].upcase) end end - return [] + [] end - end diff --git a/app/models/photo.rb b/app/models/photo.rb index 1abef6047..5785ac6f0 100644 --- a/app/models/photo.rb +++ b/app/models/photo.rb @@ -1,22 +1,24 @@ class Photo < ActiveRecord::Base belongs_to :owner, class_name: 'Member' - has_and_belongs_to_many :plantings - has_and_belongs_to_many :harvests - has_and_belongs_to_many :gardens - before_destroy do |photo| - photo.plantings.clear - photo.harvests.clear - photo.gardens.clear + Growstuff::Constants::PhotoModels.relations.each do |relation| + has_and_belongs_to_many relation.to_sym end + before_destroy { all_associations.clear } + default_scope { order("created_at desc") } - # remove photos that aren't used by anything - def destroy_if_unused - unless plantings.size > 0 or harvests.size > 0 or gardens.size > 0 - self.destroy + def all_associations + associations = [] + Growstuff::Constants::PhotoModels.relations.each do |association_name| + associations << self.send(association_name.to_s).to_a end + associations.flatten! + end + + def destroy_if_unused + self.destroy unless all_associations.size > 0 end # This is split into a side-effect free method and a side-effecting method @@ -26,7 +28,7 @@ class Photo < ActiveRecord::Base info = flickr.photos.getInfo(photo_id: flickr_photo_id) licenses = flickr.photos.licenses.getInfo() license = licenses.find { |l| l.id == info.license } - return { + { title: info.title || "Untitled", license_name: license.name, license_url: license.url, @@ -34,11 +36,9 @@ class Photo < ActiveRecord::Base fullsize_url: FlickRaw.url_z(info), link_url: FlickRaw.url_photopage(info) } - end def set_flickr_metadata self.update_attributes(flickr_metadata) end - end diff --git a/app/models/plant_part.rb b/app/models/plant_part.rb index 652bc894b..fdf1d69e6 100644 --- a/app/models/plant_part.rb +++ b/app/models/plant_part.rb @@ -6,7 +6,7 @@ class PlantPart < ActiveRecord::Base has_many :crops, -> { uniq }, through: :harvests def to_s - return name + name end # Postgres complains if the ORDER BY clause of a SELECT DISTINCT query is @@ -18,7 +18,6 @@ class PlantPart < ActiveRecord::Base # associated to plant parts will not be sorted in the same order as crops # on the rest of the site. def crops - return super.reorder('name') + super.reorder('name') end - end diff --git a/app/models/planting.rb b/app/models/planting.rb index 7d048ca1d..52c2d5463 100644 --- a/app/models/planting.rb +++ b/app/models/planting.rb @@ -1,22 +1,12 @@ class Planting < ActiveRecord::Base extend FriendlyId + include PhotoCapable friendly_id :planting_slug, use: [:slugged, :finders] belongs_to :garden belongs_to :owner, class_name: 'Member', counter_cache: true belongs_to :crop, counter_cache: true - has_and_belongs_to_many :photos - - before_destroy do |planting| - photolist = planting.photos.to_a # save a temp copy of the photo list - planting.photos.clear # clear relationship b/w planting and photo - - photolist.each do |photo| - photo.destroy_if_unused - end - end - default_scope { order("created_at desc") } scope :finished, -> { where(finished: true) } scope :current, -> { where(finished: false) } @@ -32,7 +22,7 @@ class Planting < ActiveRecord::Base validates :crop, approved: true - validates :crop, presence: {message: "must be present and exist in our database"} + validates :crop, presence: { message: "must be present and exist in our database" } validates :quantity, numericality: { @@ -42,9 +32,9 @@ class Planting < ActiveRecord::Base SUNNINESS_VALUES = %w(sun semi-shade shade) validates :sunniness, inclusion: { in: SUNNINESS_VALUES, - message: "%{value} is not a valid sunniness value" }, - allow_nil: true, - allow_blank: true + message: "%{value} is not a valid sunniness value" }, + allow_nil: true, + allow_blank: true PLANTED_FROM_VALUES = [ 'seed', @@ -60,9 +50,9 @@ class Planting < ActiveRecord::Base 'layering' ] validates :planted_from, inclusion: { in: PLANTED_FROM_VALUES, - message: "%{value} is not a valid planting method" }, - allow_nil: true, - allow_blank: true + message: "%{value} is not a valid planting method" }, + allow_nil: true, + allow_blank: true validate :finished_must_be_after_planted @@ -78,7 +68,7 @@ class Planting < ActiveRecord::Base # location = garden owner + garden name, i.e. "Skud's backyard" def location - return "#{garden.owner.login_name}'s #{garden}" + "#{garden.owner.login_name}'s #{garden}" end # stringify as "beet in Skud's backyard" or similar @@ -87,11 +77,11 @@ class Planting < ActiveRecord::Base end def default_photo - return photos.first + photos.first end def interesting? - return photos.present? + photos.present? end def calculate_days_before_maturity(planting, crop) @@ -104,8 +94,8 @@ class Planting < ActiveRecord::Base if differences.compact.empty? nil - else - differences.compact.sum/differences.compact.size + else + differences.compact.sum / differences.compact.size end end @@ -120,7 +110,7 @@ class Planting < ActiveRecord::Base return 0 if current_date < planted_at return 100 if days > days_before_maturity - percent = (days/days_before_maturity*100).to_i + percent = (days / days_before_maturity * 100).to_i if percent >= 100 percent = 100 @@ -132,7 +122,7 @@ class Planting < ActiveRecord::Base # return a list of interesting plantings, for the homepage etc. # we can't do this via a scope (as far as we know) so sadly we have to # do it this way. - def Planting.interesting(howmany=12, require_photo=true) + def Planting.interesting(howmany = 12, require_photo = true) interesting_plantings = [] seen_owners = Hash.new(false) # keep track of which owners we've seen already @@ -146,6 +136,6 @@ class Planting < ActiveRecord::Base interesting_plantings.push(p) end - return interesting_plantings + interesting_plantings end end diff --git a/app/models/post.rb b/app/models/post.rb index a84b29cfe..1ed7054a0 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -6,26 +6,26 @@ class Post < ActiveRecord::Base belongs_to :forum has_many :comments, dependent: :destroy has_and_belongs_to_many :crops - before_destroy {|post| post.crops.clear} + before_destroy { |post| post.crops.clear } after_save :update_crops_posts_association # also has_many notifications, but kinda meaningless to get at them # from this direction, so we won't set up an association for now. after_create do recipients = [] - sender = self.author.id + sender = self.author.id self.body.scan(Haml::Filters::GrowstuffMarkdown::MEMBER_REGEX) do |m| # find member case-insensitively and add to list of recipients - member = Member.where('lower(login_name) = ?', $1.downcase).first + member = Member.case_insensitive_login_name($1).first recipients << member if member && !recipients.include?(member) end self.body.scan(Haml::Filters::GrowstuffMarkdown::MEMBER_AT_REGEX) do |m| # find member case-insensitively and add to list of recipients - member = Member.where('lower(login_name) = ?', $1[1..-1].downcase).first + member = Member.case_insensitive_login_name($1[1..-1]).first recipients << member if member && !recipients.include?(member) end # don't send notifications to yourself - recipients.map{ |r| r.id }.each do |recipient| + recipients.map { |r| r.id }.each do |recipient| if recipient != sender Notification.create( recipient_id: recipient, @@ -45,7 +45,6 @@ class Post < ActiveRecord::Base }, length: { maximum: 255 } - def author_date_subject # slugs are created before created_at is set time = created_at || Time.zone.now @@ -71,14 +70,15 @@ class Post < ActiveRecord::Base end private - def update_crops_posts_association - self.crops.destroy_all - # look for crops mentioned in the post. eg. [tomato](crop) - self.body.scan(Haml::Filters::GrowstuffMarkdown::CROP_REGEX) do |m| - # find crop case-insensitively - crop = Crop.where('lower(name) = ?', $1.downcase).first - # create association - self.crops << crop if crop && !self.crops.include?(crop) - end + + def update_crops_posts_association + self.crops.destroy_all + # look for crops mentioned in the post. eg. [tomato](crop) + self.body.scan(Haml::Filters::GrowstuffMarkdown::CROP_REGEX) do |m| + # find crop case-insensitively + crop = Crop.case_insensitive_name($1).first + # create association + self.crops << crop if crop && !self.crops.include?(crop) end + end end diff --git a/app/models/product.rb b/app/models/product.rb index 942e2603b..8cab945a7 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -11,5 +11,4 @@ class Product < ActiveRecord::Base def to_s name end - end diff --git a/app/models/seed.rb b/app/models/seed.rb index 9592fb1c4..6f441964a 100644 --- a/app/models/seed.rb +++ b/app/models/seed.rb @@ -1,5 +1,6 @@ class Seed < ActiveRecord::Base extend FriendlyId + include PhotoCapable friendly_id :seed_slug, use: [:slugged, :finders] belongs_to :crop @@ -9,7 +10,7 @@ class Seed < ActiveRecord::Base validates :crop, approved: true - validates :crop, presence: {message: "must be present and exist in our database"} + validates :crop, presence: { message: "must be present and exist in our database" } validates :quantity, numericality: { only_integer: true, @@ -30,9 +31,10 @@ class Seed < ActiveRecord::Base TRADABLE_TO_VALUES = %w(nowhere locally nationally internationally) validates :tradable_to, inclusion: { in: TRADABLE_TO_VALUES, - message: "You may only trade seed nowhere, locally, nationally, or internationally" }, - allow_nil: false, - allow_blank: false + message: "You may only trade seed nowhere, "\ + "locally, nationally, or internationally" }, + allow_nil: false, + allow_blank: false ORGANIC_VALUES = [ 'certified organic', @@ -40,9 +42,10 @@ class Seed < ActiveRecord::Base 'conventional/non-organic', 'unknown'] validates :organic, inclusion: { in: ORGANIC_VALUES, - message: "You must say whether the seeds are organic or not, or that you don't know" }, - allow_nil: false, - allow_blank: false + message: "You must say whether the seeds "\ + "are organic or not, or that you don't know" }, + allow_nil: false, + allow_blank: false GMO_VALUES = [ 'certified GMO-free', @@ -50,21 +53,22 @@ class Seed < ActiveRecord::Base 'GMO', 'unknown'] validates :gmo, inclusion: { in: GMO_VALUES, - message: "You must say whether the seeds are genetically modified or not, or that you don't know" }, - allow_nil: false, - allow_blank: false + message: "You must say whether the seeds are "\ + "genetically modified or not, or that you don't know" }, + allow_nil: false, + allow_blank: false HEIRLOOM_VALUES = %w(heirloom hybrid unknown) validates :heirloom, inclusion: { in: HEIRLOOM_VALUES, - message: "You must say whether the seeds are heirloom, hybrid, or unknown" }, - allow_nil: false, - allow_blank: false + message: "You must say whether the seeds are heirloom, hybrid, or unknown" }, + allow_nil: false, + allow_blank: false def tradable? if self.tradable_to == 'nowhere' - return false + false else - return true + true end end @@ -72,7 +76,7 @@ class Seed < ActiveRecord::Base # assuming we're passed something that's already known to be tradable # eg. from Seed.tradable scope return false if owner.location.blank? # don't want unspecified locations - return true + true end # Seed.interesting @@ -88,8 +92,7 @@ class Seed < ActiveRecord::Base end end - return interesting_seeds - + interesting_seeds end def seed_slug diff --git a/app/views/alternate_names/_form.html.haml b/app/views/alternate_names/_form.html.haml index cb33660b5..3d3855e60 100644 --- a/app/views/alternate_names/_form.html.haml +++ b/app/views/alternate_names/_form.html.haml @@ -21,7 +21,7 @@ = f.label :name, :class => 'control-label col-md-2' .col-md-8 = f.text_field :name, :class => 'form-control' - + .form-group .form-actions.col-md-offset-2.col-md-8 = f.submit 'Save', :class => 'btn btn-primary' \ No newline at end of file diff --git a/app/views/comments/show.html.haml b/app/views/comments/show.html.haml index 84cd72159..fd92fd4c2 100644 --- a/app/views/comments/show.html.haml +++ b/app/views/comments/show.html.haml @@ -1,6 +1,6 @@ = content_for :title, @comment.post.subject - content_for :opengraph do - = tag("meta", property: "og:image", content: avatar_uri(@comment.post.author, 200)) + = tag("meta", property: "og:image", content: avatar_uri(@comment.post.author, 200)) = tag("meta", property: "og:image:user_generated", content: "true") = tag("meta", property: "og:title", content: @comment.post.subject) = tag("meta", property: "og:description", content: strip_tags(@comment.post.body).split(' ')[0..20].join(' ')) diff --git a/app/views/crops/_find_seeds.html.haml b/app/views/crops/_find_seeds.html.haml index 0e31f6916..e005c9d00 100644 --- a/app/views/crops/_find_seeds.html.haml +++ b/app/views/crops/_find_seeds.html.haml @@ -1,7 +1,7 @@ %h4 Find #{ crop.name } seeds - if crop.seeds.empty? %p - There are no seeds available to trade. + There are no seeds available to trade on Growstuff right now. - else %ul - crop.seeds.tradable.each do |seed| @@ -10,6 +10,8 @@ = render :partial => 'members/location', :locals => { :member => seed.owner } %p = link_to "View all #{crop.name} seeds", seeds_by_crop_path(crop) +%p + = link_to "Purchase seeds via Ebay", "http://rover.ebay.com/rover/1/705-53470-19255-0/1?icep_ff3=9&pub=5575213277&toolid=10001&campid=5337940151&customid=&icep_uq=#{URI.escape crop.name}&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=181003&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229515&kwid=902099&mtid=824&kw=lg", target: "_blank", rel: "noopener noreferrer" - if crop.approved? - if current_member %p= link_to "List #{crop.name} seeds to trade", new_seed_path(:crop_id => crop.id) diff --git a/app/views/crops/_form.html.haml b/app/views/crops/_form.html.haml index 99fa8648e..c6fe06b06 100644 --- a/app/views/crops/_form.html.haml +++ b/app/views/crops/_form.html.haml @@ -48,14 +48,14 @@ Scientific names = button_tag "+", :id => "add-sci_name-row", :type => "button" = button_tag "-", :id => "remove-sci_name-row", :type => "button" - + .form-group#scientific_names - @crop.scientific_names.each.with_index do |sci, index| .template.col-md-12{ :id => "sci_template[#{index+1}]" } .col-md-2 = label_tag :scientific_names, "Scientific name #{index+1}:", :class => 'control-label' .col-md-8 - = text_field_tag "sci_name[#{index+1}]", sci.scientific_name, :id => "sci_name[#{index+1}]", :class => 'form-control' + = text_field_tag "sci_name[#{index+1}]", sci.name, :id => "sci_name[#{index+1}]", :class => 'form-control' %span.help-block Scientific name of crop. .col-md-2 @@ -64,7 +64,7 @@ = button_tag "+", :id => "add-alt_name-row", :type => "button" = button_tag "-", :id => "remove-alt_name-row", :type => "button" - .form-group#alternate_names + .form-group#alternate_names - @crop.alternate_names.each.with_index do |alt, index| .template.col-md-12{ :id => "alt_template[#{index+1}]" } .col-md-2 diff --git a/app/views/crops/_popover.html.haml b/app/views/crops/_popover.html.haml index 625e55297..f1d0f8937 100644 --- a/app/views/crops/_popover.html.haml +++ b/app/views/crops/_popover.html.haml @@ -2,7 +2,7 @@ %small - if crop.scientific_names.size > 0 %i - = crop.scientific_names.first.scientific_name + = crop.scientific_names.first.name %br/ Planted = pluralize(crop.plantings.size, "time") diff --git a/app/views/crops/_scientific_names.html.haml b/app/views/crops/_scientific_names.html.haml index ee845e543..37510ed71 100644 --- a/app/views/crops/_scientific_names.html.haml +++ b/app/views/crops/_scientific_names.html.haml @@ -6,7 +6,7 @@ %ul - crop.scientific_names.each do |sn| %li - = sn.scientific_name + = sn.name - if can? :edit, sn = link_to 'Edit', edit_scientific_name_path(sn), { :class => 'btn btn-default btn-xs' } - if can? :destroy, sn diff --git a/app/views/crops/_thumbnail.html.haml b/app/views/crops/_thumbnail.html.haml index 32cbbce9a..a6315503d 100644 --- a/app/views/crops/_thumbnail.html.haml +++ b/app/views/crops/_thumbnail.html.haml @@ -8,7 +8,7 @@ = link_to crop.name, crop - if crop.scientific_names.size > 0 .scientificname - = crop.scientific_names.first.scientific_name + = crop.scientific_names.first.name .plantingcount Planted = pluralize(crop.plantings.size, "time") diff --git a/app/views/crops/new.html.haml b/app/views/crops/new.html.haml index f472c4791..bd4f6e613 100644 --- a/app/views/crops/new.html.haml +++ b/app/views/crops/new.html.haml @@ -1,7 +1,7 @@ -- content_for :title, (can?(:wrangle, @crop) ? "New crop" : "Suggest a crop") +- content_for :title, (can?(:wrangle, @crop) ? "New crop" : "Suggest a crop") - unless can? :wrangler, @crop - + %p Thanks for taking the time to suggest a crop! Our crop database is managed by volunteers, and we appreciate your help. Here are some things to consider when suggesting a new crop: %ul diff --git a/app/views/crops/show.html.haml b/app/views/crops/show.html.haml index 288629464..ec578db14 100644 --- a/app/views/crops/show.html.haml +++ b/app/views/crops/show.html.haml @@ -2,7 +2,7 @@ - content_for :subtitle, @crop.default_scientific_name - content_for :opengraph do - @crop.photos.each do |photo| - = tag("meta", property: "og:image", content: photo.fullsize_url) + = tag("meta", property: "og:image", content: photo.fullsize_url) = tag("meta", property: "og:title", content: @crop.name) = tag("meta", property: "og:type", content: "website") = tag("meta", property: "og:url", content: request.original_url) @@ -91,4 +91,11 @@ %h4 Learn more about #{ @crop.name.pluralize } %ul - %li= link_to 'Wikipedia (English)', @crop.en_wikipedia_url + %li= link_to 'Wikipedia (English)', @crop.en_wikipedia_url, target: "_blank", rel: "noopener noreferrer" + %li + = link_to "OpenFarm - Growing guide", "https://openfarm.cc/en/crops/#{URI.escape @crop.name}", target: "_blank", rel: "noopener noreferrer" + %li + = link_to "Gardenate - Planting reminders", "http://www.gardenate.com/plant/#{URI.escape @crop.name}", target: "_blank", rel: "noopener noreferrer" + - if current_member && current_member.location + %li + = link_to "Google", "http://www.google.com/search?q=#{URI.escape ["Growing", @crop.name, current_member.location].join(" ")}", target: "_blank", rel: "noopener noreferrer" diff --git a/app/views/crops/wrangle.html.haml b/app/views/crops/wrangle.html.haml index 4c0448b01..c84e4f676 100644 --- a/app/views/crops/wrangle.html.haml +++ b/app/views/crops/wrangle.html.haml @@ -24,7 +24,7 @@ %li{:class => @approval_status == "rejected" ? 'active' : ''} = link_to "Rejected", wrangle_crops_path(:approval_status => "rejected") -%h2 +%h2 - if @approval_status == "pending" Requested Crops - elsif @approval_status == "rejected" @@ -54,7 +54,7 @@ %td= link_to c.en_wikipedia_url, c.en_wikipedia_url %td - c.scientific_names.each do |s| - = link_to s.scientific_name, s + = link_to s.name, s %br/ %td= c.requester.present? ? (link_to c.requester, c.requester) : "N/A" - unless @approval_status == "pending" diff --git a/app/views/devise/registrations/_edit_apps.html.haml b/app/views/devise/registrations/_edit_apps.html.haml index 6445c0bc0..e4d49c9ef 100644 --- a/app/views/devise/registrations/_edit_apps.html.haml +++ b/app/views/devise/registrations/_edit_apps.html.haml @@ -25,3 +25,15 @@ = link_to "Disconnect", @flickr_auth, :confirm => "Are you sure you want to remove this connection?", :method => :delete, :class => "remove" - else =link_to 'Connect to Flickr', '/auth/flickr' + + .row + .col-md-12 + %p + = image_tag "facebook_32.png", :size => "32x32", :alt => 'Facebook logo' + - if @facebook_auth + You are connected to Facebook as + = succeed "." do + =link_to @facebook_auth.name, "http://facebook.com/profile/#{@facebook_auth.uid}" + = link_to "Disconnect", @facebook_auth, :confirm => "Are you sure you want to remove this connection?", :method => :delete, :class => "remove" + - else + =link_to 'Connect to Facebook', '/auth/facebook' \ No newline at end of file diff --git a/app/views/devise/registrations/_edit_profile.html.haml b/app/views/devise/registrations/_edit_profile.html.haml index aa3ad0ced..003cdbe1e 100644 --- a/app/views/devise/registrations/_edit_profile.html.haml +++ b/app/views/devise/registrations/_edit_profile.html.haml @@ -18,11 +18,12 @@ Profile picture .col-md-8 = render :partial => "members/avatar", :locals => { :member => @member } - %p - %br/ - To change your profile picture, visit - = succeed "." do - = link_to 'gravatar.com', "http://gravatar.com/" + - unless @member.preferred_avatar_uri.present? + %p + %br/ + To change your profile picture, visit + = succeed "." do + = link_to 'gravatar.com', "http://gravatar.com/" .form-group .form-actions.col-md-offset-2.col-md-8 diff --git a/app/views/forums/index.html.haml b/app/views/forums/index.html.haml index 39b4f269d..69a3024ce 100644 --- a/app/views/forums/index.html.haml +++ b/app/views/forums/index.html.haml @@ -1,4 +1,4 @@ -- content_for :title, t('.title') +- content_for :title, t('.title') - if can? :create, Forum %p diff --git a/app/views/gardens/_thumbnail.html.haml b/app/views/gardens/_thumbnail.html.haml index ef9209802..bc08be246 100644 --- a/app/views/gardens/_thumbnail.html.haml +++ b/app/views/gardens/_thumbnail.html.haml @@ -1,7 +1,7 @@ .panel.panel-success .panel-heading %h3.panel-title - = link_to "#{garden.owner.login_name}'s garden", garden.owner + = link_to "#{garden.owner.login_name}'s garden", garden - if can? :edit, garden %a.pull-right{:href => edit_garden_path(garden), :role => "button", :id => "edit_garden_glyphicon"} %span.glyphicon.glyphicon-pencil{:title => "Edit"} @@ -11,17 +11,17 @@ = link_to image_tag((garden.default_photo ? garden.default_photo.thumbnail_url : 'placeholder_150.png'), :alt => garden.name, :class => 'img'), garden .col-md-8 %dl.dl-horizontal - %dt Name : + %dt Name : %dd= link_to garden.name, garden - %dt Location : + %dt Location : %dd - if garden.location.blank? not specified - else = link_to garden.location, place_path(garden.location, anchor: "gardens") - %dt Area : + %dt Area : %dd= garden.area.nil? ? "not specified" : pluralize(garden.area, garden.area_unit) - %dt Active? : + %dt Active? : %dd= garden.active ? "Yes" : "No" .col-md-12 %b diff --git a/app/views/gardens/show.html.haml b/app/views/gardens/show.html.haml index 882f0dfde..146a66f00 100644 --- a/app/views/gardens/show.html.haml +++ b/app/views/gardens/show.html.haml @@ -40,8 +40,8 @@ %p No description available yet. - if can? :edit, @garden - %p - Why not + %p + Why not = link_to 'tell us more.', edit_garden_path(@garden) - if @garden.photos.size > 0 or (can? :edit, @garden and can? :create, Photo) diff --git a/app/views/harvests/_thumbnail.html.haml b/app/views/harvests/_thumbnail.html.haml index d21614947..0f908e642 100644 --- a/app/views/harvests/_thumbnail.html.haml +++ b/app/views/harvests/_thumbnail.html.haml @@ -1,23 +1,23 @@ .panel.panel-success .panel-heading %h3.panel-title - = link_to "#{harvest.owner.login_name}'s harvest", harvest.owner + = link_to "#{harvest.owner.login_name}'s #{harvest.crop.name} harvest", harvest - if can? :edit, harvest %a.pull-right{:href => edit_harvest_path(harvest), :role => "button", :id => "edit_harvest_glyphicon"} %span.glyphicon.glyphicon-pencil{:title => "Edit"} .panel-body .row .col-md-4 - = link_to image_tag((harvest.crop.default_photo ? harvest.crop.default_photo.thumbnail_url : 'placeholder_150.png'), :alt => harvest.crop.name, :class => 'img'), harvest.crop + = link_to image_tag((harvest.default_photo ? harvest.default_photo.thumbnail_url : 'placeholder_150.png'), :alt => harvest.crop.name, :class => 'img'), harvest.crop .col-md-8 %dl.dl-horizontal - %dt Crop : + %dt Crop : %dd= link_to harvest.crop.name, harvest.crop - %dt Plant part : + %dt Plant part : %dd= link_to harvest.plant_part, harvest.plant_part - %dt Quantity : + %dt Quantity : %dd= display_quantity(harvest) - %dt Harvest date : + %dt Harvest date : %dd= harvest.harvested_at .panel-footer %dt Description diff --git a/app/views/harvests/show.html.haml b/app/views/harvests/show.html.haml index f4e6220d8..deb53d6e1 100644 --- a/app/views/harvests/show.html.haml +++ b/app/views/harvests/show.html.haml @@ -1,7 +1,7 @@ =content_for :title, "#{@harvest.crop} harvested by #{@harvest.owner}" - content_for :opengraph do - @harvest.photos.each do |photo| - = tag("meta", property: "og:image", content: photo.fullsize_url) + = tag("meta", property: "og:image", content: photo.fullsize_url) = tag("meta", property: "og:image:user_generated", content: "true") = tag("meta", property: "og:title", content: "#{@harvest.crop} harvested by #{@harvest.owner}") = tag("meta", property: "og:type", content: "website") @@ -17,8 +17,8 @@ = link_to "view all #{@harvest.owner}'s harvests", harvests_by_owner_path(:owner => @harvest.owner.slug) %p %b Plant part: - - if @harvest.plant_part - = link_to @harvest.plant_part, @harvest.plant_part + - if @harvest.plant_part + = link_to @harvest.plant_part, @harvest.plant_part - else not specified %p diff --git a/app/views/home/_stats.html.haml b/app/views/home/_stats.html.haml index 53ffd2492..ee334b86d 100644 --- a/app/views/home/_stats.html.haml +++ b/app/views/home/_stats.html.haml @@ -2,7 +2,7 @@ %p.stats = t('.message_html', { member: link_to(t('.member_linktext', count: Member.confirmed.size.to_i), members_path), number_crops: link_to(t('.number_crops_linktext', count: Crop.count.to_i), crops_path), - number_plantings: link_to(t('.number_plantings_linktext', count: Planting.count.to_i), plantings_path), + number_plantings: link_to(t('.number_plantings_linktext', count: Planting.count.to_i), plantings_path), number_gardens: link_to(t('.number_gardens_linktext', count: Garden.count.to_i), gardens_path) }) diff --git a/app/views/layouts/_header.html.haml b/app/views/layouts/_header.html.haml index ddc9c6af2..803d542f5 100644 --- a/app/views/layouts/_header.html.haml +++ b/app/views/layouts/_header.html.haml @@ -4,23 +4,31 @@ .container .navbar-header %button.navbar-toggle(data-target="#navbar-collapse" data-toggle="collapse") - %span.sr-only Toggle Navigation + %span.sr-only= t('.toggle_navigation') %span.icon-bar %span.icon-bar %span.icon-bar - %a.navbar-brand(href=root_path) + %a.navbar-brand.hidden-xs(href=root_path) = image_tag("growstuff-brand.png", :size => "200x50", :alt => ENV['GROWSTUFF_SITE_NAME']) - = form_tag crops_search_path, :method => :get, :id => 'navbar-search', :class => 'navbar-form pull-right' do - .input + %a.navbar-brand.visible-xs(href=root_path) + = image_tag("growstuff-apple-touch-icon-precomposed.png", :size => "50x50", :class=>"img-responsive", :alt => ENV['GROWSTUFF_SITE_NAME']) + + .form.navbar-form.pull-left + = form_tag crops_search_path, :method => :get, :id => 'navbar-search' do = label_tag :term, "Search crop database:", :class => 'sr-only' - = text_field_tag 'term', nil, :class => 'search-query input-medium form-control', :placeholder => 'Search crops' - = submit_tag "Search", :class => 'btn sr-only' + .input + .input-group + = text_field_tag 'term', nil, :class => 'search-query input-medium form-control', :placeholder => 'Search crops' + .input-group-btn + %button.btn.btn-default{:style => "height: 34px;"} + = submit_tag "Search", :class => 'btn sr-only' + %span.glyphicon.glyphicon-search .navbar-collapse.collapse#navbar-collapse - %ul.nav.navbar-nav.pull-right + %ul.nav.navbar-nav.navbar-right %li.dropdown< %a.dropdown-toggle{'data-toggle' => 'dropdown', :href => crops_path} - Crops + = t('.crops') %b.caret %ul.dropdown-menu %li= link_to t('.browse_crops'), crops_path @@ -29,7 +37,7 @@ %li= link_to t('.harvests'), harvests_path %li.dropdown< %a.dropdown-toggle{'data-toggle' => 'dropdown', :href => members_path} - Community + = t('.community') %b.caret %ul.dropdown-menu %li= link_to t('.community_map'), places_path @@ -44,7 +52,7 @@ - if current_member.notifications.unread_count > 0 = t('.your_stuff', unread_count: current_member.notifications.unread_count) - else - #{current_member.login_name} + = t('.current_memberlogin_name', :current_memberlogin_name => (current_member.login_name)) %b.caret %ul.dropdown-menu %li= link_to t('.profile'), member_path(current_member) @@ -67,11 +75,11 @@ %li= link_to t('.admin'), admin_path - %li= link_to "Sign out", destroy_member_session_path, :method => :delete + %li= link_to t('.sign_out'), destroy_member_session_path, :method => :delete - else - %li= link_to 'Sign in', new_member_session_path, :id => 'navbar-signin' - %li= link_to 'Sign up', new_member_registration_path, :id => 'navbar-signup' + %li= link_to t('.sign_in'), new_member_session_path, :id => 'navbar-signin' + %li= link_to t('.sign_up'), new_member_registration_path, :id => 'navbar-signup' - # anchor tag for accessibility link to skip the navigation menu diff --git a/app/views/members/_contact.html.haml b/app/views/members/_contact.html.haml index e5d24327b..714bf5a92 100644 --- a/app/views/members/_contact.html.haml +++ b/app/views/members/_contact.html.haml @@ -1,4 +1,4 @@ -- if twitter_auth || flickr_auth || member.show_email +- if twitter_auth || flickr_auth || facebook_auth || member.show_email %h4 Contact - if twitter_auth @@ -11,6 +11,11 @@ = image_tag "flickr_32.png", :size => "32x32", :alt => 'Flickr logo' =link_to flickr_auth.name, "http://flickr.com/photos/#{flickr_auth.uid}" + - if facebook_auth + %p + = image_tag "facebook_32.png", :size => "32x32", :alt => 'Facebook logo' + =link_to facebook_auth.name, "http://facebook.com/profile/#{facebook_auth.uid}" + - if member.show_email %p Email: diff --git a/app/views/members/_gardens.html.haml b/app/views/members/_gardens.html.haml index cfb5e22cb..6dfeaa1c8 100644 --- a/app/views/members/_gardens.html.haml +++ b/app/views/members/_gardens.html.haml @@ -7,7 +7,7 @@ - first_garden = false = link_to g.name, "#garden#{g.id}", 'data-toggle' => 'tab' - if current_member == member - %li.navbar-right + %li.navbar-right = link_to new_garden_path, class: 'btn' do Add New Garden .tab-content{style: "padding-top: 1em"} @@ -25,8 +25,8 @@ %p No description available yet. - if can? :edit, g - %p - Why not + %p + Why not = link_to 'tell us more.', edit_garden_path(g) diff --git a/app/views/members/finish_signup.haml b/app/views/members/finish_signup.haml new file mode 100644 index 000000000..5d88cf43b --- /dev/null +++ b/app/views/members/finish_signup.haml @@ -0,0 +1,40 @@ +- content_for :title, "Join Growstuff" + +%p Sign up for a Growstuff account to track your veggie garden and connect with other local growers. + += form_for(current_member, :as => 'member', :url => finish_signup_path(current_member), :html => { role: 'form'}) do |f| + - if @show_errors && current_member.errors.any? + %div.alert.alert-danger + - current_member.errors.full_messages.each do |msg| + = msg + %br + + .form-group + = f.label :login_name + .controls + = f.text_field :login_name, :autofocus => true, class: 'form-control input-lg' + %p.help-block Choose a login name + + .form-group + = f.label :email + .controls + = f.text_field :email, class: 'form-control input-lg', placeholder: 'Example: email@me.com' + %p.help-block Please confirm your email address. + + .form-group + .col-md-offset-2.col-md-8.checkbox + %label + = f.check_box :tos_agreement + I agree to the + = succeed "." do + = link_to 'Terms of Service', "#{root_url}/policy/tos" + .form-group + .col-md-offset-2.col-md-8.checkbox + %label + = f.check_box :newsletter, :checked => true + Subscribe to the #{ENV['GROWSTUFF_SITE_NAME']} newsletter + .help-inline + = render :partial => 'devise/registrations/newsletter_blurb' + + %div.actions + = f.submit 'Continue', :class => 'btn btn-primary' \ No newline at end of file diff --git a/app/views/members/show.html.haml b/app/views/members/show.html.haml index c40482641..0e5a93c93 100644 --- a/app/views/members/show.html.haml +++ b/app/views/members/show.html.haml @@ -1,9 +1,9 @@ - content_for :title, @member.login_name - content_for :subtitle, @member.location - content_for :opengraph do - = tag("meta", property: "og:image", content: avatar_uri(@member, 200)) - = tag("meta", property: "og:image:user_generated", content: "true") - = tag("meta", property: "og:title", content: @member.login_name) + = tag("meta", property: "og:image", content: avatar_uri(@member, 200)) + = tag("meta", property: "og:image:user_generated", content: "true") + = tag("meta", property: "og:title", content: @member.login_name) = tag("meta", property: "og:type", content: "profile") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) @@ -37,4 +37,4 @@ = render :partial => "avatar", :locals => { :member => @member } = render :partial => "account", :locals => { :member => @member } = render :partial => "stats", :locals => { :member => @member } - = render :partial => "contact", :locals => { :member => @member, :twitter_auth => @twitter_auth, :flickr_auth => @flickr_auth } + = render :partial => "contact", :locals => { :member => @member, :twitter_auth => @twitter_auth, :flickr_auth => @flickr_auth, :facebook_auth => @facebook_auth } diff --git a/app/views/members/view_followers.html.haml b/app/views/members/view_followers.html.haml index 6600c737c..aeea18b8c 100644 --- a/app/views/members/view_followers.html.haml +++ b/app/views/members/view_followers.html.haml @@ -7,10 +7,10 @@ .row .col-md-12 - @followers.each do |f| - .col-md-4.three-across - .thumbnail + .col-md-4.three-across + .thumbnail = render :partial => "members/thumbnail", :locals => { :member => f } - + %div.pagination = page_entries_info @followers = will_paginate @followers diff --git a/app/views/members/view_follows.html.haml b/app/views/members/view_follows.html.haml index cd0c522de..a5f293737 100644 --- a/app/views/members/view_follows.html.haml +++ b/app/views/members/view_follows.html.haml @@ -7,8 +7,8 @@ .row .col-md-12 - @follows.each do |f| - .col-md-4.three-across - .thumbnail + .col-md-4.three-across + .thumbnail = render :partial => "members/thumbnail", :locals => { :member => f } %div.pagination diff --git a/app/views/notifier/new_crop_request.html.haml b/app/views/notifier/new_crop_request.html.haml index 0e8c65ab7..3c2959f10 100644 --- a/app/views/notifier/new_crop_request.html.haml +++ b/app/views/notifier/new_crop_request.html.haml @@ -2,7 +2,7 @@ %p Hello #{@member.login_name}, -%p +%p #{@request.requester.login_name} has requested a new crop on #{site_name}. %ul diff --git a/app/views/places/show.html.haml b/app/views/places/show.html.haml index d37da8433..25564cf9c 100644 --- a/app/views/places/show.html.haml +++ b/app/views/places/show.html.haml @@ -1,6 +1,6 @@ -content_for :title, "#{ENV['GROWSTUFF_SITE_NAME']} community near #{@place}" - content_for :opengraph do - = tag("meta", property: "og:title", content: "#{ENV['GROWSTUFF_SITE_NAME']} community near #{@place}") + = tag("meta", property: "og:title", content: "#{ENV['GROWSTUFF_SITE_NAME']} community near #{@place}") = tag("meta", property: "og:type", content: "website") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) @@ -34,7 +34,7 @@ #plantings %h3= "Recent plantings near #{@place}" - + - plantings = [] - @nearby_members.first(10).each do |member| diff --git a/app/views/plant_parts/show.html.haml b/app/views/plant_parts/show.html.haml index c24cf6ea0..c2427059c 100644 --- a/app/views/plant_parts/show.html.haml +++ b/app/views/plant_parts/show.html.haml @@ -1,6 +1,6 @@ - content_for :title, @plant_part.name.titlecase - content_for :opengraph do - = tag("meta", property: "og:title", content: @plant_part.name.titlecase) + = tag("meta", property: "og:title", content: @plant_part.name.titlecase) = tag("meta", property: "og:type", content: "website") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) diff --git a/app/views/plantings/_thumbnail.html.haml b/app/views/plantings/_thumbnail.html.haml index 3ae1ee084..1afdf0b49 100644 --- a/app/views/plantings/_thumbnail.html.haml +++ b/app/views/plantings/_thumbnail.html.haml @@ -13,7 +13,7 @@ %dd= link_to planting.garden.name, planting.garden %dt Planted on: %dd= planting.planted_at - %dt Quantity: + %dt Quantity: %dd= "#{display_planting_quantity(planting)}" %dt Finished on: %dd= "#{display_finished(planting)}" diff --git a/app/views/plantings/index.html.haml b/app/views/plantings/index.html.haml index 14c319a5b..fca0d15b9 100644 --- a/app/views/plantings/index.html.haml +++ b/app/views/plantings/index.html.haml @@ -1,4 +1,4 @@ -- content_for :title, @owner ? t('.title.owner_plantings', owner: @owner) : @crop ? t('.title.crop_plantings', crop: @crop.name) : t('.title.default') +- content_for :title, @owner ? t('.title.owner_plantings', owner: @owner) : @crop ? t('.title.crop_plantings', crop: @crop.name) : t('.title.default') - if @owner = link_to "View #{@owner}'s profile >>", member_path(@owner) diff --git a/app/views/plantings/show.html.haml b/app/views/plantings/show.html.haml index 6ad55ff15..20b850978 100644 --- a/app/views/plantings/show.html.haml +++ b/app/views/plantings/show.html.haml @@ -1,10 +1,10 @@ =content_for :title, "#{@planting.crop} in #{@planting.location}" - content_for :opengraph do - @planting.crop.photos.each do |photo| - = tag("meta", property: "og:image", content: photo.fullsize_url) - = tag("meta", property: "og:title", content: "#{@planting.crop} in #{@planting.location}") + = tag("meta", property: "og:image", content: photo.fullsize_url) + = tag("meta", property: "og:title", content: "#{@planting.crop} in #{@planting.location}") - if @planting.description - = tag("meta", property: "og:description", content: @planting.description) + = tag("meta", property: "og:description", content: @planting.description) = tag("meta", property: "og:type", content: "website") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) @@ -31,11 +31,11 @@ %dt Quantity: %dd ="#{display_planting_quantity(@planting)}" - + - if !@planting.planted_from.blank? %dt Planted from: %dd= "#{display_planted_from(@planting)}" - + %dt Sun or shade? %dd - sunniness = @planting.sunniness.blank? ? "not specified" : @planting.sunniness diff --git a/app/views/posts/show.html.haml b/app/views/posts/show.html.haml index 6e0ee6161..a12eff8fa 100644 --- a/app/views/posts/show.html.haml +++ b/app/views/posts/show.html.haml @@ -1,8 +1,8 @@ = content_for :title, @post.subject - content_for :opengraph do - = tag("meta", property: "og:image", content: avatar_uri(@post.author, 200)) - = tag("meta", property: "og:description", content: "#{strip_tags(@post.body).split(' ')[0..20].join(' ')}...") - = tag("meta", property: "og:title", content: @post.subject) + = tag("meta", property: "og:image", content: avatar_uri(@post.author, 200)) + = tag("meta", property: "og:description", content: "#{strip_tags(@post.body).split(' ')[0..20].join(' ')}...") + = tag("meta", property: "og:title", content: @post.subject) = tag("meta", property: "og:type", content: "article") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) @@ -18,7 +18,7 @@ = link_to 'hundreds of different crops', crops_url and a community from all around the world. - = render :partial => "shared/signin_signup", + = render :partial => "shared/signin_signup", :locals => { :to => "or to start using #{ENV["GROWSTUFF_SITE_NAME"]} to track what you're planting and harvesting" } = render :partial => "single", :locals => { :post => @post, :subject => false, :hide_comments => true } diff --git a/app/views/scientific_names/_form.html.haml b/app/views/scientific_names/_form.html.haml index c29d371bf..a908c3e65 100644 --- a/app/views/scientific_names/_form.html.haml +++ b/app/views/scientific_names/_form.html.haml @@ -17,9 +17,9 @@ .col-md-8 = collection_select(:scientific_name, :crop_id, Crop.all, :id, :name, { :selected => @scientific_name.crop_id || @crop.id }, :class => 'form-control') .form-group - = f.label :scientific_name, :class => 'control-label col-md-2' + = f.label :name, :class => 'control-label col-md-2' .col-md-8 - = f.text_field :scientific_name, :class => 'form-control' + = f.text_field :name, :class => 'form-control' .form-group .form-actions.col-md-offset-2.col-md-8 = f.submit 'Save', :class => 'btn btn-primary' diff --git a/app/views/scientific_names/index.html.haml b/app/views/scientific_names/index.html.haml index e0752b156..235760960 100644 --- a/app/views/scientific_names/index.html.haml +++ b/app/views/scientific_names/index.html.haml @@ -12,7 +12,7 @@ - @scientific_names.each do |scientific_name| %tr - %td= link_to scientific_name.scientific_name, scientific_name + %td= link_to scientific_name.name, scientific_name %td= scientific_name.crop_id %td= link_to 'Show', scientific_name %td diff --git a/app/views/scientific_names/show.html.haml b/app/views/scientific_names/show.html.haml index b5d9c332f..4ae435def 100644 --- a/app/views/scientific_names/show.html.haml +++ b/app/views/scientific_names/show.html.haml @@ -2,7 +2,7 @@ - @scientific_name.crop.photos.each do |photo| = tag("meta", property: "og:image", content: photo.fullsize_url) - = tag("meta", property: "og:title", content: @scientific_name.scientific_name) + = tag("meta", property: "og:title", content: @scientific_name.name) = tag("meta", property: "og:type", content: "website") = tag("meta", property: "og:url", content: request.original_url) = tag("meta", property: "og:site_name", content: ENV['GROWSTUFF_SITE_NAME']) @@ -13,7 +13,7 @@ %p %b Scientific name: - = @scientific_name.scientific_name + = @scientific_name.name %p %b Crop: = link_to @scientific_name.crop, @scientific_name.crop diff --git a/app/views/seeds/_thumbnail.html.haml b/app/views/seeds/_thumbnail.html.haml index 7bc5f6ad2..90743d46a 100644 --- a/app/views/seeds/_thumbnail.html.haml +++ b/app/views/seeds/_thumbnail.html.haml @@ -11,15 +11,15 @@ = link_to image_tag((seed.crop.default_photo ? seed.crop.default_photo.thumbnail_url : 'placeholder_150.png'), :alt => seed.crop.name, :class => 'img'), seed.crop .col-md-8 %dl.dl-horizontal - %dt Crop : + %dt Crop : %dd= link_to seed.crop.name, seed.crop - %dt Plant before : + %dt Plant before : %dd= seed.plant_before - %dt Quantity : + %dt Quantity : %dd= seed.quantity - %dt Will trade to : + %dt Will trade to : %dd= seed.tradable_to - %dt From location : + %dt From location : %dd= seed.owner.location %dt Owner : %dd= link_to seed.owner.login_name, seed.owner diff --git a/app/views/seeds/show.html.haml b/app/views/seeds/show.html.haml index e4e55f68e..adbdc0159 100644 --- a/app/views/seeds/show.html.haml +++ b/app/views/seeds/show.html.haml @@ -69,5 +69,9 @@ - if @seed.owner.location %p %small - View other seeds, members and more near - = link_to @seed.owner.location, place_path(@seed.owner.location, anchor: "seeds") \ No newline at end of file + View other seeds, members to trade with and more near + = link_to @seed.owner.location, place_path(@seed.owner.location, anchor: "seeds") + %p + %small + Or + = link_to "purchase seeds via Ebay", "http://rover.ebay.com/rover/1/705-53470-19255-0/1?icep_ff3=9&pub=5575213277&toolid=10001&campid=5337940151&customid=&icep_uq=#{URI.escape @seed.crop.name}&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=181003&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229515&kwid=902099&mtid=824&kw=lg", target: "_blank", rel: "noopener noreferrer" \ No newline at end of file diff --git a/app/views/shop/index.html.haml b/app/views/shop/index.html.haml index da7008d69..1c8da326a 100644 --- a/app/views/shop/index.html.haml +++ b/app/views/shop/index.html.haml @@ -81,5 +81,3 @@ or =link_to "sign up", new_member_registration_path to purchase. - - diff --git a/app/views/support/index.html.haml b/app/views/support/index.html.haml new file mode 100644 index 000000000..e69de29bb diff --git a/bin/rails b/bin/rails index 728cd85aa..5191e6927 100755 --- a/bin/rails +++ b/bin/rails @@ -1,4 +1,4 @@ #!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) +APP_PATH = File.expand_path('../../config/application', __FILE__) require_relative '../config/boot' require 'rails/commands' diff --git a/config.rb b/config.rb index 5cd5b6cc6..f816551c1 100644 --- a/config.rb +++ b/config.rb @@ -1,5 +1,5 @@ # Require any additional compass plugins here. - +# rubocop:disable Lint/UselessAssignment # Set this to the root of your project when deployed: http_path = "/" css_dir = "app/assets/stylesheets" @@ -16,10 +16,8 @@ images_dir = "app/assets/images" # To disable debugging comments that display the original location of your selectors. Uncomment: # line_comments = false - # If you prefer the indented syntax, you might want to regenerate this # project again passing --syntax sass, or you can uncomment this: preferred_syntax = :sass # and then run: # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass - diff --git a/config.ru b/config.ru index f2d9c08c2..d30ee4f18 100644 --- a/config.ru +++ b/config.ru @@ -1,4 +1,4 @@ # This file is used by Rack-based servers to start the application. -require ::File.expand_path('../config/environment', __FILE__) +require ::File.expand_path('../config/environment', __FILE__) run Growstuff::Application diff --git a/config/application.rb b/config/application.rb index cbc72e4fa..5280dce7e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -82,7 +82,6 @@ module Growstuff g.javascripts false end - # Growstuff-specific configuration variables config.currency = 'AUD' config.bot_email = "noreply@growstuff.org" @@ -90,7 +89,7 @@ module Growstuff config.user_agent_email = "info@growstuff.org" Gibbon::API.api_key = ENV['GROWSTUFF_MAILCHIMP_APIKEY'] || 'notarealkey' - # API key can't be blank or tests fail + # API key can't be blank or tests fail Gibbon::API.timeout = 10 Gibbon::API.throws_exceptions = false config.newsletter_list_id = ENV['GROWSTUFF_MAILCHIMP_NEWSLETTER_ID'] @@ -108,4 +107,4 @@ module Growstuff config.active_record.raise_in_transactional_callbacks = true end -end \ No newline at end of file +end diff --git a/config/application.yml.example b/config/application.yml.example index 309ac509a..4aa23e439 100644 --- a/config/application.yml.example +++ b/config/application.yml.example @@ -62,6 +62,10 @@ GROWSTUFF_PAYPAL_USERNAME: "dummy" GROWSTUFF_PAYPAL_PASSWORD: "dummy" GROWSTUFF_PAYPAL_SIGNATURE: "dummy" +# https://developers.facebook.com/ +GROWSTUFF_FACEBOOK_KEY: "" +GROWSTUFF_FACEBOOK_SECRET: "" + # Elasticsearch is used for flexible search and it requires another component # to be installed. To make it easy for people who don't need to test this feature # it's been turned off for test and development environment as a default. diff --git a/config/boot.rb b/config/boot.rb index 4489e5868..f2830ae31 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -3,4 +3,4 @@ require 'rubygems' # Set up gems listed in the Gemfile. ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) +require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) diff --git a/config/compass.rb b/config/compass.rb index 2b22d5d7c..306cdd02c 100644 --- a/config/compass.rb +++ b/config/compass.rb @@ -1,2 +1,3 @@ # Require any additional compass plugins here. +# rubocop:disable Lint/UselessAssignment project_type = :rails diff --git a/config/database.yml b/config/database.yml index eb75b3791..72f6533ae 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,16 +1,10 @@ development: adapter: postgresql database: growstuff_dev - host: localhost - user: postgres - password: postgres test: adapter: postgresql database: growstuff_test - host: localhost - user: postgres - password: postgres production: adapter: postgresql diff --git a/config/environments/development.rb b/config/environments/development.rb index 700771c10..2ed9b8f0a 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -31,7 +31,7 @@ Growstuff::Application.configure do # Expands the lines which load the assets config.assets.debug = true - # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # Asset digests allow you to set far-future HTTP expiration dates on all assets, # yet still be able to expire them through the digest params. config.assets.digest = true @@ -48,11 +48,11 @@ Growstuff::Application.configure do config.action_mailer.delivery_method = :letter_opener config.action_mailer.smtp_settings = { - port: '587', - address: 'smtp.mandrillapp.com', - user_name: ENV['GROWSTUFF_MANDRILL_USERNAME'], - password: ENV['GROWSTUFF_MANDRILL_APIKEY'], - authentication: :login + port: '587', + address: 'smtp.mandrillapp.com', + user_name: ENV['GROWSTUFF_MANDRILL_USERNAME'], + password: ENV['GROWSTUFF_MANDRILL_APIKEY'], + authentication: :login } config.host = 'localhost:8080' @@ -61,6 +61,7 @@ Growstuff::Application.configure do # this config variable cannot be put in application.yml as it is needed # by the assets pipeline, which doesn't have access to ENV. config.mapbox_map_id = 'growstuff.i3n2il6a' + config.mapbox_access_token = 'pk.eyJ1IjoiZ3Jvd3N0dWZmIiwiYSI6IkdxMkx4alUifQ.n0igaBsw97s14zMa0lwKCA' config.after_initialize do ActiveMerchant::Billing::Base.mode = :test @@ -74,4 +75,6 @@ Growstuff::Application.configure do end config.action_controller.action_on_unpermitted_parameters = :raise + + config.active_job.queue_adapter = :sidekiq end diff --git a/config/environments/production.rb b/config/environments/production.rb index 618eb8344..c931c058e 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -70,12 +70,12 @@ Growstuff::Application.configure do config.action_mailer.default_url_options = { host: 'growstuff.org' } ActionMailer::Base.smtp_settings = { - port: ENV['SPARKPOST_SMTP_PORT'], - address: ENV['SPARKPOST_SMTP_HOST'], - user_name: ENV['SPARKPOST_SMTP_USERNAME'], - password: ENV['SPARKPOST_SMTP_PASSWORD'], - authentication: :login, - enable_starttls_auto: true + port: ENV['SPARKPOST_SMTP_PORT'], + address: ENV['SPARKPOST_SMTP_HOST'], + user_name: ENV['SPARKPOST_SMTP_USERNAME'], + password: ENV['SPARKPOST_SMTP_PASSWORD'], + authentication: :login, + enable_starttls_auto: true } ActionMailer::Base.delivery_method = :smtp @@ -89,6 +89,7 @@ Growstuff::Application.configure do # this config variable cannot be put in application.yml as it is needed # by the assets pipeline, which doesn't have access to ENV. config.mapbox_map_id = 'growstuff.i3n2c4ie' + config.mapbox_access_token = 'pk.eyJ1IjoiZ3Jvd3N0dWZmIiwiYSI6IkdxMkx4alUifQ.n0igaBsw97s14zMa0lwKCA' config.after_initialize do ActiveMerchant::Billing::Base.mode = :production @@ -101,4 +102,5 @@ Growstuff::Application.configure do ::EXPRESS_GATEWAY = ActiveMerchant::Billing::PaypalExpressGateway.new(paypal_options) end + config.active_job.queue_adapter = :sidekiq end diff --git a/config/environments/staging.rb b/config/environments/staging.rb index 8f2352ff4..a9e242381 100644 --- a/config/environments/staging.rb +++ b/config/environments/staging.rb @@ -2,7 +2,7 @@ Growstuff::Application.configure do # Settings specified here will take precedence over those in config/application.rb config.action_controller.action_on_unpermitted_parameters = :raise - + # Eager load code on boot. This eager loads most of Rails and # your application in memory, allowing both threaded web servers # and those relying on copy on write to perform better. @@ -72,12 +72,12 @@ Growstuff::Application.configure do config.action_mailer.default_url_options = { host: 'staging.growstuff.org' } ActionMailer::Base.smtp_settings = { - port: ENV['SPARKPOST_SMTP_PORT'], - address: ENV['SPARKPOST_SMTP_HOST'], - user_name: ENV['SPARKPOST_SMTP_USERNAME'], - password: ENV['SPARKPOST_SMTP_PASSWORD'], - authentication: :login, - enable_starttls_auto: true + port: ENV['SPARKPOST_SMTP_PORT'], + address: ENV['SPARKPOST_SMTP_HOST'], + user_name: ENV['SPARKPOST_SMTP_USERNAME'], + password: ENV['SPARKPOST_SMTP_PASSWORD'], + authentication: :login, + enable_starttls_auto: true } ActionMailer::Base.delivery_method = :smtp @@ -87,6 +87,7 @@ Growstuff::Application.configure do # this config variable cannot be put in application.yml as it is needed # by the assets pipeline, which doesn't have access to ENV. config.mapbox_map_id = 'growstuff.i3n2hao7' + config.mapbox_access_token = 'pk.eyJ1IjoiZ3Jvd3N0dWZmIiwiYSI6IkdxMkx4alUifQ.n0igaBsw97s14zMa0lwKCA' config.after_initialize do ActiveMerchant::Billing::Base.mode = :test @@ -99,4 +100,5 @@ Growstuff::Application.configure do ::EXPRESS_GATEWAY = ActiveMerchant::Billing::PaypalExpressGateway.new(paypal_options) end + config.active_job.queue_adapter = :sidekiq end diff --git a/config/environments/test.rb b/config/environments/test.rb index ed5f4c69f..dd3a3816c 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -6,6 +6,10 @@ Growstuff::Application.configure do # preloads Rails for running tests, you may have to set it to true. config.eager_load = false + # Do not compile assets on-demand. On-demand compilation slows down the test + # suite and causes random test failures. + config.assets.compile = false + # The test environment is used exclusively to run your application's # test suite. You never need to work with it otherwise. Remember that # your test database is "scratch space" for the test suite and is wiped @@ -26,7 +30,7 @@ Growstuff::Application.configure do config.action_dispatch.show_exceptions = true # Disable request forgery protection in test environment - config.action_controller.allow_forgery_protection = false + config.action_controller.allow_forgery_protection = false # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the @@ -38,7 +42,7 @@ Growstuff::Application.configure do # Raises error for missing translations # config.action_view.raise_on_missing_translations = true - + # Growstuff config config.action_mailer.default_url_options = { host: 'localhost:8080' } @@ -54,7 +58,6 @@ Growstuff::Application.configure do ::STANDARD_GATEWAY = ActiveMerchant::Billing::PaypalBogusGateway.new ::EXPRESS_GATEWAY = ActiveMerchant::Billing::PaypalBogusGateway.new end - end Geocoder.configure(lookup: :test) @@ -101,8 +104,25 @@ Geocoder::Lookup::Test.add_stub( ) # Unknown location -Geocoder::Lookup::Test.add_stub( "Tatooine", []) +Geocoder::Lookup::Test.add_stub("Tatooine", []) Capybara.configure do |config| config.always_include_port = true end + +OmniAuth.config.test_mode = true +# Fake the omniauth +OmniAuth.config.mock_auth[:facebook] = OmniAuth::AuthHash.new({ + provider: 'facebook', + uid: '123545', + info: { + name: "John Testerson", + nickname: 'JohnnyT', + email: 'example.oauth.facebook@example.com', + image: 'http://findicons.com/files/icons/1072/face_avatars/300/i04.png' + }, + credentials: { + token: "token", + secret: "donttell" + } + }) diff --git a/config/initializers/comfortable_mexican_sofa.rb b/config/initializers/comfortable_mexican_sofa.rb index fc5025933..3206e14d9 100644 --- a/config/initializers/comfortable_mexican_sofa.rb +++ b/config/initializers/comfortable_mexican_sofa.rb @@ -9,7 +9,7 @@ ComfortableMexicanSofa.configure do |config| # Module responsible for authentication. You can replace it with your own. # It simply needs to have #authenticate method. See http_auth.rb for reference. - config.admin_auth = 'CmsDeviseAuth' + config.admin_auth = 'CmsDeviseAuth' # Module responsible for authorization on admin side. It should have #authorize # method that returns true or false based on params and loaded instance @@ -91,7 +91,6 @@ ComfortableMexicanSofa.configure do |config| # Reveal partials that can be overwritten in the admin area. # Default is false. # config.reveal_cms_partials = false - end module CmsDeviseAuth diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index a11c9b5ca..ad33e335d 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -1,3 +1,4 @@ +# rubocop:disable Metrics/LineLength # Use this hook to configure devise mailer, warden hooks and so forth. # Many of these configuration options can be set straight in your model. Devise.setup do |config| @@ -25,7 +26,7 @@ Devise.setup do |config| # session. If you need permissions, you should implement that in a before filter. # You can also supply a hash where the value is a boolean determining whether # or not authentication should be aborted when the value is not present. - config.authentication_keys = [ :login ] + config.authentication_keys = [:login] # Configure parameters from the request object used for authentication. Each entry # given should be a request method and it will automatically be passed to the @@ -37,12 +38,12 @@ Devise.setup do |config| # Configure which authentication keys should be case-insensitive. # These keys will be downcased upon creating or modifying a user and when used # to authenticate or find a user. Default is :email. - config.case_insensitive_keys = [ :email ] + config.case_insensitive_keys = [:email] # Configure which authentication keys should have whitespace stripped. # These keys will have whitespace before and after removed upon creating or # modifying a user and when used to authenticate or find a user. Default is :email. - config.strip_whitespace_keys = [ :email, :login_name ] + config.strip_whitespace_keys = [:email, :login_name] # Tell if authentication through request.params is enabled. True by default. # It can be set to an array that will enable params authentication only for the @@ -101,7 +102,7 @@ Devise.setup do |config| config.reconfirmable = true # Defines which key will be used when confirming an account - config.confirmation_keys = [ :login ] + config.confirmation_keys = [:login] # ==> Configuration for :rememberable # The time the user will be remembered without asking for credentials again. @@ -157,7 +158,7 @@ Devise.setup do |config| # ==> Configuration for :recoverable # # Defines which key will be used when recovering the password for an account - config.reset_password_keys = [ :login ] + config.reset_password_keys = [:login] # Time interval you can reset your password with a reset password key. # Don't put a too small interval or your users won't have the time to @@ -231,4 +232,7 @@ Devise.setup do |config| # When using omniauth, Devise cannot automatically set Omniauth path, # so you need to do it manually. For the users scope, it would be: # config.omniauth_path_prefix = "/my_engine/users/auth" + + # Later we may wish to ask for user_photos,user_location, however this means we need to be reviewed by facebook + config.omniauth :facebook, ENV['GROWSTUFF_FACEBOOK_KEY'], ENV['GROWSTUFF_FACEBOOK_SECRET'], scope: 'email,public_profile', display: 'page', info_fields: 'email,name,first_name,last_name,id' end diff --git a/config/initializers/geocoder.rb b/config/initializers/geocoder.rb index 9c52ced91..67ce37799 100644 --- a/config/initializers/geocoder.rb +++ b/config/initializers/geocoder.rb @@ -13,4 +13,4 @@ Geocoder.configure( # Reported as https://github.com/alexreisner/geocoder/issues/509 if Geocoder.config.lookup != :test Geocoder.configure(lookup: :nominatim) -end \ No newline at end of file +end diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb new file mode 100644 index 000000000..4dab98d12 --- /dev/null +++ b/config/initializers/sidekiq.rb @@ -0,0 +1,9 @@ +# config/initializers/sidekiq.rb + +Sidekiq.configure_server do |config| + config.redis = { url: 'redis://localhost:6379/0', namespace: "app3_sidekiq_#{Rails.env}" } +end + +Sidekiq.configure_client do |config| + config.redis = { url: 'redis://localhost:6379/0', namespace: "app3_sidekiq_#{Rails.env}" } +end diff --git a/config/locales/README.md b/config/locales/README.md new file mode 100644 index 000000000..5ce22aa89 --- /dev/null +++ b/config/locales/README.md @@ -0,0 +1,15 @@ +i18n Documentation +=================== + +i18n Automation +------------- +Automate string extraction from haml into locale files using [haml-i18n-extractor](https://github.com/shaiguitar/haml-i18n-extractor) + +```rake i18n:extractor[relative_path_to_view]``` + + +####Example +```rake i18n:extractor[app/views/layouts/_header.html.haml]``` + +* Creates app/views/layouts/_header.html.i18n-extractor.haml with the expected haml changes to localize app/views/layouts/_header.html.haml. After reviewing the changes, copy app/views/layouts/_header.html.i18n-extractor.haml to app/views/layouts/_header.html.haml +* Adds new keys to locales/en.yml diff --git a/config/locales/en.yml b/config/locales/en.yml index b146f42b1..1acb4e35c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,205 +1,198 @@ -# Sample localization file for English. Add more files in this directory for other locales. -# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. - +--- en: - forms: - optional: "(Optional)" - unauthorized: - read: - notification: "You must be signed in to view notifications." - create: - planting: "Please sign in or sign up to plant something." - post: "Please sign in or sign up to post." - seed: "Please sign in or sign up to add seeds." - notification: "Please sign in to send a message." - all: "Please sign in or sign up to create a %{subject}." - manage: - all: "Not authorized to %{action} %{subject}." - - layouts: - header: - skip: "Skip navigation menu" - browse_crops: &browse_crops "Browse Crops" - seeds: "Seeds" - plantings: "Plantings" - harvests: "Harvests" - community_map: "Community Map" - browse_members: "Browse Members" - posts: "Posts" - forums: &forums "Forums" - support_growstuff: "Support Growstuff" - profile: "Profile" - gardens: "Gardens" - account: "Account" - inbox_unread: "Inbox (%{unread_count})" - inbox: "Inbox" - crop_wrangling: "Crop Wrangling" - admin: "Admin" - your_stuff: "Your Stuff (%{unread_count})" - - crops: - index: - title: *browse_crops - subtitle: "%{crops_size} total" - - gardens: - form: - location_helper: "If you have a location set in your profile, it will be used when - you create a new garden." - - seeds: - index: - title: - default: "Everyone's seeds" - crop_seeds: "Everyone's %{crop} seeds" - owner_seeds: "%{owner} seeds" - form: - trade_help: "Are you interested in trading or swapping seeds with other - %{site_name} members? If you - list your seeds as available for trade, other members can - contact you to request seeds. You can list any conditions or - other information in the description, above." - - plantings: - index: - title: - default: "Everyone's plantings" - crop_plantings: "Everyone's %{crop} plantings" - owner_plantings: "%{owner} plantings" - form: - finish_helper: "A planting is finished when you've harvested all of the crop, or - it dies, or it's otherwise no longer growing in your garden." - - photos: - show: - thing_by: "A %{thing} by %{owner}" - - harvests: - index: - title: - default: "Everyone's harvests" - crop_harvests: "Everyone's %{crop} harvests" - owner_harvests: "%{owner} harvests" - - places: - index: - title: "%{site_name} Community Map" - - members: - index: - title: "%{site_name} members" - - posts: - index: - title: - default: "Everyone's posts" - author_posts: "%{author} posts" - - shop: - index: - title: "Shop" - - forums: - index: - title: *forums - - home: - blurb: - intro: "%{site_name} is a community of food gardeners. We're building an open source platform to help you learn about growing food, track what you plant and harvest, and swap seeds and produce with other gardeners near you." - perks: "Join now for your free garden journal, seed sharing, forums, and more." - sign_up: "Sign up" - already_html: "Or %{sign_in} if you already have an account" - sign_in_linktext: "sign in" - - crops: - our_crops: "Some of our crops" - recently_planted: "Recently planted" - recently_added: "Recently added crops" - view_all: "View all crops" - - discuss: - discussion: "Discussion" - forums: "Forums" - view_all: "View all posts" - - members: - title: "Some of our members" - view_all: "View all members" - - open: - open_source_title: "Open Source" - open_source_body_html: "%{site_name} is open source software, which means that we share this website's code for free with our community and the world. We believe that openness, sustainability, and social good go hand in hand. You can read more about %{why} or check out our code on %{github}." - why_linktext: "why Growstuff is open source" - github_linktext: "Github" - open_data_title: "Open Data and APIs" - open_data_body_html: "We're building a database of crops, planting advice, seed sources, and other information that anyone can use for free, under a %{creative_commons_link}. You can use this data for research, to build apps, or for any purpose at all. Read more about our %{wiki_link} and %{api_docs_link}." - creative_commons_linktext: "Creative Commons license" - wiki_linktext: "open data" - api_docs_linktext: "API documentation" - get_involved_title: "Get Involved" - get_involved_body_html: "We believe in collaboration, and work closely with our members and the wider food-growing community. Our team includes volunteers from all walks of life and all skill levels. To get involved, visit %{talk_link} or find more information on the %{wiki_link}." - talk_linktext: "Growstuff Talk" - wiki_linktext: "Growstuff Wiki" - support_title: "Support Growstuff" - support_body_html: "Growstuff is independent, %{ad_free} and we have no outside investment. You can support our work by %{buy_account}." - ad_free_linktext: "ad-free" - buy_account_linktext: "buying a paid account" - - seeds: - title: "Seeds available to trade" - owner: "Owner" - crop: "Crop" - description: "Description" - trade_to: "Will trade to" - from: "From location" - unspecified: "unspecified" - details: "Details" - view_all: "View all seeds" - - stats: - message_html: "So far, %{member} have planted %{number_crops} %{number_plantings} in %{number_gardens}." - member_linktext: "%{count} members" - number_crops_linktext: "%{count} crops" - number_plantings_linktext: "%{count} times" - number_gardens_linktext: "%{count} gardens" - - index: - welcome: "Welcome to %{site_name}, %{member_name}" - plant: "Plant" - harvest: "Harvest" - add_seeds: "Add seeds" - post: "Post" - edit_profile: "Edit profile" - activerecord: models: comment: - one: "comment" - other: "comments" + one: comment + other: comments crop: - one: "crop" - other: "crops" + one: crop + other: crops follow: - one: "follow" - other: "follows" + one: follow + other: follows garden: - one: "garden" - other: "gardens" + one: garden + other: gardens harvest: - one: "harvest" - other: "harvests" + one: harvest + other: harvests member: - one: "member" - other: "members" + one: member + other: members photo: - one: "photo" - other: "photos" + one: photo + other: photos planting: - one: "planting" - other: "plantings" + one: planting + other: plantings post: - one: "post" - other: "posts" + one: post + other: posts seed: - one: "seed" - other: "seeds" + one: seed + other: seeds + crops: + index: + subtitle: "%{crops_size} total" + title: Browse Crops + forms: + optional: "(Optional)" + forums: + index: + title: Forums + gardens: + form: + location_helper: If you have a location set in your profile, it will be used when you create a new garden. + forums: + index: + title: Forums + harvests: + index: + title: + crop_harvests: Everyone's %{crop} harvests + default: Everyone's harvests + owner_harvests: "%{owner} harvests" + home: + blurb: + already_html: Or %{sign_in} if you already have an account + intro: "%{site_name} is a community of food gardeners. We're building an open + source platform to help you learn about growing food, track what you plant + and harvest, and swap seeds and produce with other gardeners near you." + perks: Join now for your free garden journal, seed sharing, forums, and more. + sign_in_linktext: sign in + sign_up: Sign up + crops: + our_crops: Some of our crops + recently_added: Recently added crops + recently_planted: Recently planted + view_all: View all crops + discuss: + discussion: Discussion + forums: Forums + view_all: View all posts + index: + add_seeds: Add seeds + edit_profile: Edit profile + harvest: Harvest + plant: Plant + post: Post + welcome: Welcome to %{site_name}, %{member_name} + members: + title: Some of our members + view_all: View all members + open: + ad_free_linktext: ad-free + api_docs_linktext: API documentation + buy_account_linktext: buying a paid account + creative_commons_linktext: Creative Commons license + get_involved_body_html: We believe in collaboration, and work closely with our + members and the wider food-growing community. Our team includes volunteers + from all walks of life and all skill levels. To get involved, visit %{talk_link} + or find more information on the %{wiki_link}. + get_involved_title: Get Involved + github_linktext: Github + open_data_body_html: We're building a database of crops, planting advice, seed + sources, and other information that anyone can use for free, under a %{creative_commons_link}. + You can use this data for research, to build apps, or for any purpose at all. Read + more about our %{wiki_link} and %{api_docs_link}. + open_data_title: Open Data and APIs + open_source_body_html: "%{site_name} is open source software, which means that + we share this website's code for free with our community and the world. We + believe that openness, sustainability, and social good go hand in hand. You + can read more about %{why} or check out our code on %{github}." + open_source_title: Open Source + support_body_html: Growstuff is independent, %{ad_free} and we have no outside + investment. You can support our work by %{buy_account}. + support_title: Support Growstuff + talk_linktext: Growstuff Talk + why_linktext: why Growstuff is open source + wiki_linktext: Growstuff Wiki + seeds: + crop: Crop + description: Description + details: Details + from: From location + owner: Owner + title: Seeds available to trade + trade_to: Will trade to + unspecified: unspecified + view_all: View all seeds + stats: + member_linktext: "%{count} members" + message_html: So far, %{member} have planted %{number_crops} %{number_plantings} + in %{number_gardens}. + number_crops_linktext: "%{count} crops" + number_gardens_linktext: "%{count} gardens" + number_plantings_linktext: "%{count} times" + layouts: + header: + account: Account + admin: Admin + browse_crops: Browse Crops + browse_members: Browse Members + community_map: Community Map + crop_wrangling: Crop Wrangling + forums: Forums + gardens: Gardens + harvests: Harvests + inbox: Inbox + inbox_unread: Inbox (%{unread_count}) + plantings: Plantings + posts: Posts + profile: Profile + seeds: Seeds + skip: Skip navigation menu + support_growstuff: Support Growstuff + your_stuff: Your Stuff (%{unread_count}) + toggle_navigation: Toggle Navigation + crops: Crops + community: Community + current_memberlogin_name: '"%{current_memberlogin_name}"' + sign_out: Sign out + sign_in: Sign in + sign_up: Sign up + members: + index: + title: "%{site_name} members" + photos: + show: + thing_by: A %{thing} by %{owner} + places: + index: + title: "%{site_name} Community Map" + plantings: + form: + finish_helper: A planting is finished when you've harvested all of the crop, or it dies, or it's otherwise no longer growing in your garden. + index: + title: + crop_plantings: Everyone's %{crop} plantings + default: Everyone's plantings + owner_plantings: "%{owner} plantings" + posts: + index: + title: + author_posts: "%{author} posts" + default: Everyone's posts + seeds: + form: + trade_help: Are you interested in trading or swapping seeds with other %{site_name} members? If you list your seeds as available for trade, other members can contact you to request seeds. You can list any conditions or other information in the description, above. + index: + title: + crop_seeds: Everyone's %{crop} seeds + default: Everyone's seeds + owner_seeds: "%{owner} seeds" + shop: + index: + title: Shop + unauthorized: + create: + all: Please sign in or sign up to create a %{subject}. + notification: Please sign in to send a message. + planting: Please sign in or sign up to plant something. + post: Please sign in or sign up to post. + seed: Please sign in or sign up to add seeds. + manage: + all: Not authorized to %{action} %{subject}. + read: + notification: You must be signed in to view notifications. diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 925a54399..2a51c32c5 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1,5 +1,5 @@ +--- ja: home: - blurb: + blurb: intro: "%{site_name}はガーデナーのコミュニティです。" - \ No newline at end of file diff --git a/config/newrelic.yml b/config/newrelic.yml index 4e1be6e68..63500e405 100644 --- a/config/newrelic.yml +++ b/config/newrelic.yml @@ -6,7 +6,7 @@ common: &default_settings # account. This key binds your Agent's data to your account in the # New Relic service. license_key: '<%= ENV["NEW_RELIC_LICENSE_KEY"] %>' - + # Agent Enabled (Rails Only) # Use this setting to force the agent to run or not run. # Default is 'auto' which means the agent will install and run only @@ -16,7 +16,7 @@ common: &default_settings # Valid values are true, false and auto. # # agent_enabled: auto - + # Application Name Set this to be the name of your application as # you'd like it show up in New Relic. The service will then auto-map # instances of your application into an "application" on your @@ -31,12 +31,12 @@ common: &default_settings # app_name: # - Ajax Service # - All Services - # + # app_name: <%= ENV["NEW_RELIC_APP_NAME"] %> - # When "true", the agent collects performance data about your - # application and reports this data to the New Relic service at - # newrelic.com. This global switch is normally overridden for each + # When "true", the agent collects performance data about your + # application and reports this data to the New Relic service at + # newrelic.com. This global switch is normally overridden for each # environment below. (formerly called 'enabled') monitor_mode: true @@ -54,7 +54,7 @@ common: &default_settings # '/var/log/') The agent will attempt to create this directory if it # does not exist. # log_file_path: 'log' - + # Optionally set the name of the log file, defaults to 'newrelic_agent.log' # log_file_name: 'newrelic_agent.log' @@ -77,28 +77,28 @@ common: &default_settings # use a non-blocking lookup, so in a worst case, if you have DNS # problems, your app may block indefinitely. # verify_certificate: true - + # Set your application's Apdex threshold value with the 'apdex_t' # setting, in seconds. The apdex_t value determines the buckets used - # to compute your overall Apdex score. + # to compute your overall Apdex score. # Requests that take less than apdex_t seconds to process will be # classified as Satisfying transactions; more than apdex_t seconds # as Tolerating transactions; and more than four times the apdex_t - # value as Frustrating transactions. + # value as Frustrating transactions. # For more about the Apdex standard, see # http://newrelic.com/docs/general/apdex apdex_t: 0.5 - + #============================== Browser Monitoring =============================== # New Relic Real User Monitoring gives you insight into the performance real users are # experiencing with your website. This is accomplished by measuring the time it takes for # your users' browsers to download and render your web pages by injecting a small amount - # of JavaScript code into the header and footer of each page. + # of JavaScript code into the header and footer of each page. browser_monitoring: - # By default the agent automatically injects the monitoring JavaScript - # into web pages. Set this attribute to false to turn off this behavior. - auto_instrument: true + # By default the agent automatically injects the monitoring JavaScript + # into web pages. Set this attribute to false to turn off this behavior. + auto_instrument: true # Proxy settings for connecting to the service. # @@ -110,14 +110,14 @@ common: &default_settings # proxy_user: # proxy_pass: - + # Tells transaction tracer and error collector (when enabled) # whether or not to capture HTTP params. When true, frameworks can # exclude HTTP parameters from being captured. # Rails: the RoR filter_parameter_logging excludes parameters # Java: create a config setting called "ignored_params" and set it to # a comma separated list of HTTP parameter names. - # ex: ignored_params: credit_card, ssn, password + # ex: ignored_params: credit_card, ssn, password capture_params: false @@ -126,12 +126,12 @@ common: &default_settings # minute. Included in the transaction is the exact call sequence of # the transactions including any SQL statements issued. transaction_tracer: - + # Transaction tracer is enabled by default. Set this to false to # turn it off. This feature is only available at the Professional # and above product levels. enabled: true - + # Threshold in seconds for when to collect a transaction # trace. When the response time of a controller action exceeds # this threshold, a transaction trace will be recorded and sent to @@ -139,13 +139,13 @@ common: &default_settings # "apdex_f", which will use the threshold for an dissatisfying # Apdex controller action - four times the Apdex T value. transaction_threshold: apdex_f - + # When transaction tracer is on, SQL statements can optionally be # recorded. The recorder has three modes, "off" which sends no # SQL, "raw" which sends the SQL statement in its original form, # and "obfuscated", which strips out numeric and string literals record_sql: obfuscated - + # Threshold in seconds for when to collect stack trace for a SQL # call. In other words, when SQL statements exceed this threshold, # then capture and send the current stack trace. This is @@ -157,24 +157,24 @@ common: &default_settings # set to false when using other adapters. # explain_enabled: true - # Threshold for query execution time below which query plans will not + # Threshold for query execution time below which query plans will not # not be captured. Relevant only when `explain_enabled` is true. # explain_threshold: 0.5 - + # Error collector captures information about uncaught exceptions and # sends them to the service for viewing error_collector: - + # Error collector is enabled by default. Set this to false to turn # it off. This feature is only available at the Professional and above # product levels enabled: true - - # Rails Only - tells error collector whether or not to capture a - # source snippet around the place of the error when errors are View + + # Rails Only - tells error collector whether or not to capture a + # source snippet around the place of the error when errors are View # related. - capture_source: true - + capture_source: true + # To stop specific errors from reporting to New Relic, set this property # to comma separated values. Default is to ignore routing errors # which are how 404's get triggered. @@ -185,7 +185,7 @@ common: &default_settings # won't run. Useful when you are using the agent to monitor an # external resource # disable_samplers: true - + # If you aren't interested in visibility in these areas, you can # disable the instrumentation to reduce overhead. # @@ -199,8 +199,8 @@ common: &default_settings # overhead slightly on every memcached call, and can have security # implications if your memcached keys are sensitive # capture_memcache_keys: true - - # Certain types of instrumentation such as GC stats will not work if + + # Certain types of instrumentation such as GC stats will not work if # you are running multi-threaded. Please let us know. # multi_threaded = false @@ -216,19 +216,19 @@ common: &default_settings development: <<: *default_settings - # Turn off communication to New Relic service in development mode (also + # Turn off communication to New Relic service in development mode (also # 'enabled'). - # NOTE: for initial evaluation purposes, you may want to temporarily + # NOTE: for initial evaluation purposes, you may want to temporarily # turn the agent on in development mode. monitor_mode: false - # Rails Only - when running in Developer Mode, the New Relic Agent will + # Rails Only - when running in Developer Mode, the New Relic Agent will # present performance information on the last 100 transactions you have # executed since starting the mongrel. # NOTE: There is substantial overhead when running in developer mode. - # Do not use for production or load testing. + # Do not use for production or load testing. developer_mode: true - + # Enable textmate links # textmate: true diff --git a/config/routes.rb b/config/routes.rb index 79373763e..d41c8f608 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,13 +1,18 @@ -Growstuff::Application.routes.draw do - +Growstuff::Application.routes.draw do # rubocop:disable Metrics/BlockLength get '/robots.txt' => 'robots#robots' resources :plant_parts - devise_for :members, controllers: { registrations: "registrations", passwords: "passwords", sessions: "sessions" } + devise_for :members, controllers: { + registrations: "registrations", + passwords: "passwords", + sessions: "sessions", + omniauth_callbacks: "omniauth_callbacks" + } devise_scope :member do get '/members/unsubscribe/:message' => 'members#unsubscribe', :as => 'unsubscribe_member' end + match '/members/:id/finish_signup' => 'members#finish_signup', via: [:get, :patch], :as => :finish_signup resources :members @@ -52,7 +57,6 @@ Growstuff::Application.routes.draw do get '/members/:login_name/follows' => 'members#view_follows', :as => 'member_follows' get '/members/:login_name/followers' => 'members#view_followers', :as => 'member_followers' - get '/places' => 'places#index' get '/places/search' => 'places#search', :as => 'search_places' get '/places/:place' => 'places#show', :as => 'place' @@ -87,7 +91,6 @@ Growstuff::Application.routes.draw do get '/.well-known/acme-challenge/:id' => 'pages#letsencrypt' -# CMS stuff -- must remain LAST + # CMS stuff -- must remain LAST comfy_route :cms, path: '/', sitemap: false - end diff --git a/config/setup_load_paths.rb b/config/setup_load_paths.rb index 7c6e7e133..c1a0f95fd 100644 --- a/config/setup_load_paths.rb +++ b/config/setup_load_paths.rb @@ -1,7 +1,5 @@ if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm') begin - rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME'])) - rvm_lib_path = File.join(rvm_path, 'lib') require 'rvm' RVM.use_from_path! File.dirname(File.dirname(__FILE__)) rescue LoadError diff --git a/config/sidekiq.yml b/config/sidekiq.yml new file mode 100644 index 000000000..b68d2e2d0 --- /dev/null +++ b/config/sidekiq.yml @@ -0,0 +1,5 @@ +--- +:concurrency: 1 +:queues: + - default + - mailers diff --git a/config/unicorn.rb b/config/unicorn.rb index dfd7ac833..e4153a81f 100644 --- a/config/unicorn.rb +++ b/config/unicorn.rb @@ -4,7 +4,6 @@ timeout 30 preload_app true before_fork do |server, worker| - Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid @@ -15,7 +14,6 @@ before_fork do |server, worker| end after_fork do |server, worker| - Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT' end diff --git a/db/migrate/20120903092956_devise_create_users.rb b/db/migrate/20120903092956_devise_create_users.rb index f956c1e5a..cf02cbe2a 100644 --- a/db/migrate/20120903092956_devise_create_users.rb +++ b/db/migrate/20120903092956_devise_create_users.rb @@ -33,7 +33,6 @@ class DeviseCreateUsers < ActiveRecord::Migration ## Token authenticatable # t.string :authentication_token - t.timestamps null: true end diff --git a/db/migrate/20121109130033_add_creation_index_to_updates.rb b/db/migrate/20121109130033_add_creation_index_to_updates.rb index cb94c6b26..4e3f4c560 100644 --- a/db/migrate/20121109130033_add_creation_index_to_updates.rb +++ b/db/migrate/20121109130033_add_creation_index_to_updates.rb @@ -1,5 +1,5 @@ class AddCreationIndexToUpdates < ActiveRecord::Migration def change - add_index :updates, [:created_at, :user_id] + add_index :updates, [:created_at, :user_id] end end diff --git a/db/migrate/20130326092227_change_planted_at_to_date.rb b/db/migrate/20130326092227_change_planted_at_to_date.rb index 9fb361a0e..bf14c624d 100644 --- a/db/migrate/20130326092227_change_planted_at_to_date.rb +++ b/db/migrate/20130326092227_change_planted_at_to_date.rb @@ -1,5 +1,5 @@ class ChangePlantedAtToDate < ActiveRecord::Migration def change change_column :plantings, :planted_at, :date - end + end end diff --git a/db/migrate/20130518002942_rename_account_detail_to_account.rb b/db/migrate/20130518002942_rename_account_detail_to_account.rb index 8c2243431..0a8434694 100644 --- a/db/migrate/20130518002942_rename_account_detail_to_account.rb +++ b/db/migrate/20130518002942_rename_account_detail_to_account.rb @@ -2,5 +2,4 @@ class RenameAccountDetailToAccount < ActiveRecord::Migration def change rename_table :account_details, :accounts end - end diff --git a/db/migrate/20130601011725_change_flickr_photo_id_to_string.rb b/db/migrate/20130601011725_change_flickr_photo_id_to_string.rb index 84cf7a7b4..01afc35d3 100644 --- a/db/migrate/20130601011725_change_flickr_photo_id_to_string.rb +++ b/db/migrate/20130601011725_change_flickr_photo_id_to_string.rb @@ -3,6 +3,7 @@ class ChangeFlickrPhotoIdToString < ActiveRecord::Migration remove_column :photos, :flickr_photo_id add_column :photos, :flickr_photo_id, :string end + def down # Postgres doesn't allow you to cast strings to integers # Hence there's no way of rolling back this migration without losing diff --git a/db/migrate/20140928044231_add_crops_posts_table.rb b/db/migrate/20140928044231_add_crops_posts_table.rb index 6f200c3d8..475a993f5 100644 --- a/db/migrate/20140928044231_add_crops_posts_table.rb +++ b/db/migrate/20140928044231_add_crops_posts_table.rb @@ -7,4 +7,4 @@ class AddCropsPostsTable < ActiveRecord::Migration add_index :crops_posts, [:crop_id, :post_id] add_index :crops_posts, :crop_id end -end \ No newline at end of file +end diff --git a/db/migrate/20141119130555_change_follows_member_id_to_follower_id.rb b/db/migrate/20141119130555_change_follows_member_id_to_follower_id.rb index 1ac6af7f2..cb9e58d3a 100644 --- a/db/migrate/20141119130555_change_follows_member_id_to_follower_id.rb +++ b/db/migrate/20141119130555_change_follows_member_id_to_follower_id.rb @@ -1,5 +1,5 @@ class ChangeFollowsMemberIdToFollowerId < ActiveRecord::Migration def change - rename_column :follows, :member_id, :follower_id + rename_column :follows, :member_id, :follower_id end end diff --git a/db/migrate/20150201052245_create_cms.rb b/db/migrate/20150201052245_create_cms.rb index edebc41fe..3e3101df0 100644 --- a/db/migrate/20150201052245_create_cms.rb +++ b/db/migrate/20150201052245_create_cms.rb @@ -1,14 +1,12 @@ class CreateCms < ActiveRecord::Migration - - def self.up - + def self.up # rubocop:disable Metrics/MethodLength, Metrics/AbcSize text_limit = case ActiveRecord::Base.connection.adapter_name - when 'PostgreSQL' - { } - else - { limit: 16777215 } - end - + when 'PostgreSQL' + {} + else + { limit: 16777215 } + end + # -- Sites -------------------------------------------------------------- create_table :comfy_cms_sites do |t| t.string :label, null: false @@ -20,7 +18,7 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_sites, :hostname add_index :comfy_cms_sites, :is_mirrored - + # -- Layouts ------------------------------------------------------------ create_table :comfy_cms_layouts do |t| t.integer :site_id, null: false @@ -37,14 +35,14 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_layouts, [:parent_id, :position] add_index :comfy_cms_layouts, [:site_id, :identifier], unique: true - + # -- Pages -------------------------------------------------------------- create_table :comfy_cms_pages do |t| t.integer :site_id, null: false t.integer :layout_id t.integer :parent_id t.integer :target_page_id - t.string :label, null: false + t.string :label, null: false t.string :slug t.string :full_path, null: false t.text :content_cache, text_limit @@ -56,7 +54,7 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_pages, [:site_id, :full_path] add_index :comfy_cms_pages, [:parent_id, :position] - + # -- Page Blocks -------------------------------------------------------- create_table :comfy_cms_blocks do |t| t.string :identifier, null: false @@ -66,7 +64,7 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_blocks, [:identifier] add_index :comfy_cms_blocks, [:blockable_id, :blockable_type] - + # -- Snippets ----------------------------------------------------------- create_table :comfy_cms_snippets do |t| t.integer :site_id, null: false @@ -79,10 +77,10 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_snippets, [:site_id, :identifier], unique: true add_index :comfy_cms_snippets, [:site_id, :position] - + # -- Files -------------------------------------------------------------- create_table :comfy_cms_files do |t| - t.integer :site_id, null: false + t.integer :site_id, null: false t.integer :block_id t.string :label, null: false t.string :file_file_name, null: false @@ -96,7 +94,7 @@ class CreateCms < ActiveRecord::Migration add_index :comfy_cms_files, [:site_id, :file_file_name] add_index :comfy_cms_files, [:site_id, :position] add_index :comfy_cms_files, [:site_id, :block_id] - + # -- Revisions ----------------------------------------------------------- create_table :comfy_cms_revisions, force: true do |t| t.string :record_type, null: false @@ -106,25 +104,27 @@ class CreateCms < ActiveRecord::Migration end add_index :comfy_cms_revisions, [:record_type, :record_id, :created_at], name: 'index_cms_revisions_on_rtype_and_rid_and_created_at' - + # -- Categories --------------------------------------------------------- create_table :comfy_cms_categories, force: true do |t| t.integer :site_id, null: false t.string :label, null: false t.string :categorized_type, null: false end - add_index :comfy_cms_categories, [:site_id, :categorized_type, :label], unique: true, + add_index :comfy_cms_categories, [:site_id, :categorized_type, :label], + unique: true, name: 'index_cms_categories_on_site_id_and_cat_type_and_label' - + create_table :comfy_cms_categorizations, force: true do |t| t.integer :category_id, null: false t.string :categorized_type, null: false t.integer :categorized_id, null: false end - add_index :comfy_cms_categorizations, [:category_id, :categorized_type, :categorized_id], unique: true, + add_index :comfy_cms_categorizations, [:category_id, :categorized_type, :categorized_id], + unique: true, name: 'index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id' end - + def self.down drop_table :comfy_cms_sites drop_table :comfy_cms_layouts @@ -137,4 +137,3 @@ class CreateCms < ActiveRecord::Migration drop_table :comfy_cms_categorizations end end - diff --git a/db/migrate/20161129021533_rename_scientific_name.rb b/db/migrate/20161129021533_rename_scientific_name.rb new file mode 100644 index 000000000..e2ff2ea0e --- /dev/null +++ b/db/migrate/20161129021533_rename_scientific_name.rb @@ -0,0 +1,9 @@ +class RenameScientificName < ActiveRecord::Migration + def self.up + rename_column :scientific_names, :scientific_name, :name + end + + def self.down + rename_column :scientific_names, :name, :scientific_name + end +end diff --git a/db/migrate/20161201154922_add_photos_seeds_table.rb b/db/migrate/20161201154922_add_photos_seeds_table.rb new file mode 100644 index 000000000..31693d225 --- /dev/null +++ b/db/migrate/20161201154922_add_photos_seeds_table.rb @@ -0,0 +1,9 @@ +class AddPhotosSeedsTable < ActiveRecord::Migration + def change + create_table :photos_seeds, id: false do |t| + t.integer :photo_id + t.integer :seed_id + end + add_index(:photos_seeds, [:seed_id, :photo_id]) + end +end diff --git a/db/schema.rb b/db/schema.rb index 669bf45da..21e29ea38 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,12 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150824145414) do +ActiveRecord::Schema.define(version: 20161201154922) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" - create_table "account_types", force: true do |t| + create_table "account_types", force: :cascade do |t| t.string "name", null: false t.boolean "is_paid" t.boolean "is_permanent_paid" @@ -24,7 +24,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at", null: false end - create_table "accounts", force: true do |t| + create_table "accounts", force: :cascade do |t| t.integer "member_id", null: false t.integer "account_type_id" t.datetime "paid_until" @@ -32,7 +32,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at", null: false end - create_table "alternate_names", force: true do |t| + create_table "alternate_names", force: :cascade do |t| t.string "name", null: false t.integer "crop_id", null: false t.integer "creator_id", null: false @@ -40,7 +40,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at" end - create_table "authentications", force: true do |t| + create_table "authentications", force: :cascade do |t| t.integer "member_id", null: false t.string "provider", null: false t.string "uid" @@ -53,7 +53,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "authentications", ["member_id"], name: "index_authentications_on_member_id", using: :btree - create_table "comfy_cms_blocks", force: true do |t| + create_table "comfy_cms_blocks", force: :cascade do |t| t.string "identifier", null: false t.text "content" t.integer "blockable_id" @@ -65,7 +65,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_blocks", ["blockable_id", "blockable_type"], name: "index_comfy_cms_blocks_on_blockable_id_and_blockable_type", using: :btree add_index "comfy_cms_blocks", ["identifier"], name: "index_comfy_cms_blocks_on_identifier", using: :btree - create_table "comfy_cms_categories", force: true do |t| + create_table "comfy_cms_categories", force: :cascade do |t| t.integer "site_id", null: false t.string "label", null: false t.string "categorized_type", null: false @@ -73,7 +73,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_categories", ["site_id", "categorized_type", "label"], name: "index_cms_categories_on_site_id_and_cat_type_and_label", unique: true, using: :btree - create_table "comfy_cms_categorizations", force: true do |t| + create_table "comfy_cms_categorizations", force: :cascade do |t| t.integer "category_id", null: false t.string "categorized_type", null: false t.integer "categorized_id", null: false @@ -81,7 +81,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_categorizations", ["category_id", "categorized_type", "categorized_id"], name: "index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id", unique: true, using: :btree - create_table "comfy_cms_files", force: true do |t| + create_table "comfy_cms_files", force: :cascade do |t| t.integer "site_id", null: false t.integer "block_id" t.string "label", null: false @@ -99,7 +99,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_files", ["site_id", "label"], name: "index_comfy_cms_files_on_site_id_and_label", using: :btree add_index "comfy_cms_files", ["site_id", "position"], name: "index_comfy_cms_files_on_site_id_and_position", using: :btree - create_table "comfy_cms_layouts", force: true do |t| + create_table "comfy_cms_layouts", force: :cascade do |t| t.integer "site_id", null: false t.integer "parent_id" t.string "app_layout" @@ -117,7 +117,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_layouts", ["parent_id", "position"], name: "index_comfy_cms_layouts_on_parent_id_and_position", using: :btree add_index "comfy_cms_layouts", ["site_id", "identifier"], name: "index_comfy_cms_layouts_on_site_id_and_identifier", unique: true, using: :btree - create_table "comfy_cms_pages", force: true do |t| + create_table "comfy_cms_pages", force: :cascade do |t| t.integer "site_id", null: false t.integer "layout_id" t.integer "parent_id" @@ -137,7 +137,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_pages", ["parent_id", "position"], name: "index_comfy_cms_pages_on_parent_id_and_position", using: :btree add_index "comfy_cms_pages", ["site_id", "full_path"], name: "index_comfy_cms_pages_on_site_id_and_full_path", using: :btree - create_table "comfy_cms_revisions", force: true do |t| + create_table "comfy_cms_revisions", force: :cascade do |t| t.string "record_type", null: false t.integer "record_id", null: false t.text "data" @@ -146,7 +146,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_revisions", ["record_type", "record_id", "created_at"], name: "index_cms_revisions_on_rtype_and_rid_and_created_at", using: :btree - create_table "comfy_cms_sites", force: true do |t| + create_table "comfy_cms_sites", force: :cascade do |t| t.string "label", null: false t.string "identifier", null: false t.string "hostname", null: false @@ -158,7 +158,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_sites", ["hostname"], name: "index_comfy_cms_sites_on_hostname", using: :btree add_index "comfy_cms_sites", ["is_mirrored"], name: "index_comfy_cms_sites_on_is_mirrored", using: :btree - create_table "comfy_cms_snippets", force: true do |t| + create_table "comfy_cms_snippets", force: :cascade do |t| t.integer "site_id", null: false t.string "label", null: false t.string "identifier", null: false @@ -172,7 +172,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "comfy_cms_snippets", ["site_id", "identifier"], name: "index_comfy_cms_snippets_on_site_id_and_identifier", unique: true, using: :btree add_index "comfy_cms_snippets", ["site_id", "position"], name: "index_comfy_cms_snippets_on_site_id_and_position", using: :btree - create_table "comments", force: true do |t| + create_table "comments", force: :cascade do |t| t.integer "post_id", null: false t.integer "author_id", null: false t.text "body", null: false @@ -180,7 +180,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at", null: false end - create_table "crops", force: true do |t| + create_table "crops", force: :cascade do |t| t.string "name", null: false t.string "en_wikipedia_url" t.datetime "created_at", null: false @@ -200,7 +200,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "crops", ["requester_id"], name: "index_crops_on_requester_id", using: :btree add_index "crops", ["slug"], name: "index_crops_on_slug", unique: true, using: :btree - create_table "crops_posts", id: false, force: true do |t| + create_table "crops_posts", id: false, force: :cascade do |t| t.integer "crop_id" t.integer "post_id" end @@ -208,14 +208,14 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "crops_posts", ["crop_id", "post_id"], name: "index_crops_posts_on_crop_id_and_post_id", using: :btree add_index "crops_posts", ["crop_id"], name: "index_crops_posts_on_crop_id", using: :btree - create_table "follows", force: true do |t| + create_table "follows", force: :cascade do |t| t.integer "follower_id" t.integer "followed_id" t.datetime "created_at" t.datetime "updated_at" end - create_table "forums", force: true do |t| + create_table "forums", force: :cascade do |t| t.string "name", null: false t.text "description", null: false t.integer "owner_id", null: false @@ -226,7 +226,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "forums", ["slug"], name: "index_forums_on_slug", unique: true, using: :btree - create_table "gardens", force: true do |t| + create_table "gardens", force: :cascade do |t| t.string "name", null: false t.integer "owner_id" t.string "slug", null: false @@ -244,14 +244,14 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "gardens", ["owner_id"], name: "index_gardens_on_user_id", using: :btree add_index "gardens", ["slug"], name: "index_gardens_on_slug", unique: true, using: :btree - create_table "gardens_photos", id: false, force: true do |t| + create_table "gardens_photos", id: false, force: :cascade do |t| t.integer "photo_id" t.integer "garden_id" end add_index "gardens_photos", ["garden_id", "photo_id"], name: "index_gardens_photos_on_garden_id_and_photo_id", using: :btree - create_table "harvests", force: true do |t| + create_table "harvests", force: :cascade do |t| t.integer "crop_id", null: false t.integer "owner_id", null: false t.date "harvested_at" @@ -267,7 +267,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.float "si_weight" end - create_table "harvests_photos", id: false, force: true do |t| + create_table "harvests_photos", id: false, force: :cascade do |t| t.integer "photo_id" t.integer "harvest_id" end @@ -287,7 +287,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "likes", ["likeable_id"], name: "index_likes_on_likeable_id", using: :btree add_index "likes", ["member_id"], name: "index_likes_on_member_id", using: :btree - create_table "members", force: true do |t| + create_table "members", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" @@ -328,12 +328,12 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "members", ["slug"], name: "index_users_on_slug", unique: true, using: :btree add_index "members", ["unlock_token"], name: "index_users_on_unlock_token", unique: true, using: :btree - create_table "members_roles", id: false, force: true do |t| + create_table "members_roles", id: false, force: :cascade do |t| t.integer "member_id" t.integer "role_id" end - create_table "notifications", force: true do |t| + create_table "notifications", force: :cascade do |t| t.integer "sender_id" t.integer "recipient_id", null: false t.string "subject" @@ -344,7 +344,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at", null: false end - create_table "order_items", force: true do |t| + create_table "order_items", force: :cascade do |t| t.integer "order_id" t.integer "product_id" t.integer "price" @@ -353,9 +353,15 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.datetime "updated_at", null: false end +<<<<<<< HEAD create_table "orders", force: true do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false +======= + create_table "orders", force: :cascade do |t| + t.datetime "created_at" + t.datetime "updated_at" +>>>>>>> upstream/dev t.datetime "completed_at" t.integer "member_id" t.string "paypal_express_token" @@ -363,12 +369,12 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.string "referral_code" end - create_table "orders_products", id: false, force: true do |t| + create_table "orders_products", id: false, force: :cascade do |t| t.integer "order_id" t.integer "product_id" end - create_table "photos", force: true do |t| + create_table "photos", force: :cascade do |t| t.integer "owner_id", null: false t.string "thumbnail_url", null: false t.string "fullsize_url", null: false @@ -381,19 +387,26 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.string "flickr_photo_id" end - create_table "photos_plantings", id: false, force: true do |t| + create_table "photos_plantings", id: false, force: :cascade do |t| t.integer "photo_id" t.integer "planting_id" end - create_table "plant_parts", force: true do |t| + create_table "photos_seeds", id: false, force: :cascade do |t| + t.integer "photo_id" + t.integer "seed_id" + end + + add_index "photos_seeds", ["seed_id", "photo_id"], name: "index_photos_seeds_on_seed_id_and_photo_id", using: :btree + + create_table "plant_parts", force: :cascade do |t| t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "slug" end - create_table "plantings", force: true do |t| + create_table "plantings", force: :cascade do |t| t.integer "garden_id", null: false t.integer "crop_id", null: false t.date "planted_at" @@ -412,7 +425,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "plantings", ["slug"], name: "index_plantings_on_slug", unique: true, using: :btree - create_table "posts", force: true do |t| + create_table "posts", force: :cascade do |t| t.integer "author_id", null: false t.string "subject", null: false t.text "body", null: false @@ -425,7 +438,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "posts", ["created_at", "author_id"], name: "index_updates_on_created_at_and_user_id", using: :btree add_index "posts", ["slug"], name: "index_updates_on_slug", unique: true, using: :btree - create_table "products", force: true do |t| + create_table "products", force: :cascade do |t| t.string "name", null: false t.text "description", null: false t.integer "min_price", null: false @@ -436,7 +449,7 @@ ActiveRecord::Schema.define(version: 20150824145414) do t.integer "recommended_price" end - create_table "roles", force: true do |t| + create_table "roles", force: :cascade do |t| t.string "name", null: false t.text "description" t.datetime "created_at", null: false @@ -446,15 +459,23 @@ ActiveRecord::Schema.define(version: 20150824145414) do add_index "roles", ["slug"], name: "index_roles_on_slug", unique: true, using: :btree +<<<<<<< HEAD create_table "scientific_names", force: true do |t| t.string "scientific_name", null: false t.integer "crop_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false +======= + create_table "scientific_names", force: :cascade do |t| + t.string "name", null: false + t.integer "crop_id", null: false + t.datetime "created_at" + t.datetime "updated_at" +>>>>>>> upstream/dev t.integer "creator_id" end - create_table "seeds", force: true do |t| + create_table "seeds", force: :cascade do |t| t.integer "owner_id", null: false t.integer "crop_id", null: false t.text "description" diff --git a/db/seeds.rb b/db/seeds.rb index f1b8d67cb..467fd39f2 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -69,16 +69,15 @@ def load_test_users puts "Warning: unable to open suburbs.csv" end - # rake parameter (eg. 'rake db:seed member_size=10') member_size = ENV['member_size'] ? ENV['member_size'].to_i : 3 (1..member_size).each do |i| @user = Member.new( - login_name: "test#{i}", - email: "test#{i}@example.com", - password: "password#{i}", - tos_agreement: true + login_name: "test#{i}", + email: "test#{i}@example.com", + password: "password#{i}", + tos_agreement: true ) @user.skip_confirmation! @user.save! @@ -88,8 +87,8 @@ def load_test_users suburb_file.pos = 0 if suburb_file.eof? row = CSV.parse(suburb_file.readline) - suburb,country,state,latitude,longitude = row[0] - # Using 'update_column' method instead of 'update' so that + suburb, _country, _state, latitude, longitude = row[0] + # Using 'update_column' method instead of 'update' so that # it avoids accessing Geocoding service for faster processing @user.gardens.first.update_columns(location: suburb, latitude: latitude, longitude: longitude) @user.update_columns(location: suburb, latitude: latitude, longitude: longitude) @@ -142,7 +141,7 @@ def create_cropbot @cropbot_user.skip_confirmation! @cropbot_user.roles << @wrangler @cropbot_user.save! - @cropbot_user.account.account_type = AccountType.find_by_name("Staff") + @cropbot_user.account.account_type = AccountType.find_by(name: "Staff") @cropbot_user.account.save end @@ -199,7 +198,7 @@ def load_plant_parts end def select_random_item(array) - array[rand(0..array.size-1) % array.size] + array[rand(0..array.size - 1) % array.size] end load_data diff --git a/db/seeds/crops-00.csv b/db/seeds/crops-00.csv index adad852cb..86b668785 100644 --- a/db/seeds/crops-00.csv +++ b/db/seeds/crops-00.csv @@ -205,7 +205,7 @@ summer savory,https://en.wikipedia.org/wiki/Summer_savory,,Satureja hortensis sunflowers,https://en.wikipedia.org/wiki/Sunflower,,Helianthus annuus sweet potato,https://en.wikipedia.org/wiki/Sweet_potato,,Ipomoea batatas Swiss chard,https://en.wikipedia.org/wiki/Swiss_chard,,Beta vulgaris var. cicla -tamarillo,https://en.wikipedia.org/wiki/Tamarillo,,Solanum betaceum +tamarillo,https://en.wikipedia.org/wiki/Tamarillo,,Solanum betaceum tamarind,https://en.wikipedia.org/wiki/Tamarind,,Tamarindus indica tangerine,https://en.wikipedia.org/wiki/Tangerine,,Citrus tangerina tansy,https://en.wikipedia.org/wiki/Tansy,,Tanacetum vulgare diff --git a/lib/actions/oauth_signup_action.rb b/lib/actions/oauth_signup_action.rb new file mode 100644 index 000000000..7d4913c21 --- /dev/null +++ b/lib/actions/oauth_signup_action.rb @@ -0,0 +1,75 @@ +class Growstuff::OauthSignupAction + # + # Inspects the omniauth information + # and determines if we have an existing member + # (to add authentication to) + # or if this is a new signup + # + # As a side affect, this method sets the @member_created + # variable + # + def find_or_create_from_authorization(auth) + member ||= Member.where(email: auth.info.email).first_or_create do |m| + m.email = auth.info.email + m.password = Devise.friendly_token[0, 20] + + # First, try the nickname or friendly generate from the email + m.login_name = auth.info.nickname || auth.info.email.split("@").first.gsub(/[^A-Za-z]+/, '_').underscore + + # Do we have a collision with an existing account? Generate a 20 character long random name + # so the user can update it later + m.login_name = Devise.friendly_token[0, 20] if Member.where(login_name: m.login_name).any? + m.preferred_avatar_uri = auth.info.image # assuming the user model has an image + m.skip_confirmation! + + @member_created = true + end + + member.save! + + member + end + + # + # For a given auth hash (from omniauth), and a specified member + # See if: + # - The member already has this authentication or + # - We need to create it + # + def establish_authentication(auth, member) + name = determine_name(auth) + + authentication = member.authentications + .create_with( + name: name, + token: auth['credentials']['token'], + secret: auth['credentials']['secret'], + ) + .find_or_create_by( + provider: auth['provider'], + uid: auth['uid'], + name: name, + member_id: member.id + ) + + authentication + end + + def member_created? + @member_created + end + + def determine_name(auth) + name = '' + case auth['provider'] + when 'twitter' + name = auth['info']['nickname'] + when 'flickr', 'facebook' + name = auth['info']['name'] + else + name = auth['info']['name'] + end + + name + end +end diff --git a/lib/geocodable.rb b/lib/geocodable.rb index 2b914b535..68b137acf 100644 --- a/lib/geocodable.rb +++ b/lib/geocodable.rb @@ -8,7 +8,7 @@ module Geocodable def geocode unless self.location.blank? self.latitude, self.longitude = - Geocoder.coordinates(location, params: {limit: 1}) + Geocoder.coordinates(location, params: { limit: 1 }) end end @@ -18,5 +18,4 @@ module Geocodable self.longitude = nil end end - end diff --git a/lib/haml/filters/escaped_markdown.rb b/lib/haml/filters/escaped_markdown.rb index 4b0c7e9cc..86345b5a2 100644 --- a/lib/haml/filters/escaped_markdown.rb +++ b/lib/haml/filters/escaped_markdown.rb @@ -5,12 +5,11 @@ module Haml::Filters module EscapedMarkdown include Haml::Filters::Base def render(text) - return Haml::Helpers.html_escape Haml::Filters::GrowstuffMarkdown.render(text) + Haml::Helpers.html_escape Haml::Filters::GrowstuffMarkdown.render(text) end end -# Register it as the handler for the :escaped_markdown HAML command. -# The automatic system gives us :escapedmarkdown, which is ugly. -defined['escaped_markdown'] = EscapedMarkdown - + # Register it as the handler for the :escaped_markdown HAML command. + # The automatic system gives us :escapedmarkdown, which is ugly. + defined['escaped_markdown'] = EscapedMarkdown end diff --git a/lib/haml/filters/growstuff_markdown.rb b/lib/haml/filters/growstuff_markdown.rb index bb665e810..e03e8c306 100644 --- a/lib/haml/filters/growstuff_markdown.rb +++ b/lib/haml/filters/growstuff_markdown.rb @@ -9,7 +9,6 @@ module Haml::Filters include Haml::Filters::Base def render(text) - # turn [tomato](crop) into [tomato](http://growstuff.org/crops/tomato) expanded = text.gsub(CROP_REGEX) do |m| crop_str = $1 @@ -27,7 +26,7 @@ module Haml::Filters expanded = expanded.gsub(MEMBER_REGEX) do |m| member_str = $1 # find member case-insensitively - member = Member.where('lower(login_name) = ?', member_str.downcase).first + member = Member.case_insensitive_login_name(member_str).first if member url = Rails.application.routes.url_helpers.member_url(member, only_path: true) "[#{member_str}](#{url})" @@ -40,7 +39,7 @@ module Haml::Filters expanded = expanded.gsub(MEMBER_AT_REGEX) do |m| member_str = $1 # find member case-insensitively - member = Member.where('lower(login_name) = ?', member_str[1..-1].downcase).first + member = Member.case_insensitive_login_name(member_str[1..-1]).first if member url = Rails.application.routes.url_helpers.member_url(member, only_path: true) "[#{member_str}](#{url})" @@ -51,13 +50,11 @@ module Haml::Filters expanded = expanded.gsub(MEMBER_ESCAPE_AT_REGEX, "") - return BlueCloth.new(expanded).to_html - + BlueCloth.new(expanded).to_html end end -# Register it as the handler for the :growstuff_markdown HAML command. -# The automatic system gives us :growstuffmarkdown, which is ugly. -defined['growstuff_markdown'] = GrowstuffMarkdown - + # Register it as the handler for the :growstuff_markdown HAML command. + # The automatic system gives us :growstuffmarkdown, which is ugly. + defined['growstuff_markdown'] = GrowstuffMarkdown end diff --git a/lib/tasks/growstuff.rake b/lib/tasks/growstuff.rake index 5e0aa6d88..de4c34bc5 100644 --- a/lib/tasks/growstuff.rake +++ b/lib/tasks/growstuff.rake @@ -1,21 +1,26 @@ namespace :growstuff do - desc "Add an admin user, by name" # usage: rake growstuff:admin_user name=skud task admin_user: :environment do - member = Member.find_by_login_name(ENV['name']) or raise "Usage: rake growstuff:admin_user name=whoever (login name is case-sensitive)" - admin = Role.find('admin') - member.roles << admin + add_role_to_member! ENV['name'], 'admin' end desc "Add a crop wrangler user, by name" # usage: rake growstuff:cropwrangler_user name=skud task cropwrangler_user: :environment do - member = Member.find_by_login_name(ENV['name']) or raise "Usage: rake growstuff:cropwrangler_user name=whoever (login name is case-sensitive)" - cw = Role.find('crop-wrangler') - member.roles << cw + add_role_to_member! ENV['name'], 'crop-wrangler' + end + + def add_role_to_member!(login_name, role_name) + unless login_name && role_name + raise "Usage: rake growstuff:[rolename] name=[username] "\ + "\n (login name is case-sensitive)\n" + end + member = Member.find_by!(login_name: login_name) + role = Role.find_by!(name: role_name) + member.roles << role end desc "Upload crops from a CSV file" @@ -32,7 +37,6 @@ namespace :growstuff do end Rails.cache.delete('full_crop_hierarchy') puts "Finished loading crops" - end desc "Send planting reminder email" @@ -49,7 +53,7 @@ namespace :growstuff do if Date.today.cwday == send_on_day and Date.today.cweek % every_n_weeks == 0 Member.confirmed.find_each do |m| - Notifier.planting_reminder(m).deliver_now! + Notifier.planting_reminder(m).deliver_later! end end end @@ -67,10 +71,8 @@ namespace :growstuff do desc "One-off tasks needed at various times and kept for posterity" namespace :oneoff do - desc "May 2013: replace any empty notification subjects with (no subject)" task empty_subjects: :environment do - # this is inefficient as it checks every Notification, but the # site is small and there aren't many of them, so it shouldn't matter # for this one-off script. @@ -82,7 +84,6 @@ namespace :growstuff do desc "May 2013: replace any empty garden names with Garden" task empty_garden_names: :environment do - # this is inefficient as it checks every Garden, but the # site is small and there aren't many of them, so it shouldn't matter # for this one-off script. @@ -94,7 +95,6 @@ namespace :growstuff do end end - desc "June 2013: create account types and products." task setup_shop: :environment do puts "Adding account types..." @@ -103,33 +103,37 @@ namespace :growstuff do is_paid: false, is_permanent_paid: false ) - @paid_account = AccountType.find_or_create_by( + @paid_account = AccountType.find_or_create_by( name: "Paid", is_paid: true, is_permanent_paid: false ) - @seed_account = AccountType.find_or_create_by( + @seed_account = AccountType.find_or_create_by( name: "Seed", is_paid: true, is_permanent_paid: true ) - @staff_account = AccountType.find_or_create_by( + @staff_account = AccountType.find_or_create_by( name: "Staff", is_paid: true, is_permanent_paid: true ) puts "Adding products..." - Product.find_or_create_by( + Product.find_or_create_by( name: "Annual subscription", - description: "An annual subscription gives you access to paid account features for one year. Does not auto-renew.", + description: "An annual subscription gives you access "\ + "to paid account features for one year. Does not auto-renew.", min_price: 3000, account_type_id: @paid_account.id, paid_months: 12 ) - Product.find_or_create_by( + Product.find_or_create_by( name: "Seed account", - description: "A seed account helps Growstuff grow in its early days. It gives you all the features of a paid account, in perpetuity. This account type never expires.", + description: "A seed account helps Growstuff grow in its "\ + "early days. It gives you all the features of "\ + "a paid account, in perpetuity. This account "\ + "type never expires.", min_price: 15000, account_type_id: @seed_account.id, ) @@ -142,7 +146,7 @@ namespace :growstuff do end puts "Making Skud a staff account..." - @skud = Member.find_by_login_name('Skud') + @skud = Member.find_by(login_name: 'Skud') if @skud @skud.account.account_type = @staff_account @skud.account.save @@ -153,8 +157,7 @@ namespace :growstuff do desc "June 2013: replace nil account_types with free accounts" task nil_account_type: :environment do - - free = AccountType.find_by_name("Free") + free = AccountType.find_by(name: "Free") raise "Free account type not found: run rake growstuff:oneoff:setup_shop"\ unless free Account.all.each do |a| @@ -167,7 +170,6 @@ namespace :growstuff do desc "July 2013: replace nil seed.tradable_to with nowhere" task tradable_to_nowhere: :environment do - Seed.all.each do |s| unless s.tradable_to s.tradable_to = 'nowhere' @@ -178,7 +180,6 @@ namespace :growstuff do desc "August 2013: set up plantings_count cache on crop" task reset_crop_plantings_count: :environment do - Crop.find_each do |c| Crop.reset_counters c.id, :plantings end @@ -186,10 +187,9 @@ namespace :growstuff do desc "August 2013: set default creator on existing crops" task set_default_crop_creator: :environment do - - cropbot = Member.find_by_login_name("cropbot") + cropbot = Member.find_by(login_name: "cropbot") raise "cropbot not found: create cropbot member on site or run rake db:seed" unless cropbot - cropbot.account.account_type = AccountType.find_by_name("Staff") # set this just because it's nice + cropbot.account.account_type = AccountType.find_by(name: "Staff") # set this just because it's nice cropbot.account.save Crop.find_each do |crop| unless crop.creator @@ -203,7 +203,6 @@ namespace :growstuff do sn.save end end - end desc "August 2013: set planting owner" @@ -295,13 +294,11 @@ namespace :growstuff do require 'csv' file = "db/seeds/alternate_names_201410.csv" puts "Loading alternate names from #{file}..." - cropbot = Member.find_by_login_name("cropbot") + cropbot = Member.find_by(login_name: "cropbot") CSV.foreach(file) do |row| - crop_id, crop_name, alternate_names = row - if alternate_names.blank? then - next - end - crop = Crop.find_by_name(crop_name) + _crop_id, crop_name, alternate_names = row + next if alternate_names.blank? + crop = Crop.find_by(name: crop_name) if crop alternate_names.split(/,\s*/).each do |an| AlternateName.where( @@ -329,5 +326,4 @@ namespace :growstuff do Crop.import end end # end oneoff section - end diff --git a/lib/tasks/hooks.rake b/lib/tasks/hooks.rake index 93d599831..7543404b2 100644 --- a/lib/tasks/hooks.rake +++ b/lib/tasks/hooks.rake @@ -1,5 +1,5 @@ desc "Install git hooks" task :hooks do - FileUtils.symlink '../../script/pre-commit.sh', '.git/hooks/pre-commit', - force: true + FileUtils.symlink '../../script/pre-commit.sh', '.git/hooks/pre-commit', + force: true end diff --git a/lib/tasks/i18n.rake b/lib/tasks/i18n.rake new file mode 100644 index 000000000..04fa8001b --- /dev/null +++ b/lib/tasks/i18n.rake @@ -0,0 +1,18 @@ +namespace :i18n do + desc "sort all i18n locale keys" + task :normalize do + `i18n-tasks normalize` + end + + desc "translate haml strings into i18 en locale using haml-i18n-extractor" + task :extractor, [:haml_path] do |_t, args| + require 'haml-i18n-extractor' + haml_path = args[:haml_path] + begin + translate = Haml::I18n::Extractor.new(haml_path) + translate.run + rescue Haml::I18n::Extractor::InvalidSyntax + puts "There was an error with #{haml_path}" + end + end +end diff --git a/lib/tasks/testing.rake b/lib/tasks/testing.rake index a7908d590..b41172efb 100644 --- a/lib/tasks/testing.rake +++ b/lib/tasks/testing.rake @@ -2,7 +2,7 @@ require 'rake' begin require 'rspec/core/rake_task' task(:spec).clear - RSpec::Core::RakeTask.new(spec: 'db:test:prepare') do |t| + RSpec::Core::RakeTask.new(spec: ['db:create', 'db:test:prepare']) do |t| t.verbose = false end rescue LoadError diff --git a/script/check_contributors_md b/script/check_contributors_md index 131daf445..2bf2e6a4e 100755 --- a/script/check_contributors_md +++ b/script/check_contributors_md @@ -28,11 +28,10 @@ Please set it using end end -if !system("grep #{author} CONTRIBUTORS.md") then +unless system('grep', '-i', author, 'CONTRIBUTORS.md') then abort %{ Thanks for your contribution, #{author}! Please add your name and GitHub handle to the file CONTRIBUTORS.md, commit it, and update your PR. } end - diff --git a/script/rails b/script/rails index f8da2cffd..9092f9f3c 100755 --- a/script/rails +++ b/script/rails @@ -1,6 +1,7 @@ #!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. +# This command will automatically be run when you run "rails" +# with Rails 3 gems installed from the root of your application. -APP_PATH = File.expand_path('../../config/application', __FILE__) -require File.expand_path('../../config/boot', __FILE__) +APP_PATH = File.expand_path('../../config/application', __FILE__) +require File.expand_path('../../config/boot', __FILE__) require 'rails/commands' diff --git a/spec/controllers/account_types_controller_spec.rb b/spec/controllers/account_types_controller_spec.rb index eca67cfbc..633311b6e 100644 --- a/spec/controllers/account_types_controller_spec.rb +++ b/spec/controllers/account_types_controller_spec.rb @@ -1,28 +1,22 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe AccountTypesController do - # This automatically creates a "Free" account type login_member(:admin_member) def valid_attributes { "name" => "MyString" } end - end diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index d3ea69f87..66375b292 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe AccountsController do - login_member(:admin_member) def valid_attributes @@ -30,7 +25,6 @@ describe AccountsController do # allowed. This method has been left here in case it's useful in # future. member = FactoryGirl.create(:member) - return member.account + member.account end - end diff --git a/spec/controllers/admin/orders_controller_spec.rb b/spec/controllers/admin/orders_controller_spec.rb index 28fe0203a..07fe22170 100644 --- a/spec/controllers/admin/orders_controller_spec.rb +++ b/spec/controllers/admin/orders_controller_spec.rb @@ -1,38 +1,30 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - - require 'rails_helper' describe Admin::OrdersController do - login_member(:admin_member) describe "GET search" do it "assigns @orders" do order = FactoryGirl.create(:order) - get :search, {search_by: 'order_id', search_text: order.id} + get :search, { search_by: 'order_id', search_text: order.id } assigns(:orders).should eq([order]) end it "sets an error message if nothing found" do - order = FactoryGirl.create(:order) - get :search, {search_by: 'order_id', search_text: 'foo'} + get :search, { search_by: 'order_id', search_text: 'foo' } flash[:alert].should match /Couldn't find order with/ end end - end diff --git a/spec/controllers/admin_controller_spec.rb b/spec/controllers/admin_controller_spec.rb index d939b9f6b..0b36fe583 100644 --- a/spec/controllers/admin_controller_spec.rb +++ b/spec/controllers/admin_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe AdminController do - login_member(:admin_member) describe "GET admin/newsletter" do diff --git a/spec/controllers/authentications_controller_spec.rb b/spec/controllers/authentications_controller_spec.rb index e3dd39447..47be30487 100644 --- a/spec/controllers/authentications_controller_spec.rb +++ b/spec/controllers/authentications_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe AuthenticationsController do - before(:each) do @member = FactoryGirl.create(:member) sign_in @member @@ -30,5 +25,4 @@ describe AuthenticationsController do 'credentials' => { 'token' => 'blah', 'secret' => 'blah' } } end - end diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb index 3e60a642b..01d41e7b7 100644 --- a/spec/controllers/comments_controller_spec.rb +++ b/spec/controllers/comments_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe CommentsController do - before(:each) do @member = FactoryGirl.create(:member) sign_in @member @@ -41,14 +36,14 @@ describe CommentsController do describe "GET new" do it "picks up post from params" do post = FactoryGirl.create(:post) - get :new, {post_id: post.id} + get :new, { post_id: post.id } assigns(:post).should eq(post) end it "assigns the old comments as @comments" do post = FactoryGirl.create(:post) old_comment = FactoryGirl.create(:comment, post: post) - get :new, {post_id: post.id} + get :new, { post_id: post.id } assigns(:comments).should eq [old_comment] end @@ -63,7 +58,7 @@ describe CommentsController do post = FactoryGirl.create(:post) old_comment = FactoryGirl.create(:comment, post: post) comment = FactoryGirl.create(:comment, post: post, author: @member) - get :edit, {id: comment.to_param} + get :edit, { id: comment.to_param } assigns(:comments).should eq([comment, old_comment]) end end @@ -72,7 +67,7 @@ describe CommentsController do describe "with valid params" do it "redirects to the comment's post" do comment = Comment.create! valid_attributes - put :update, {id: comment.to_param, comment: valid_attributes} + put :update, { id: comment.to_param, comment: valid_attributes } response.should redirect_to(comment.post) end end @@ -82,9 +77,8 @@ describe CommentsController do it "redirects to the post the comment was on" do comment = Comment.create! valid_attributes post = comment.post - delete :destroy, {id: comment.to_param} + delete :destroy, { id: comment.to_param } response.should redirect_to(post) end end - end diff --git a/spec/controllers/crops_controller_spec.rb b/spec/controllers/crops_controller_spec.rb index 894858057..9a0a1dcdc 100644 --- a/spec/controllers/crops_controller_spec.rb +++ b/spec/controllers/crops_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe CropsController do - login_member(:crop_wrangling_member) def valid_attributes @@ -61,5 +56,4 @@ describe CropsController do response.content_type.should eq("application/rss+xml") end end - end diff --git a/spec/controllers/forums_controller_spec.rb b/spec/controllers/forums_controller_spec.rb index 6d52321a5..f320204e2 100644 --- a/spec/controllers/forums_controller_spec.rb +++ b/spec/controllers/forums_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe ForumsController do - login_member(:admin_member) def valid_attributes @@ -31,5 +26,4 @@ describe ForumsController do def valid_session {} end - end diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index 4e9d0fc1c..790e1f8be 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -1,28 +1,22 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe GardensController do - login_member def valid_attributes member = FactoryGirl.create(:member) - {name: 'My Garden', owner_id: member.id } + { name: 'My Garden', owner_id: member.id } end - end diff --git a/spec/controllers/harvests_controller_spec.rb b/spec/controllers/harvests_controller_spec.rb index 80822c564..b07f1c08a 100644 --- a/spec/controllers/harvests_controller_spec.rb +++ b/spec/controllers/harvests_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe HarvestsController do - login_member def valid_attributes @@ -36,7 +31,7 @@ describe HarvestsController do @maize = FactoryGirl.create(:maize) @harvest1 = FactoryGirl.create(:harvest, owner_id: @member1.id, crop_id: @tomato.id) @harvest2 = FactoryGirl.create(:harvest, owner_id: @member2.id, crop_id: @maize.id) - end + end it "assigns all harvests as @harvests" do get :index, {} @@ -44,27 +39,27 @@ describe HarvestsController do end it "picks up owner from params and shows owner's harvests only" do - get :index, {owner: @member1.slug} + get :index, { owner: @member1.slug } assigns(:owner).should eq @member1 assigns(:harvests).should eq [@harvest1] end it "picks up crop from params and shows the harvests for the crop only" do - get :index, {crop: @maize.name} + get :index, { crop: @maize.name } assigns(:crop).should eq @maize assigns(:harvests).should eq [@harvest2] end it "generates a csv" do - get :index, {format: "csv"} - response.status.should eq 200 + get :index, { format: "csv" } + response.status.should eq 200 end end describe "GET show" do it "assigns the requested harvest as @harvest" do harvest = Harvest.create! valid_attributes - get :show, {id: harvest.to_param} + get :show, { id: harvest.to_param } assigns(:harvest).should eq(harvest) end end @@ -79,7 +74,7 @@ describe HarvestsController do describe "GET edit" do it "assigns the requested harvest as @harvest" do harvest = Harvest.create! valid_attributes - get :edit, {id: harvest.to_param} + get :edit, { id: harvest.to_param } assigns(:harvest).should eq(harvest) end end @@ -88,18 +83,18 @@ describe HarvestsController do describe "with valid params" do it "creates a new Harvest" do expect { - post :create, {harvest: valid_attributes} + post :create, { harvest: valid_attributes } }.to change(Harvest, :count).by(1) end it "assigns a newly created harvest as @harvest" do - post :create, {harvest: valid_attributes} + post :create, { harvest: valid_attributes } assigns(:harvest).should be_a(Harvest) assigns(:harvest).should be_persisted end it "redirects to the created harvest" do - post :create, {harvest: valid_attributes} + post :create, { harvest: valid_attributes } response.should redirect_to(Harvest.last) end end @@ -108,14 +103,14 @@ describe HarvestsController do it "assigns a newly created but unsaved harvest as @harvest" do # Trigger the behavior that occurs when invalid params are submitted Harvest.any_instance.stub(:save).and_return(false) - post :create, {harvest: { "crop_id" => "invalid value" }} + post :create, { harvest: { "crop_id" => "invalid value" } } assigns(:harvest).should be_a_new(Harvest) end it "re-renders the 'new' template" do # Trigger the behavior that occurs when invalid params are submitted Harvest.any_instance.stub(:save).and_return(false) - post :create, {harvest: { "crop_id" => "invalid value" }} + post :create, { harvest: { "crop_id" => "invalid value" } } response.should render_template("new") end end @@ -130,18 +125,18 @@ describe HarvestsController do # receives the :update message with whatever params are # submitted in the request. Harvest.any_instance.should_receive(:update).with({ "crop_id" => "1" }) - put :update, {id: harvest.to_param, harvest: { "crop_id" => "1" }} + put :update, { id: harvest.to_param, harvest: { "crop_id" => "1" } } end it "assigns the requested harvest as @harvest" do harvest = Harvest.create! valid_attributes - put :update, {id: harvest.to_param, harvest: valid_attributes} + put :update, { id: harvest.to_param, harvest: valid_attributes } assigns(:harvest).should eq(harvest) end it "redirects to the harvest" do harvest = Harvest.create! valid_attributes - put :update, {id: harvest.to_param, harvest: valid_attributes} + put :update, { id: harvest.to_param, harvest: valid_attributes } response.should redirect_to(harvest) end end @@ -151,7 +146,7 @@ describe HarvestsController do harvest = Harvest.create! valid_attributes # Trigger the behavior that occurs when invalid params are submitted Harvest.any_instance.stub(:save).and_return(false) - put :update, {id: harvest.to_param, harvest: { "crop_id" => "invalid value" }} + put :update, { id: harvest.to_param, harvest: { "crop_id" => "invalid value" } } assigns(:harvest).should eq(harvest) end @@ -159,7 +154,7 @@ describe HarvestsController do harvest = Harvest.create! valid_attributes # Trigger the behavior that occurs when invalid params are submitted Harvest.any_instance.stub(:save).and_return(false) - put :update, {id: harvest.to_param, harvest: { "crop_id" => "invalid value" }} + put :update, { id: harvest.to_param, harvest: { "crop_id" => "invalid value" } } response.should render_template("edit") end end @@ -169,15 +164,14 @@ describe HarvestsController do it "destroys the requested harvest" do harvest = Harvest.create! valid_attributes expect { - delete :destroy, {id: harvest.to_param} + delete :destroy, { id: harvest.to_param } }.to change(Harvest, :count).by(-1) end it "redirects to the harvests list" do harvest = Harvest.create! valid_attributes - delete :destroy, {id: harvest.to_param} + delete :destroy, { id: harvest.to_param } response.should redirect_to(harvests_url) end end - end diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb index 8d4aa3569..eb71e1f4a 100644 --- a/spec/controllers/home_controller_spec.rb +++ b/spec/controllers/home_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe HomeController do - describe "GET index" do end end diff --git a/spec/controllers/member_controller_spec.rb b/spec/controllers/member_controller_spec.rb index be178341e..735a4c825 100644 --- a/spec/controllers/member_controller_spec.rb +++ b/spec/controllers/member_controller_spec.rb @@ -1,26 +1,21 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe MembersController do - before :each do @member = FactoryGirl.create(:member) - @posts = [ FactoryGirl.create(:post, author: @member) ] + @posts = [FactoryGirl.create(:post, author: @member)] @twitter_auth = FactoryGirl.create(:authentication, member: @member) @flickr_auth = FactoryGirl.create(:flickr_authentication, member: @member) end @@ -40,36 +35,34 @@ describe MembersController do end describe "GET show" do - it "provides JSON for member profile" do - get :show, { id: @member.id , format: 'json' } + get :show, { id: @member.id, format: 'json' } response.should be_success end it "assigns @posts with the member's posts" do - get :show, {id: @member.id} + get :show, { id: @member.id } assigns(:posts).should eq(@posts) end it "assigns @twitter_auth" do - get :show, {id: @member.id} + get :show, { id: @member.id } assigns(:twitter_auth).should eq(@twitter_auth) end it "assigns @flickr_auth" do - get :show, {id: @member.id} + get :show, { id: @member.id } assigns(:flickr_auth).should eq(@flickr_auth) end it "doesn't show completely nonsense members" do - lambda { get :show, {id: 9999} }.should raise_error(ActiveRecord::RecordNotFound) + lambda { get :show, { id: 9999 } }.should raise_error(ActiveRecord::RecordNotFound) end it "doesn't show unconfirmed members" do @member2 = FactoryGirl.create(:unconfirmed_member) - lambda { get :show, {id: @member2.id} }.should raise_error(ActiveRecord::RecordNotFound) + lambda { get :show, { id: @member2.id } }.should raise_error(ActiveRecord::RecordNotFound) end - end describe "GET member's RSS feed" do @@ -80,5 +73,4 @@ describe MembersController do response.content_type.should eq("application/rss+xml") end end - end diff --git a/spec/controllers/notifications_controller_spec.rb b/spec/controllers/notifications_controller_spec.rb index a7737dad2..2231edaad 100644 --- a/spec/controllers/notifications_controller_spec.rb +++ b/spec/controllers/notifications_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe NotificationsController do - login_member def valid_attributes @@ -56,14 +51,14 @@ describe NotificationsController do describe "GET show" do it "assigns the requested notification as @notification" do notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) - get :show, {id: notification.to_param} + get :show, { id: notification.to_param } assigns(:notification).should eq(notification) end it "assigns the reply link for a post comment" do notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) - get :show, {id: notification.to_param} + get :show, { id: notification.to_param } assigns(:reply_link).should_not be_nil assigns(:reply_link).should eq new_comment_url( post_id: notification.post.id @@ -72,7 +67,7 @@ describe NotificationsController do it "marks notifications as read" do notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) - get :show, {id: notification.to_param} + get :show, { id: notification.to_param } # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) n.read.should eq true @@ -81,8 +76,8 @@ describe NotificationsController do describe "GET reply" do it "marks notifications as read" do - notification = FactoryGirl.create(:notification, :recipient_id => subject.current_member.id) - get :reply, {:id => notification.to_param} + notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + get :reply, { id: notification.to_param } # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) n.read.should eq true @@ -92,7 +87,7 @@ describe NotificationsController do describe "GET new" do it "assigns a recipient" do @recipient = FactoryGirl.create(:member) - get :new, {recipient_id: @recipient.id } + get :new, { recipient_id: @recipient.id } assigns(:recipient).should be_an_instance_of(Member) end end @@ -105,6 +100,5 @@ describe NotificationsController do response.should redirect_to(notifications_path) end end - end end diff --git a/spec/controllers/order_items_controller_spec.rb b/spec/controllers/order_items_controller_spec.rb index f081c85b7..d455cbe9b 100644 --- a/spec/controllers/order_items_controller_spec.rb +++ b/spec/controllers/order_items_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe OrderItemsController do - login_member(:admin_member) before(:each) do @@ -33,14 +28,13 @@ describe OrderItemsController do end describe "POST create" do - it "redirects to order" do @order = FactoryGirl.create(:order, member: @member) - post :create, {order_item: { + post :create, { order_item: { order_id: @order.id, product_id: @product.id, price: @product.min_price - }} + } } response.should redirect_to(OrderItem.last.order) end @@ -49,10 +43,10 @@ describe OrderItemsController do sign_in @member @product = FactoryGirl.create(:product) expect { - post :create, {order_item: { + post :create, { order_item: { product_id: @product.id, price: @product.min_price - }} + } } }.to change(Order, :count).by(1) OrderItem.last.order.should be_an_instance_of Order end @@ -62,11 +56,11 @@ describe OrderItemsController do @order = FactoryGirl.create(:order, member: @member) @product = FactoryGirl.create(:product, min_price: 1) expect { - post :create, {order_item: { + post :create, { order_item: { order_id: @order.id, product_id: @product.id, price: 3.33 - }} + } } }.to change(OrderItem, :count).by(1) OrderItem.last.price.should eq 333 end diff --git a/spec/controllers/orders_controller_spec.rb b/spec/controllers/orders_controller_spec.rb index 81e74a5b5..78bc0b99a 100644 --- a/spec/controllers/orders_controller_spec.rb +++ b/spec/controllers/orders_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe OrdersController do - login_member(:admin_member) def valid_attributes @@ -33,7 +28,7 @@ describe OrdersController do member = FactoryGirl.create(:member) sign_in member order = Order.create!(member_id: member.id) - get :checkout, {id: order.to_param, referral_code: 'FOOBAR'} + get :checkout, { id: order.to_param, referral_code: 'FOOBAR' } order.reload order.referral_code.should eq 'FOOBAR' end @@ -42,7 +37,7 @@ describe OrdersController do member = FactoryGirl.create(:member) sign_in member order = Order.create!(member_id: member.id) - get :checkout, {id: order.to_param} + get :checkout, { id: order.to_param } response.status.should eq 302 response.redirect_url.should match /paypal\.com/ end @@ -53,7 +48,7 @@ describe OrdersController do member = FactoryGirl.create(:member) sign_in member order = Order.create!(member_id: member.id) - get :complete, {id: order.to_param} + get :complete, { id: order.to_param } assigns(:order).should eq(order) end end @@ -63,9 +58,8 @@ describe OrdersController do member = FactoryGirl.create(:member) sign_in member order = Order.create!(member_id: member.id) - delete :destroy, {id: order.id} + delete :destroy, { id: order.id } response.should redirect_to(shop_url) end end - end diff --git a/spec/controllers/photos_controller_spec.rb b/spec/controllers/photos_controller_spec.rb index e73ba5317..0197e2009 100644 --- a/spec/controllers/photos_controller_spec.rb +++ b/spec/controllers/photos_controller_spec.rb @@ -1,23 +1,19 @@ +# frozen_string_literal: true ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe PhotosController do - login_member def valid_attributes @@ -53,152 +49,127 @@ describe PhotosController do end it "assigns a planting id" do - get :new, { type: "planting", id: 5 } + get :new, type: "planting", id: 5 assigns(:id).should eq "5" assigns(:type).should eq "planting" + expect(flash[:alert]).not_to be_present end it "assigns a harvest id" do - get :new, { type: "harvest", id: 5 } + get :new, type: "harvest", id: 5 assigns(:id).should eq "5" assigns(:type).should eq "harvest" + expect(flash[:alert]).not_to be_present end it "assigns a garden id" do - get :new, { type: "garden", id: 5 } + get :new, type: "garden", id: 5 assigns(:id).should eq "5" assigns(:type).should eq "garden" + expect(flash[:alert]).not_to be_present end it "assigns the current set as @current_set" do - get :new, { set: 'foo' } + get :new, set: 'foo' assigns(:current_set).should eq "foo" + expect(flash[:alert]).not_to be_present end - end describe "POST create" do before(:each) do - Photo.any_instance.stub(:flickr_metadata).and_return( { - title: "A Heartbreaking work of staggering genius", - license_name: "CC-BY", - license_url: "http://example.com/aybpl", - thumbnail_url: "http://example.com/thumb.jpg", - fullsize_url: "http://example.com/full.jpg", - link_url: "http://example.com" - }) + Photo.any_instance.stub(:flickr_metadata).and_return(title: "A Heartbreaking work of staggering genius", + license_name: "CC-BY", + license_url: "http://example.com/aybpl", + thumbnail_url: "http://example.com/thumb.jpg", + fullsize_url: "http://example.com/full.jpg", + link_url: "http://example.com") end + let(:member) { FactoryGirl.create(:member) } + let(:garden) { FactoryGirl.create(:garden, owner: member) } + let(:planting) { FactoryGirl.create(:planting, garden: garden, owner: member) } + let(:harvest) { FactoryGirl.create(:harvest, owner: member) } + let(:photo) { FactoryGirl.create(:photo, owner: member) } describe "with valid params" do - + before { controller.stub(:current_member) { member } } it "attaches the photo to a planting" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - garden = FactoryGirl.create(:garden, owner: member) - planting = FactoryGirl.create(:planting, garden: garden, owner: member) - photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "planting", - id: planting.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id + expect(flash[:alert]).not_to be_present Photo.last.plantings.first.should eq planting end it "doesn't attach a photo to a planting twice" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - garden = FactoryGirl.create(:garden, owner: member) - planting = FactoryGirl.create(:planting, garden: garden, owner: member) - photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "planting", - id: planting.id } - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "planting", - id: planting.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id + expect(flash[:alert]).not_to be_present Photo.last.plantings.size.should eq 1 end it "attaches the photo to a harvest" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - harvest = FactoryGirl.create(:harvest, owner: member) - photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "harvest", - id: harvest.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id + expect(flash[:alert]).not_to be_present Photo.last.harvests.first.should eq harvest end it "doesn't attach a photo to a harvest twice" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - harvest = FactoryGirl.create(:harvest, owner: member) - photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "harvest", - id: harvest.id } - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "harvest", - id: harvest.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id + expect(flash[:alert]).not_to be_present Photo.last.harvests.size.should eq 1 + end + + it "doesn't attach photo to a comment" do + comment = FactoryGirl.create(:comment) + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "comment", id: comment.id + expect(flash[:alert]).to be_present + end end - end describe "for the second time" do it "does not add a photo twice" do - expect { - post :create, {photo: { flickr_photo_id: 1 } } - }.to change(Photo, :count).by(1) - expect { - post :create, {photo: { flickr_photo_id: 1 } } - }.to change(Photo, :count).by(0) + expect do + post :create, photo: { flickr_photo_id: 1 } + end.to change(Photo, :count).by(1) + expect do + post :create, photo: { flickr_photo_id: 1 } + end.to change(Photo, :count).by(0) end end describe "with matching owners" do + before { controller.stub(:current_member) { member } } it "creates the planting/photo link" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - garden = FactoryGirl.create(:garden, owner: member) planting = FactoryGirl.create(:planting, garden: garden, owner: member) photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "planting", - id: planting.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id + expect(flash[:alert]).not_to be_present Photo.last.plantings.first.should eq planting end it "creates the harvest/photo link" do - member = FactoryGirl.create(:member) - controller.stub(:current_member) { member } - harvest = FactoryGirl.create(:harvest, owner: member) - photo = FactoryGirl.create(:photo, owner: member) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "harvest", - id: harvest.id } + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: harvest.id + expect(flash[:alert]).not_to be_present Photo.last.harvests.first.should eq harvest end end describe "with mismatched owners" do - it "creates the planting/photo link" do + let(:photo) { FactoryGirl.create(:photo) } + it "does not create the planting/photo link" do # members will be auto-created, and different - planting = FactoryGirl.create(:planting) - photo = FactoryGirl.create(:photo) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "planting", - id: planting.id } - Photo.last.plantings.first.should_not eq planting + another_planting = FactoryGirl.create(:planting) + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: another_planting.id + expect(flash[:alert]).to be_present + Photo.last.plantings.first.should_not eq another_planting end - it "creates the harvest/photo link" do + it "does not create the harvest/photo link" do # members will be auto-created, and different - harvest = FactoryGirl.create(:harvest) - photo = FactoryGirl.create(:photo) - post :create, {photo: { flickr_photo_id: photo.flickr_photo_id }, - type: "harvest", - id: harvest.id } - Photo.last.harvests.first.should_not eq harvest + another_harvest = FactoryGirl.create(:harvest) + post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: another_harvest.id + expect(flash[:alert]).to be_present + Photo.last.harvests.first.should_not eq another_harvest end end end diff --git a/spec/controllers/places_controller_spec.rb b/spec/controllers/places_controller_spec.rb index 4c8c34d3c..e635d82b3 100644 --- a/spec/controllers/places_controller_spec.rb +++ b/spec/controllers/places_controller_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe PlacesController do @@ -36,7 +32,6 @@ describe PlacesController do get :show, { place: @member_london.location } assigns(:nearby_members).should eq [@member_london, @member_south_pole] end - end describe "GET search" do diff --git a/spec/controllers/plant_parts_controller_spec.rb b/spec/controllers/plant_parts_controller_spec.rb index 75b2ad53d..239422efa 100644 --- a/spec/controllers/plant_parts_controller_spec.rb +++ b/spec/controllers/plant_parts_controller_spec.rb @@ -1,21 +1,16 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe PlantPartsController do - end diff --git a/spec/controllers/plantings_controller_spec.rb b/spec/controllers/plantings_controller_spec.rb index 68514b634..f51086114 100644 --- a/spec/controllers/plantings_controller_spec.rb +++ b/spec/controllers/plantings_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe PlantingsController do - login_member def valid_attributes @@ -32,34 +27,33 @@ describe PlantingsController do @member1 = FactoryGirl.create(:member) @member2 = FactoryGirl.create(:member) @tomato = FactoryGirl.create(:tomato) - @maize = FactoryGirl.create(:maize) + @maize = FactoryGirl.create(:maize) @planting1 = FactoryGirl.create(:planting, crop: @tomato, owner: @member1) @planting2 = FactoryGirl.create(:planting, crop: @maize, owner: @member2) end - + it "assigns all plantings as @plantings" do get :index, {} assigns(:plantings).should =~ [@planting1, @planting2] end it "picks up owner from params and shows owner's plantings only" do - get :index, {owner: @member1.slug} + get :index, { owner: @member1.slug } assigns(:owner).should eq @member1 assigns(:plantings).should eq [@planting1] end it "picks up crop from params and shows the plantings for the crop only" do - get :index, {crop: @maize.name} + get :index, { crop: @maize.name } assigns(:crop).should eq @maize - assigns(:plantings).should eq [@planting2] + assigns(:plantings).should eq [@planting2] end end describe "GET new" do - it "picks up crop from params" do crop = FactoryGirl.create(:crop) - get :new, {crop_id: crop.id} + get :new, { crop_id: crop.id } assigns(:crop).should eq(crop) end @@ -71,7 +65,7 @@ describe PlantingsController do it "picks up garden from params" do member = FactoryGirl.create(:member) garden = FactoryGirl.create(:garden, owner: member) - get :new, {garden_id: garden.id} + get :new, { garden_id: garden.id } assigns(:garden).should eq(garden) end @@ -89,7 +83,5 @@ describe PlantingsController do post :create, { planting: valid_attributes } assigns(:planting).owner.should eq subject.current_member end - end - end diff --git a/spec/controllers/posts_controller_spec.rb b/spec/controllers/posts_controller_spec.rb index b53a67f40..1c26cfe12 100644 --- a/spec/controllers/posts_controller_spec.rb +++ b/spec/controllers/posts_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe PostsController do - login_member def valid_attributes @@ -43,5 +38,4 @@ describe PostsController do response.content_type.should eq("application/rss+xml") end end - end diff --git a/spec/controllers/products_controller_spec.rb b/spec/controllers/products_controller_spec.rb index f8ca75083..63c17aa66 100644 --- a/spec/controllers/products_controller_spec.rb +++ b/spec/controllers/products_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe ProductsController do - login_member(:admin_member) def valid_attributes @@ -31,5 +26,4 @@ describe ProductsController do def valid_session {} end - end diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index ac9990254..56d277b75 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe RegistrationsController do - before :each do @member = FactoryGirl.create(:member) sign_in @member @@ -43,5 +38,4 @@ describe RegistrationsController do assigns(:flickr_auth).should eq @auth end end - end diff --git a/spec/controllers/robots_controller_spec.rb b/spec/controllers/robots_controller_spec.rb index 16220cfe2..e8917aa29 100644 --- a/spec/controllers/robots_controller_spec.rb +++ b/spec/controllers/robots_controller_spec.rb @@ -6,7 +6,7 @@ describe RobotsController do let(:staging_filename) { 'config/robots.staging.txt' } before do - @request.host = "#{ subdomain }.localhost.com" + @request.host = "#{subdomain}.localhost.com" end context 'subdomain is staging' do diff --git a/spec/controllers/roles_controller_spec.rb b/spec/controllers/roles_controller_spec.rb index 7a5e5fce8..5c2271bce 100644 --- a/spec/controllers/roles_controller_spec.rb +++ b/spec/controllers/roles_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe RolesController do - def valid_attributes { "name" => "MyString" } end @@ -29,8 +24,7 @@ describe RolesController do role = Role.create! valid_attributes get :index, {} # note that admin role exists because of login_admin_member - assigns(:roles).should eq([Role.find_by_name('admin'), role]) + assigns(:roles).should eq([Role.find_by(name: 'admin'), role]) end end - end diff --git a/spec/controllers/scientific_names_controller_spec.rb b/spec/controllers/scientific_names_controller_spec.rb index ab40494fb..c134a35a1 100644 --- a/spec/controllers/scientific_names_controller_spec.rb +++ b/spec/controllers/scientific_names_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe ScientificNamesController do - login_member(:crop_wrangling_member) before(:each) do @@ -25,7 +20,7 @@ describe ScientificNamesController do end def valid_attributes - { scientific_name: 'Solanum lycopersicum', crop_id: @crop.id } + { name: 'Solanum lycopersicum', crop_id: @crop.id } end describe "GET new" do @@ -33,6 +28,5 @@ describe ScientificNamesController do get :new, { crop_id: 1 } assigns(:crop).should be_an_instance_of Crop end - end end diff --git a/spec/controllers/seeds_controller_spec.rb b/spec/controllers/seeds_controller_spec.rb index bfb880477..b17a948c4 100644 --- a/spec/controllers/seeds_controller_spec.rb +++ b/spec/controllers/seeds_controller_spec.rb @@ -1,26 +1,22 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe SeedsController do describe "GET index" do it "picks up owner from params" do owner = FactoryGirl.create(:member) - get :index, {owner: owner.slug} + get :index, { owner: owner.slug } assigns(:owner).should eq(owner) end end diff --git a/spec/controllers/shop_controller_spec.rb b/spec/controllers/shop_controller_spec.rb index a02d4fbad..82b07a4b4 100644 --- a/spec/controllers/shop_controller_spec.rb +++ b/spec/controllers/shop_controller_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe ShopController do - before :each do @product1 = FactoryGirl.create(:product) @product2 = FactoryGirl.create(:product) @@ -46,7 +41,5 @@ describe ShopController do get :index, {} assigns(:order).should eq @order end - end - end diff --git a/spec/custom_matchers.rb b/spec/custom_matchers.rb index 6d52388bb..1cb9d61ab 100644 --- a/spec/custom_matchers.rb +++ b/spec/custom_matchers.rb @@ -1,6 +1,6 @@ require 'rspec/expectations' -RSpec::Matchers.define :have_optional do | expected | +RSpec::Matchers.define :have_optional do |expected| match do |actual| actual.has_selector? "#{expected} + span", text: '(Optional)' end diff --git a/spec/factories/account_types.rb b/spec/factories/account_types.rb index 832ddf0ce..0187a9e3d 100644 --- a/spec/factories/account_types.rb +++ b/spec/factories/account_types.rb @@ -24,5 +24,4 @@ FactoryGirl.define do is_permanent_paid true end end - end diff --git a/spec/factories/comments.rb b/spec/factories/comments.rb index b1a88a7a6..85dca1b4c 100644 --- a/spec/factories/comments.rb +++ b/spec/factories/comments.rb @@ -2,7 +2,7 @@ FactoryGirl.define do factory :comment do post author - sequence(:body) { |n| "OMG LOL #{n}" } # because our commenters are more - # polite than YouTube's + sequence(:body) { |n| "OMG LOL #{n}" } + # because our commenters are more polite than YouTube's end end diff --git a/spec/factories/crop.rb b/spec/factories/crop.rb index c2ba35046..6467cb813 100644 --- a/spec/factories/crop.rb +++ b/spec/factories/crop.rb @@ -1,5 +1,4 @@ FactoryGirl.define do - factory :crop do name "magic bean" en_wikipedia_url "http://en.wikipedia.org/wiki/Magic_bean" @@ -54,12 +53,12 @@ FactoryGirl.define do factory :uppercasecrop do name "Swiss chard" end - + factory :autoloaded_crop do creator "cropbot" end - #for testing crop request + # for testing crop request factory :crop_request do name "Ultra berry" en_wikipedia_url "" @@ -73,7 +72,5 @@ FactoryGirl.define do approval_status "rejected" reason_for_rejection "Totally fake" end - end - end diff --git a/spec/factories/follows.rb b/spec/factories/follows.rb index 6de32b7a1..f54acc0e8 100644 --- a/spec/factories/follows.rb +++ b/spec/factories/follows.rb @@ -1,7 +1,6 @@ FactoryGirl.define do factory :follow do - follower + follower followed end - end diff --git a/spec/factories/garden.rb b/spec/factories/garden.rb index 8730c079c..8d6429e2a 100644 --- a/spec/factories/garden.rb +++ b/spec/factories/garden.rb @@ -20,6 +20,5 @@ FactoryGirl.define do factory :garden_z do name 'Zzzz this garden makes me sleepy' end - end end diff --git a/spec/factories/member.rb b/spec/factories/member.rb index b8b23a58a..0888edabb 100644 --- a/spec/factories/member.rb +++ b/spec/factories/member.rb @@ -49,23 +49,23 @@ FactoryGirl.define do factory :edinburgh_member do location 'Edinburgh' latitude 55.953252 - longitude -3.188267 + longitude { -3.188267 } end factory :south_pole_member do sequence(:login_name) { |n| "ScottRF#{n}" } location 'Amundsen-Scott Base, Antarctica' - latitude -90 + latitude { -90 } longitude 0 end factory :admin_member do - roles { [ FactoryGirl.create(:admin) ] } + roles { [FactoryGirl.create(:admin)] } end factory :crop_wrangling_member do - roles { [ FactoryGirl.create(:crop_wrangler) ] } - sequence(:login_name) {|n| "wrangler#{n}"} + roles { [FactoryGirl.create(:crop_wrangler)] } + sequence(:login_name) { |n| "wrangler#{n}" } end factory :invalid_member_shortname do @@ -103,7 +103,5 @@ FactoryGirl.define do factory :no_email_notifications_member do send_notification_email false end - end - end diff --git a/spec/factories/post.rb b/spec/factories/post.rb index d9e6e0be5..562912214 100644 --- a/spec/factories/post.rb +++ b/spec/factories/post.rb @@ -1,5 +1,4 @@ FactoryGirl.define do - factory :post do subject "A Post" body "This is some text." @@ -20,5 +19,4 @@ FactoryGirl.define do forum end end - end diff --git a/spec/factories/scientific_name.rb b/spec/factories/scientific_name.rb index 43d9ad74a..4584cebf8 100644 --- a/spec/factories/scientific_name.rb +++ b/spec/factories/scientific_name.rb @@ -1,18 +1,17 @@ FactoryGirl.define do factory :scientific_name do association :crop, factory: :crop - scientific_name "Beanus Magicus" + name "Beanus Magicus" creator factory :zea_mays do association :crop, factory: :maize - scientific_name "Zea mays" + name "Zea mays" end factory :solanum_lycopersicum do association :crop, factory: :tomato - scientific_name "Solanum lycopersicum" + name "Solanum lycopersicum" end - end end diff --git a/spec/features/admin/forums_spec.rb b/spec/features/admin/forums_spec.rb index a385289a6..1ff1398a4 100644 --- a/spec/features/admin/forums_spec.rb +++ b/spec/features/admin/forums_spec.rb @@ -4,7 +4,7 @@ feature "forums", js: true do context "as an admin user" do let(:member) { create :admin_member } let(:forum) { create :forum } - + background do login_as member end diff --git a/spec/features/admin/products_spec.rb b/spec/features/admin/products_spec.rb index 0fc9bdb5a..ca24daf83 100644 --- a/spec/features/admin/products_spec.rb +++ b/spec/features/admin/products_spec.rb @@ -4,7 +4,7 @@ feature "products" do context "admin user" do let(:member) { create :admin_member } let(:product) { create :product } - + background do login_as member end @@ -20,7 +20,8 @@ feature "products" do click_link "New Product" expect(current_path).to eq new_product_path fill_in 'Name', with: 'Special offer' - # note that failing to fill in a mandatory field has a messy error. This is not a priority defect but should be raised at some point. + # note that failing to fill in a mandatory field has a messy error. + # This is not a priority defect but should be raised at some point. fill_in 'Minimum price', with: '150' click_button 'Save' expect(current_path).to eq product_path(Product.last) diff --git a/spec/features/cms_spec.rb b/spec/features/cms_spec.rb index ad10acd12..768806e59 100644 --- a/spec/features/cms_spec.rb +++ b/spec/features/cms_spec.rb @@ -23,4 +23,4 @@ feature "cms admin" do visit comfy_admin_cms_path expect(current_path).to match /#{comfy_admin_cms_path}/ # match any CMS admin page end -end \ No newline at end of file +end diff --git a/spec/features/comments/commenting_a_comment_spec.rb b/spec/features/comments/commenting_a_comment_spec.rb index 49183c274..4d7c956bd 100644 --- a/spec/features/comments/commenting_a_comment_spec.rb +++ b/spec/features/comments/commenting_a_comment_spec.rb @@ -30,4 +30,4 @@ feature 'Commenting on a post' do expect(page).to have_content "edited at" end end -end \ No newline at end of file +end diff --git a/spec/features/crops/alternate_name_spec.rb b/spec/features/crops/alternate_name_spec.rb index de8843708..319f4d7e1 100644 --- a/spec/features/crops/alternate_name_spec.rb +++ b/spec/features/crops/alternate_name_spec.rb @@ -42,7 +42,7 @@ feature "Alternate names", js: true do scenario "Crop wranglers can delete alternate names" do visit crop_path(alternate_eggplant.crop) expect(page).to have_link "Delete", - href: alternate_name_path(alternate_eggplant) + href: alternate_name_path(alternate_eggplant) within('.alternate_names') { click_on "Delete" } expect(page.status_code).to equal 200 expect(page).to_not have_content alternate_eggplant.name @@ -52,7 +52,7 @@ feature "Alternate names", js: true do scenario "Crop wranglers can add alternate names" do visit crop_path(crop) expect(page).to have_link "Add", - href: new_alternate_name_path(crop_id: crop.id) + href: new_alternate_name_path(crop_id: crop.id) within('.alternate_names') { click_on "Add" } expect(page.status_code).to equal 200 expect(page).to have_css "option[value='#{crop.id}'][selected=selected]" diff --git a/spec/features/crops/browse_crops_spec.rb b/spec/features/crops/browse_crops_spec.rb index 1345d8738..72e63c8fd 100644 --- a/spec/features/crops/browse_crops_spec.rb +++ b/spec/features/crops/browse_crops_spec.rb @@ -1,10 +1,9 @@ require 'rails_helper' feature "browse crops" do - let(:tomato) { create :tomato } let(:maize) { create :maize } - let(:pending_crop) { create :crop_request } + let(:pending_crop) { create :crop_request } let(:rejected_crop) { create :rejected_crop } scenario "has a form for sorting by" do diff --git a/spec/features/crops/creating_a_crop_spec.rb b/spec/features/crops/creating_a_crop_spec.rb index d234818b8..b97866fd8 100644 --- a/spec/features/crops/creating_a_crop_spec.rb +++ b/spec/features/crops/creating_a_crop_spec.rb @@ -31,4 +31,4 @@ feature "Crop - " do expect(page).to have_content "Jasminum sambac 2" expect(page).to have_content "Matsurika" end -end \ No newline at end of file +end diff --git a/spec/features/crops/crop_detail_page_spec.rb b/spec/features/crops/crop_detail_page_spec.rb index d48d60f41..cf2d3f502 100644 --- a/spec/features/crops/crop_detail_page_spec.rb +++ b/spec/features/crops/crop_detail_page_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' feature "crop detail page", js: true do let(:crop) { create :crop } - + subject { visit crop_path(crop) } context "varieties" do @@ -35,7 +35,6 @@ feature "crop detail page", js: true do let!(:roma4) { create :crop, name: 'Roma tomato 4', parent: crop } scenario "The crop has 4 varieties" do - subject within ".varieties" do @@ -52,7 +51,6 @@ feature "crop detail page", js: true do subject within ".varieties" do - # It lists the first 5 items (note: including the top level item.) # It HAS have "Show all" toggle link but not "Show less" link expect(page).to have_selector('li', text: /tomato/i, count: 5) @@ -96,7 +94,6 @@ feature "crop detail page", js: true do end context "action buttons" do - background { subject } scenario "has a link to plant the crop" do @@ -108,34 +105,41 @@ feature "crop detail page", js: true do scenario "has a link to add seeds" do expect(page).to have_link "Add seeds to stash", href: new_seed_path(crop_id: crop.id) end - end context "SEO" do - background { subject } scenario "has seed heading with SEO" do - expect(page).to have_content "Find #{ crop.name } seeds" + expect(page).to have_content "Find #{crop.name} seeds" end scenario "has harvest heading with SEO" do - expect(page).to have_content "#{ crop.name.capitalize } harvests" + expect(page).to have_content "#{crop.name.capitalize} harvests" end scenario "has planting heading with SEO" do - expect(page).to have_content "See who's planted #{ crop.name.pluralize }" + expect(page).to have_content "See who's planted #{crop.name.pluralize}" end scenario "has planting advice with SEO" do - expect(page).to have_content "How to grow #{ crop.name }" + expect(page).to have_content "How to grow #{crop.name}" end scenario "has a link to Wikipedia with SEO" do - expect(page).to have_content "Learn more about #{ crop.name }" + expect(page).to have_content "Learn more about #{crop.name}" expect(page).to have_link "Wikipedia (English)", href: crop.en_wikipedia_url end + scenario "has a link to OpenFarm" do + expect(page).to have_link "OpenFarm - Growing guide", + href: "https://openfarm.cc/en/crops/#{URI.escape crop.name}" + end + + scenario "has a link to gardenate" do + expect(page).to have_link "Gardenate - Planting reminders", + href: "http://www.gardenate.com/plant/#{URI.escape crop.name}" + end end end diff --git a/spec/features/crops/crop_wranglers_spec.rb b/spec/features/crops/crop_wranglers_spec.rb index 620034fb2..817f01ae7 100644 --- a/spec/features/crops/crop_wranglers_spec.rb +++ b/spec/features/crops/crop_wranglers_spec.rb @@ -62,8 +62,6 @@ feature "crop wranglers", js: true do visit crop_path(rejected_crop) expect(page).to have_content "This crop was rejected for the following reason: Totally fake" end - - end context "signed in non-wrangler" do diff --git a/spec/features/footer_spec.rb b/spec/features/footer_spec.rb index 8a2c21bbd..b7d109773 100644 --- a/spec/features/footer_spec.rb +++ b/spec/features/footer_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' feature "footer", js: true do - before { visit root_path } scenario "footer is on home page" do @@ -12,6 +11,6 @@ feature "footer", js: true do expect(page).to have_selector 'a[href="http://opendefinition.org/ossd/"]' end -# NB: not testing specific content in the footer since I'm going to put them -# in the CMS and they'll be variable. + # NB: not testing specific content in the footer since I'm going to put them + # in the CMS and they'll be variable. end diff --git a/spec/features/gardens_spec.rb b/spec/features/gardens_spec.rb index 90f2f9ed7..78a7c1285 100644 --- a/spec/features/gardens_spec.rb +++ b/spec/features/gardens_spec.rb @@ -46,7 +46,6 @@ feature "Planting a crop", js: true do end context "Clicking edit from the index page" do - background do visit gardens_path end diff --git a/spec/features/harvests/browse_harvests_spec.rb b/spec/features/harvests/browse_harvests_spec.rb index 0b4d07f6a..2a8400c2e 100644 --- a/spec/features/harvests/browse_harvests_spec.rb +++ b/spec/features/harvests/browse_harvests_spec.rb @@ -2,6 +2,7 @@ require 'rails_helper' feature "browse harvests" do let!(:member) { create :member } + let!(:harvest) { create :harvest, owner: member } background do login_as member @@ -10,20 +11,19 @@ feature "browse harvests" do feature 'blank optional fields' do let!(:harvest) { create :harvest, :no_description } - before (:each) do + before(:each) do visit harvests_path end scenario 'read more' do expect(page).not_to have_link "Read more" end - end feature "filled in optional fields" do let!(:harvest) { create :harvest, :long_description } - before (:each) do + before(:each) do visit harvests_path end @@ -31,5 +31,8 @@ feature "browse harvests" do expect(page).to have_link "Read more" end + it 'links to #show' do + expect(page).to have_link harvest.crop.name, href: harvest_path(harvest) + end end end diff --git a/spec/features/locale_spec.rb b/spec/features/locale_spec.rb index 74cf208be..01d164f3c 100644 --- a/spec/features/locale_spec.rb +++ b/spec/features/locale_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' feature "Changing locales", js: true do - after { I18n.locale = :en } scenario "Locale can be set with a query param" do diff --git a/spec/features/member_profile_spec.rb b/spec/features/member_profile_spec.rb index 0551e3873..0c27c7be2 100644 --- a/spec/features/member_profile_spec.rb +++ b/spec/features/member_profile_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' feature "member profile", js: true do - context "signed out member" do let(:member) { create :member } @@ -42,7 +41,6 @@ feature "member profile", js: true do expect(page).not_to have_css("#membermap") expect(page).not_to have_content "See other members" end - end context "email privacy" do @@ -70,7 +68,6 @@ feature "member profile", js: true do end context "activity stats" do - scenario "with no activity" do visit member_path(member) expect(page).to have_content "Activity" @@ -91,7 +88,6 @@ feature "member profile", js: true do expect(page).to have_link "4 seeds", href: seeds_by_owner_path(owner: member) expect(page).to have_link "5 posts", href: posts_by_author_path(author: member) end - end scenario "twitter link" do diff --git a/spec/features/members_list_spec.rb b/spec/features/members_list_spec.rb index 99e15820a..01b6ee8bd 100644 --- a/spec/features/members_list_spec.rb +++ b/spec/features/members_list_spec.rb @@ -27,4 +27,4 @@ feature "members list" do expect(all_links.last).to have_text member1.login_name end end -end \ No newline at end of file +end diff --git a/spec/features/notifications_spec.rb b/spec/features/notifications_spec.rb index 9949a619d..28436a3b2 100644 --- a/spec/features/notifications_spec.rb +++ b/spec/features/notifications_spec.rb @@ -7,10 +7,10 @@ feature "Notifications", :js do context "On existing notification" do let!(:notification) { create :notification, - sender: sender, - recipient: recipient, - body: "Notification body", - post_id: nil + sender: sender, + recipient: recipient, + body: "Notification body", + post_id: nil } background do @@ -49,4 +49,4 @@ feature "Notifications", :js do expect(page).to have_selector 'tr', count: 5 end end -end \ No newline at end of file +end diff --git a/spec/features/photos/show_photo_spec.rb b/spec/features/photos/show_photo_spec.rb index bf72f5fd6..ea3a20f14 100644 --- a/spec/features/photos/show_photo_spec.rb +++ b/spec/features/photos/show_photo_spec.rb @@ -39,4 +39,3 @@ feature "show photo page" do end end end - diff --git a/spec/features/places/searching_a_place_spec.rb b/spec/features/places/searching_a_place_spec.rb index e8562c244..10797d917 100644 --- a/spec/features/places/searching_a_place_spec.rb +++ b/spec/features/places/searching_a_place_spec.rb @@ -58,4 +58,4 @@ feature "User searches" do fill_in "new_place", with: search_string click_button "search_button" end -end \ No newline at end of file +end diff --git a/spec/features/planting_reminder_spec.rb b/spec/features/planting_reminder_spec.rb index 4cba3cb51..3b407c3df 100644 --- a/spec/features/planting_reminder_spec.rb +++ b/spec/features/planting_reminder_spec.rb @@ -5,7 +5,7 @@ feature "Planting reminder email", :js do let(:member) { create :member } let(:mail) { Notifier.planting_reminder(member) } - # Unfortunately, we can't use the default url options for ActionMailer as configured in + # Unfortunately, we can't use the default url options for ActionMailer as configured in # test.rb, since this isn't a mailer spec. def self.default_url_options { host: 'localhost', port: 8080 } diff --git a/spec/features/plantings/planting_a_crop_spec.rb b/spec/features/plantings/planting_a_crop_spec.rb index 7c51af70f..affd691cb 100644 --- a/spec/features/plantings/planting_a_crop_spec.rb +++ b/spec/features/plantings/planting_a_crop_spec.rb @@ -59,7 +59,7 @@ feature "Planting a crop", :js do @a_past_date = 15.days.ago.strftime("%Y-%m-%d") @right_now = Date.today.strftime("%Y-%m-%d") - @a_future_date = 1.years.from_now.strftime("%Y-%m-%d") + @a_future_date = 1.year.from_now.strftime("%Y-%m-%d") end it "should show that it is not planted yet" do @@ -191,12 +191,12 @@ feature "Planting a crop", :js do fill_in "Finished date", with: "2014-08-30" # Trigger click instead of using Capybara"s uncheck - # because a date selection widget is overlapping + # because a date selection widget is overlapping # the checkbox preventing interaction. find("#planting_finished").trigger 'click' end - # Javascript removes the finished at date when the + # Javascript removes the finished at date when the # planting is marked unfinished. expect(find("#planting_finished_at").value).to eq("") @@ -204,7 +204,7 @@ feature "Planting a crop", :js do find("#planting_finished").trigger 'click' end - # The finished at date was cached in Javascript in + # The finished at date was cached in Javascript in # case the user clicks unfinished accidentally. expect(find("#planting_finished_at").value).to eq("2014-08-30") @@ -272,8 +272,7 @@ feature "Planting a crop", :js do describe "Marking a planting as finished from the list page" do let(:path) { plantings_path } let(:link_text) { "Mark as finished" } - + it_behaves_like "append date" end end - diff --git a/spec/features/rss/plantings_spec.rb b/spec/features/rss/plantings_spec.rb index effad2969..59833eff1 100644 --- a/spec/features/rss/plantings_spec.rb +++ b/spec/features/rss/plantings_spec.rb @@ -8,6 +8,7 @@ feature 'Plantings RSS feed' do scenario 'The index title is what we expect' do visit plantings_path(format: 'rss') - expect(page).to have_content "Recent plantings from #{ @owner ? @owner : 'all members' } (#{ENV['GROWSTUFF_SITE_NAME']})" + expect(page).to have_content "Recent plantings from "\ + "#{@owner ? @owner : 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})" end end diff --git a/spec/features/rss/posts_spec.rb b/spec/features/rss/posts_spec.rb index 2d900ebe4..445a50cca 100644 --- a/spec/features/rss/posts_spec.rb +++ b/spec/features/rss/posts_spec.rb @@ -8,6 +8,7 @@ feature 'Posts RSS feed' do scenario 'The index title is what we expect' do visit posts_path(format: 'rss') - expect(page).to have_content "Recent posts from #{ @author ? @author : 'all members' } (#{ENV['GROWSTUFF_SITE_NAME']})" + expect(page).to have_content "Recent posts from "\ + "#{@author ? @author : 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})" end end diff --git a/spec/features/rss/seeds_spec.rb b/spec/features/rss/seeds_spec.rb index 7e5320655..888cc42ec 100644 --- a/spec/features/rss/seeds_spec.rb +++ b/spec/features/rss/seeds_spec.rb @@ -8,6 +8,7 @@ feature 'Seeds RSS feed' do scenario 'The index title is what we expect' do visit seeds_path(format: 'rss') - expect(page).to have_content "Recent seeds from #{ @owner ? @owner : 'all members' } (#{ENV['GROWSTUFF_SITE_NAME']})" + expect(page).to have_content "Recent seeds from "\ + "#{@owner ? @owner : 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})" end end diff --git a/spec/features/scientific_name_spec.rb b/spec/features/scientific_name_spec.rb index c5b621e10..812d6c4de 100644 --- a/spec/features/scientific_name_spec.rb +++ b/spec/features/scientific_name_spec.rb @@ -7,13 +7,13 @@ feature "Scientific names", js: true do scenario "Display scientific names on crop page" do visit crop_path(zea_mays.crop) expect(page.status_code).to equal 200 - expect(page).to have_content zea_mays.scientific_name + expect(page).to have_content zea_mays.name end scenario "Index page for scientific names" do visit scientific_names_path expect(page.status_code).to equal 200 - expect(page).to have_content zea_mays.scientific_name + expect(page).to have_content zea_mays.name end context "User is a crop wrangler" do @@ -28,12 +28,12 @@ feature "Scientific names", js: true do visit crop_path(crop) expect(page.status_code).to equal 200 expect(page).to have_content "CROP WRANGLER" - expect(page).to have_content zea_mays.scientific_name + expect(page).to have_content zea_mays.name expect(page).to have_link "Edit", href: edit_scientific_name_path(zea_mays) within('.scientific_names') { click_on "Edit" } expect(page.status_code).to equal 200 expect(page).to have_css "option[value='#{crop.id}'][selected=selected]" - fill_in 'Scientific name', with: "Zea mirabila" + fill_in 'Name', with: "Zea mirabila" click_on "Save" expect(page).to have_content "Zea mirabila" expect(page).to have_content 'Scientific name was successfully updated' @@ -42,21 +42,21 @@ feature "Scientific names", js: true do scenario "Crop wranglers can delete scientific names" do visit crop_path(zea_mays.crop) expect(page).to have_link "Delete", - href: scientific_name_path(zea_mays) + href: scientific_name_path(zea_mays) within('.scientific_names') { click_on "Delete" } expect(page.status_code).to equal 200 - expect(page).to_not have_content zea_mays.scientific_name + expect(page).to_not have_content zea_mays.name expect(page).to have_content 'Scientific name was successfully deleted' end scenario "Crop wranglers can add scientific names" do visit crop_path(crop) expect(page).to have_link "Add", - href: new_scientific_name_path(crop_id: crop.id) + href: new_scientific_name_path(crop_id: crop.id) within('.scientific_names') { click_on "Add" } expect(page.status_code).to equal 200 expect(page).to have_css "option[value='#{crop.id}'][selected=selected]" - fill_in 'Scientific name', with: "Zea mirabila" + fill_in 'Name', with: "Zea mirabila" click_on "Save" expect(page.status_code).to equal 200 expect(page).to have_content "Zea mirabila" @@ -67,7 +67,7 @@ feature "Scientific names", js: true do visit scientific_name_path(zea_mays) expect(page.status_code).to equal 200 expect(page).to have_link zea_mays.crop.name, - href: crop_path(zea_mays.crop) + href: crop_path(zea_mays.crop) end context "When scientific name is pending" do diff --git a/spec/features/shared_examples/append_date.rb b/spec/features/shared_examples/append_date.rb index 310e39606..3457663e6 100644 --- a/spec/features/shared_examples/append_date.rb +++ b/spec/features/shared_examples/append_date.rb @@ -18,4 +18,4 @@ shared_examples "append date" do click_link "Confirm without date" expect(page).to have_content("Finished: Yes (no date specified) ") end -end \ No newline at end of file +end diff --git a/spec/features/signin_spec.rb b/spec/features/signin_spec.rb index c091e572c..7bc08147c 100644 --- a/spec/features/signin_spec.rb +++ b/spec/features/signin_spec.rb @@ -1,6 +1,5 @@ require 'rails_helper' - feature "signin", js: true do let(:member) { create :member } let(:recipient) { create :member } @@ -61,4 +60,28 @@ feature "signin", js: true do click_button 'Sign in' expect(page).to have_content("There are crops waiting to be wrangled.") end + + context "with facebook" do + scenario "sign in" do + # Ordinarily done by database_cleaner + Member.where(login_name: 'tdawg').delete_all + + create :member, login_name: 'tdawg', email: 'example.oauth.facebook@example.com' + + # Start the test + visit root_path + first('.signup a').click + + # Click the signup with facebook link + + first('a[href="/members/auth/facebook"]').click + # Magic happens! + # See config/environments/test.rb for the fake user + # that we pretended to auth as + + # Signed up and logged in + expect(current_path).to eq root_path + expect(page.text).to include("Welcome to #{ENV['GROWSTUFF_SITE_NAME']}, tdawg") + end + end end diff --git a/spec/features/signout_spec.rb b/spec/features/signout_spec.rb index 2d5d1a230..433286078 100644 --- a/spec/features/signout_spec.rb +++ b/spec/features/signout_spec.rb @@ -26,5 +26,4 @@ feature "signout" do expect(current_path).to eq new_member_session_path end end - end diff --git a/spec/features/signup_spec.rb b/spec/features/signup_spec.rb index f35ddd0c9..6afb28119 100644 --- a/spec/features/signup_spec.rb +++ b/spec/features/signup_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' feature "signup", js: true do - scenario "sign up for new account from top menubar" do visit crops_path # something other than front page, which has multiple signup links click_link 'Sign up' @@ -34,7 +33,7 @@ feature "signup", js: true do end scenario "sign up for new account without accepting TOS" do - visit root_path + visit root_path first('.signup a').click # click the 'Sign up' button in the middle of the page fill_in 'Login name', with: 'person123' fill_in 'Email', with: 'gardener@example.com' @@ -44,4 +43,37 @@ feature "signup", js: true do click_button 'Sign up' expect(current_path).to eq members_path end + + context "with facebook" do + scenario "sign up" do + # Ordinarily done by database_cleaner + Member.where(login_name: 'tdawg').delete_all + Member.where(email: 'tdawg@hotmail.com').delete_all + Member.where(email: 'example.oauth.facebook@example.com').delete_all + Authentication.where(provider: 'facebook', uid: '123545').delete_all + + # Start the test + visit root_path + first('.signup a').click + + # Click the signup with facebook link + + first('a[href="/members/auth/facebook"]').click + # Magic happens! + # See config/environments/test.rb for the fake user + # that we pretended to auth as + + # Confirm page + expect(current_path).to eq '/members/johnnyt/finish_signup' + + fill_in 'Login name', with: 'tdawg' + fill_in 'Email', with: 'tdawg@hotmail.com' + check 'member_tos_agreement' + click_button 'Continue' + + # Signed up and logged in + expect(current_path).to eq root_path + expect(page.text).to include("Welcome to #{ENV['GROWSTUFF_SITE_NAME']}, tdawg") + end + end end diff --git a/spec/features/unsubscribing_spec.rb b/spec/features/unsubscribing_spec.rb index 4b4981ad9..8244d207a 100644 --- a/spec/features/unsubscribing_spec.rb +++ b/spec/features/unsubscribing_spec.rb @@ -52,8 +52,7 @@ feature "unsubscribe" do # visit /members/unsubscribe/somestring ie.parameter to the URL is a random string visit unsubscribe_member_url("type=send_planting_reminder&member_id=#{member.id}") expect(page).to have_content "We're sorry, there was an error" - updated_member = Member.find(member.id) # reload the member expect(member.send_planting_reminder).to eq(true) expect(member.send_notification_email).to eq(true) end -end \ No newline at end of file +end diff --git a/spec/helpers/crops_helper_spec.rb b/spec/helpers/crops_helper_spec.rb index ff4b753bf..49a570836 100644 --- a/spec/helpers/crops_helper_spec.rb +++ b/spec/helpers/crops_helper_spec.rb @@ -19,14 +19,16 @@ describe CropsHelper do end it 'should render' do - expect(helper.display_seed_availability(@member, @crop)).to eq "You have an unknown quantity of seeds of this crop." + expect( + helper.display_seed_availability(@member, @crop) + ).to eq "You have an unknown quantity of seeds of this crop." end end context "with an quantity of seeds" do before do a_different_crop = create :apple - + create :seed, crop: @crop, quantity: 20, owner: @member create :seed, crop: @crop, quantity: 13, owner: @member diff --git a/spec/helpers/gardens_helper_spec.rb b/spec/helpers/gardens_helper_spec.rb index c561c32d1..82a729774 100644 --- a/spec/helpers/gardens_helper_spec.rb +++ b/spec/helpers/gardens_helper_spec.rb @@ -23,7 +23,6 @@ describe GardensHelper do description: 'a' * 130 ) result = helper.display_garden_description(garden) - link = link_to("Read more", garden_path(garden)) expect(result).to eq 'a' * 130 end @@ -38,17 +37,13 @@ describe GardensHelper do describe "garden plantings" do it "is missing" do - garden = FactoryGirl.create(:garden) - plantings = nil - result = helper.display_garden_plantings(plantings) + result = helper.display_garden_plantings(nil) expect(result).to eq "None" end it "has 1 planting" do - garden = FactoryGirl.create(:garden) - plantings = [] crop = FactoryGirl.create(:crop) - plantings << FactoryGirl.create(:planting, quantity: 10, crop: crop) + plantings = [FactoryGirl.create(:planting, quantity: 10, crop: crop)] result = helper.display_garden_plantings(plantings) output = "
  • " @@ -59,7 +54,6 @@ describe GardensHelper do end it "has 2 plantings" do - garden = FactoryGirl.create(:garden) plantings = [] crop1 = FactoryGirl.create(:crop) @@ -82,7 +76,6 @@ describe GardensHelper do end it "has 3 plantings" do - garden = FactoryGirl.create(:garden) plantings = [] crop1 = FactoryGirl.create(:crop) diff --git a/spec/helpers/harvests_helper_spec.rb b/spec/helpers/harvests_helper_spec.rb index c65d8b36e..15cafc9c5 100644 --- a/spec/helpers/harvests_helper_spec.rb +++ b/spec/helpers/harvests_helper_spec.rb @@ -2,7 +2,6 @@ require 'rails_helper' describe HarvestsHelper do describe "display_quantity" do - it "blank" do harvest = FactoryGirl.create(:harvest, quantity: nil, @@ -74,6 +73,5 @@ describe HarvestsHelper do result = helper.display_quantity(harvest) result.should eq '3 bunches, weighing 3 kg' end - end end diff --git a/spec/helpers/notifications_helper_spec.rb b/spec/helpers/notifications_helper_spec.rb index 109bf0c87..152791034 100644 --- a/spec/helpers/notifications_helper_spec.rb +++ b/spec/helpers/notifications_helper_spec.rb @@ -2,13 +2,10 @@ require 'rails_helper' describe NotificationsHelper do describe "reply_link" do - - let(:member) { FactoryGirl.create(:member) } + let(:member) { FactoryGirl.create(:member) } it "replies to PMs with PMs" do notification = FactoryGirl.create(:notification, recipient_id: member.id, post_id: nil) - subject = "Re: " + notification.subject - link = helper.reply_link(notification) link.should_not be_nil link.should eq reply_notification_url(notification) @@ -23,7 +20,5 @@ describe NotificationsHelper do post_id: notification.post.id ) end - - end end diff --git a/spec/helpers/plantings_helper_spec.rb b/spec/helpers/plantings_helper_spec.rb index ae8c78c78..e776501b4 100644 --- a/spec/helpers/plantings_helper_spec.rb +++ b/spec/helpers/plantings_helper_spec.rb @@ -1,8 +1,70 @@ require 'rails_helper' describe PlantingsHelper do - describe "display_planting" do + describe "display_days_before_maturity" do + it "handles nil planted_at, nil finished_at, non-nil days_until_maturity" do + planting = FactoryGirl.build(:planting, + quantity: 5, + planted_at: nil, + finished_at: nil, + days_before_maturity: 17 + ) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "unknown" + end + it "handles non-nil planted_at and d_b_m, nil finished_at" do + planting = FactoryGirl.build(:planting, + quantity: 5, + planted_at: Date.current, + finished_at: nil, + days_before_maturity: 17 + ) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "17" + end + + it "handles completed plantings" do + planting = FactoryGirl.build(:planting, finished: true) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "0" + end + + it "handles plantings that should have finished" do + planting = FactoryGirl.build(:planting, + quantity: 5, + planted_at: Date.new(0, 1, 1), + finished_at: nil, + days_before_maturity: "17" + ) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "0" + end + + it "handles nil d_b_m and nil finished_at" do + planting = FactoryGirl.build(:planting, + quantity: 5, + planted_at: Date.new(2012, 5, 12), + finished_at: nil, + days_before_maturity: nil + ) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "unknown" + end + + it "handles finished_at dates in the future" do + planting = FactoryGirl.build(:planting, + quantity: 5, + planted_at: Date.current, + finished_at: Date.current + 5, + days_before_maturity: nil + ) + result = helper.display_days_before_maturity(planting) + expect(result).to eq "5" + end + end + + describe "display_planting" do let!(:member) { FactoryGirl.build(:member, login_name: 'crop_lady') } it "does not have a quantity nor a planted from value provided" do @@ -67,8 +129,6 @@ describe PlantingsHelper do result = helper.display_planting(planting) expect(result).to eq "crop_lady planted 1 seed." end - end - end -end \ No newline at end of file +end diff --git a/spec/helpers/seeds_helper_spec.rb b/spec/helpers/seeds_helper_spec.rb index c86dc2637..a0eeb49f5 100644 --- a/spec/helpers/seeds_helper_spec.rb +++ b/spec/helpers/seeds_helper_spec.rb @@ -23,7 +23,6 @@ describe SeedsHelper do description: 'a' * 130 ) result = helper.display_seed_description(seed) - link = link_to("Read more", seed_path(seed)) expect(result).to eq 'a' * 130 end diff --git a/spec/lib/actions/oauth_signup_action_spec.rb b/spec/lib/actions/oauth_signup_action_spec.rb new file mode 100644 index 000000000..4bb4f74bb --- /dev/null +++ b/spec/lib/actions/oauth_signup_action_spec.rb @@ -0,0 +1,171 @@ +require 'rails_helper' +require './lib/actions/oauth_signup_action' + +describe 'Growstuff::OauthSignupAction' do + before :each do + @action = Growstuff::OauthSignupAction.new + end + + context 'with a valid authentication' do + before :each do + @auth = OmniAuth::AuthHash.new({ + 'provider' => 'facebook', + 'uid' => '123545', + 'info' => { + 'name' => "John Testerson's Brother", + 'nickname' => 'JohnnyB', + 'email' => 'example.oauth.facebook@example.com', + 'image' => 'http://findicons.com/files/icons/1072/face_avatars/300/i04.png' + }, + 'credentials' => { + 'token' => "token", + 'secret' => "donttell" + } + }) + end + + context 'no existing user' do + before :each do + @auth['info']['email'] = 'no.existing.user@gmail.com' + + Member.where(email: @auth['info']['email']).delete_all + + @member = @action.find_or_create_from_authorization(@auth) + @authentication = @action.establish_authentication(@auth, @member) + end + + after :each do + @member.delete + @authentication.delete + end + + it 'should create a new user' do + expect(@action.member_created?).to eq true + end + + it 'should set the right email' do + expect(@member.email).to eq @auth['info']['email'] + end + + it 'should generate a login_name' do + expect(@member.login_name).to eq 'JohnnyB' + end + + it 'should set an avatar' do + expect(@member.preferred_avatar_uri).to eq @auth['info']['image'] + end + + it 'should generate a random password' do + expect(@member.password).not_to eq nil + end + + it 'should not agree to the tos' do + expect(@member.tos_agreement).to eq nil + end + + it 'should store the uid and provider for the member' do + expect(@authentication.member.id).to eq @member.id + expect(@authentication.provider).to eq 'facebook' + expect(@authentication.uid).to eq '123545' + end + end + + context 'an existing user' do + context 'who has never used oauth' do + before :each do + @auth['info']['email'] = 'never.used.oauth@yahoo.com' + + Member.where(email: @auth['info']['email']).delete_all + @existing_member = create :member, { + email: @auth['info']['email'], + login_name: 'existing', + preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg' + } + + @member = @action.find_or_create_from_authorization(@auth) + @authentication = @action.establish_authentication(@auth, @member) + end + + after :each do + @existing_member.delete + @member.delete + @authentication.delete + end + + it 'should not create a new user' do + expect(@action.member_created?).to eq nil + end + + it 'should locate the existing member by email' do + expect(@member.id).to eq @existing_member.id + end + + it 'should not generate a login_name' do + expect(@member.login_name).to eq 'existing' + end + + it 'should not change the avatar' do + expect(@member.preferred_avatar_uri).to eq 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg' + end + + it 'should store the uid and provider for the member' do + expect(@authentication.member.id).to eq @member.id + expect(@authentication.provider).to eq 'facebook' + expect(@authentication.uid).to eq '123545' + end + end + + context 'who has used oauth' do + before :each do + @auth['info']['email'] = 'i.used.oauth.once@coolemail.com' + + Member.where(email: @auth['info']['email']).delete_all + Authentication.delete_all + + @existing_member = create :member, { + email: @auth['info']['email'], + login_name: 'schrodingerscat', + preferred_avatar_uri: 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg' + } + + @existing_authentication = @existing_member.authentications.create({ + provider: 'facebook', + uid: '123545', + name: "John Testerson's Brother", + member_id: @existing_member.id + }) + + @member = @action.find_or_create_from_authorization(@auth) + @authentication = @action.establish_authentication(@auth, @member) + end + + after :each do + @existing_member.delete + @member.delete + @existing_authentication.delete + @authentication.delete + end + + it 'should not create a new user' do + expect(@action.member_created?).to eq nil + end + + it 'should locate the existing member by uid and provider' do + expect(@member.id).to eq @existing_member.id + end + + it 'should not generate a login_name' do + expect(@member.login_name).to eq 'schrodingerscat' + end + + it 'should not change the avatar' do + expect(@member.preferred_avatar_uri).to eq 'http://cl.jroo.me/z3/W/H/K/e/a.baa-very-cool-hat-you-.jpg' + end + + it 'should locate the existing uid and provider for the member' do + expect(@authentication.id).to eq @existing_authentication.id + end + end + end + end +end diff --git a/spec/lib/haml/filters/escaped_markdown_spec.rb b/spec/lib/haml/filters/escaped_markdown_spec.rb index 60066160f..23f275f96 100644 --- a/spec/lib/haml/filters/escaped_markdown_spec.rb +++ b/spec/lib/haml/filters/escaped_markdown_spec.rb @@ -19,5 +19,4 @@ describe 'Haml::Filters::Escaped_Markdown' do rendered = Haml::Filters::EscapedMarkdown.render("[#{@crop.name}](crop)") rendered.should match /<a href="/ end - end diff --git a/spec/lib/haml/filters/growstuff_markdown_spec.rb b/spec/lib/haml/filters/growstuff_markdown_spec.rb index 2aba8fb89..3ee3102f4 100644 --- a/spec/lib/haml/filters/growstuff_markdown_spec.rb +++ b/spec/lib/haml/filters/growstuff_markdown_spec.rb @@ -3,10 +3,10 @@ require 'haml/filters' require 'haml/filters/growstuff_markdown' def input_link(name) - return "[#{name}](crop)" + "[#{name}](crop)" end -def output_link(crop, name=nil) +def output_link(crop, name = nil) url = Rails.application.routes.url_helpers.crop_url(crop, host: Growstuff::Application.config.host) if name return "#{name}" @@ -16,10 +16,10 @@ def output_link(crop, name=nil) end def input_member_link(name) - return "[#{name}](member)" + "[#{name}](member)" end -def output_member_link(member, name=nil) +def output_member_link(member, name = nil) url = Rails.application.routes.url_helpers.member_url(member, only_path: true) if name return "#{name}" @@ -28,12 +28,11 @@ def output_member_link(member, name=nil) end end - describe 'Haml::Filters::Growstuff_Markdown' do - it 'is registered as the handler for :growstuff_markdown' do - Haml::Filters::defined['growstuff_markdown'].should == - Haml::Filters::GrowstuffMarkdown - end + it 'is registered as the handler for :growstuff_markdown' do + Haml::Filters::defined['growstuff_markdown'].should == + Haml::Filters::GrowstuffMarkdown + end it 'converts quick crop links' do @crop = FactoryGirl.create(:crop) @@ -48,7 +47,7 @@ describe 'Haml::Filters::Growstuff_Markdown' do it "doesn't convert escaped crop links" do @crop = FactoryGirl.create(:crop) - rendered = Haml::Filters::GrowstuffMarkdown.render( "\\" << input_link(@crop.name)) + rendered = Haml::Filters::GrowstuffMarkdown.render("\\" << input_link(@crop.name)) rendered.should match /\[#{@crop.name}\]\(crop\)/ end @@ -97,7 +96,6 @@ describe 'Haml::Filters::Growstuff_Markdown' do rendered.should match /\[#{@member.login_name}\]\(member\)/ end - it 'converts @ member links' do @member = FactoryGirl.create(:member) rendered = Haml::Filters::GrowstuffMarkdown.render("Hey @#{@member.login_name}! What's up") @@ -122,5 +120,4 @@ describe 'Haml::Filters::Growstuff_Markdown' do rendered = Haml::Filters::GrowstuffMarkdown.render("Hey \\@#{@member.login_name}! What's up") rendered.should match /Hey @#{@member.login_name}!/ end - end diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index ce552f99b..c766528b7 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -1,7 +1,6 @@ require "rails_helper" describe Notifier do - describe "notifications" do let(:notification) { FactoryGirl.create(:notification) } let(:mail) { Notifier.notify(notification) } @@ -42,10 +41,8 @@ describe Notifier do it 'includes the new harvest URL' do mail.body.encoded.should match new_harvest_path end - end - describe "new crop request" do let(:member) { FactoryGirl.create(:crop_wrangling_member) } let(:crop) { FactoryGirl.create(:crop_request) } @@ -94,7 +91,6 @@ describe Notifier do expect(mail.body.encoded).to match "#{new_harvest_url}\\?crop_id=#{crop.id}" expect(mail.body.encoded).to match "#{new_seed_url}\\?crop_id=#{crop.id}" end - end describe "crop rejected" do @@ -122,6 +118,4 @@ describe Notifier do expect(mail.body.encoded).to match "Totally fake" end end - - end diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index f31f7f845..4bb68c674 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -2,12 +2,10 @@ require 'rails_helper' require 'cancan/matchers' describe Ability do - let(:member) { FactoryGirl.create(:member) } let(:ability) { Ability.new(member) } context "notifications" do - it 'member can view their own notifications' do notification = FactoryGirl.create(:notification, recipient: member) ability.should be_able_to(:read, notification) @@ -38,7 +36,6 @@ describe Ability do end context "crop wrangling" do - let(:crop) { FactoryGirl.create(:crop) } context "standard member" do @@ -57,7 +54,6 @@ describe Ability do end context "crop wrangler" do - let(:role) { FactoryGirl.create(:crop_wrangler) } before(:each) do @@ -81,7 +77,6 @@ describe Ability do end context "products" do - let(:product) { FactoryGirl.create(:product) } context "standard member" do @@ -91,11 +86,9 @@ describe Ability do ability.should_not be_able_to(:update, product) ability.should_not be_able_to(:destroy, product) end - end context "admin" do - let(:role) { FactoryGirl.create(:admin) } before do @@ -122,17 +115,16 @@ describe Ability do end context "orders" do - let(:order) { FactoryGirl.create(:order, member: member) } let(:strangers_order) { FactoryGirl.create(:order, - member: FactoryGirl.create(:member)) } + member: FactoryGirl.create(:member)) } let(:completed_order) { FactoryGirl.create(:completed_order, - member: member) } + member: member) } let(:order_item) { FactoryGirl.create(:order_item, order: order) } let(:strangers_order_item) { FactoryGirl.create(:order_item, - order: strangers_order) } + order: strangers_order) } let(:completed_order_item) { FactoryGirl.create(:order_item, - order: completed_order) } + order: completed_order) } context "standard member" do it "can read their own orders" do @@ -208,12 +200,9 @@ describe Ability do it "can't delete items from completed orders" do ability.should_not be_able_to(:destroy, completed_order_item) end - - end context "admin" do - let(:role) { FactoryGirl.create(:admin) } before do @@ -239,12 +228,10 @@ describe Ability do it "cannot delete orders" do ability.should_not be_able_to(:destroy, order) end - end end context 'account details' do - let(:account) { member.account } context 'ordinary member' do @@ -259,10 +246,9 @@ describe Ability do end context 'admin' do - let(:role) { FactoryGirl.create(:admin) } - before do + before do member.roles << role end @@ -274,13 +260,10 @@ describe Ability do ability.should be_able_to(:update, account) ability.should be_able_to(:destroy, account) end - end - end context 'plant parts' do - let(:plant_part) { FactoryGirl.create(:plant_part) } context 'ordinary member' do @@ -295,9 +278,8 @@ describe Ability do end context 'admin' do - let(:role) { FactoryGirl.create(:admin) } - + before do member.roles << role end @@ -318,8 +300,6 @@ describe Ability do @harvest = FactoryGirl.create(:harvest, plant_part: plant_part) ability.should_not be_able_to(:destroy, plant_part) end - end end - end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 1274a825e..52caf725f 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Account do - let(:member) { FactoryGirl.create(:member) } it "auto-creates an account detail record when a member is created" do @@ -25,5 +24,4 @@ describe Account do member.account.paid_until = @time member.account.paid_until_string.should eq @time.to_s end - end diff --git a/spec/models/alternate_name_spec.rb b/spec/models/alternate_name_spec.rb index 5e12b02de..ec5684bcb 100644 --- a/spec/models/alternate_name_spec.rb +++ b/spec/models/alternate_name_spec.rb @@ -18,5 +18,4 @@ describe AlternateName do expect(crop.alternate_names).to include an expect(crop.alternate_names).to include an2 end - end diff --git a/spec/models/authentication_spec.rb b/spec/models/authentication_spec.rb index 0159361ff..10f6ac3d6 100644 --- a/spec/models/authentication_spec.rb +++ b/spec/models/authentication_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Authentication do - it 'creates an authentication' do @auth = FactoryGirl.create(:authentication) @auth.should be_an_instance_of Authentication diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb index f3c94860e..0badd5be6 100644 --- a/spec/models/comment_spec.rb +++ b/spec/models/comment_spec.rb @@ -1,9 +1,7 @@ require 'rails_helper' describe Comment do - context "basic" do - let(:comment) { FactoryGirl.create(:comment) } it "belongs to a post" do @@ -16,7 +14,6 @@ describe Comment do end context "notifications" do - let(:comment) { FactoryGirl.create(:comment) } it "sends a notification when a comment is posted" do @@ -60,5 +57,4 @@ describe Comment do Comment.post_order.should eq [@c1, @c2] end end - end diff --git a/spec/models/crop_spec.rb b/spec/models/crop_spec.rb index 53df996de..cc962957c 100644 --- a/spec/models/crop_spec.rb +++ b/spec/models/crop_spec.rb @@ -2,7 +2,6 @@ require 'rails_helper' describe Crop do context 'all fields present' do - let(:crop) { FactoryGirl.create(:tomato) } it 'should save a basic crop' do @@ -11,7 +10,7 @@ describe Crop do it 'should be fetchable from the database' do crop.save - @crop2 = Crop.find_by_name('tomato') + @crop2 = Crop.find_by(name: 'tomato') @crop2.en_wikipedia_url.should == "http://en.wikipedia.org/wiki/Tomato" @crop2.slug.should == "tomato" end @@ -51,7 +50,6 @@ describe Crop do end context 'popularity' do - let(:tomato) { FactoryGirl.create(:tomato) } let(:maize) { FactoryGirl.create(:maize) } let(:cucumber) { FactoryGirl.create(:crop, name: 'cucumber') } @@ -66,7 +64,6 @@ describe Crop do FactoryGirl.create_list(:planting, 10, crop: tomato) Crop.popular.first.should eq tomato end - end it 'finds a default scientific name' do @@ -74,7 +71,7 @@ describe Crop do @crop.default_scientific_name.should eq nil @sn = FactoryGirl.create(:solanum_lycopersicum, crop: @crop) @crop.reload - @crop.default_scientific_name.should eq @sn.scientific_name + @crop.default_scientific_name.should eq @sn.name end it 'counts plantings' do @@ -85,11 +82,43 @@ describe Crop do @crop.plantings.size.should eq 1 end - it 'validates en_wikipedia_url' do - @crop = FactoryGirl.build(:tomato, en_wikipedia_url: 'this is not valid') - @crop.should_not be_valid - @crop = FactoryGirl.build(:tomato, en_wikipedia_url: 'http://en.wikipedia.org/wiki/SomePage') - @crop.should be_valid + context "wikipedia url" do + subject { FactoryGirl.build(:tomato, en_wikipedia_url: wikipedia_url) } + + context 'not a url' do + let(:wikipedia_url) { 'this is not valid' } + it { expect(subject).not_to be_valid } + end + + context 'http url' do + let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).to be_valid } + end + + context 'with ssl' do + let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).to be_valid } + end + + context 'with utf8 macrons' do + let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/Māori' } + it { expect(subject).to be_valid } + end + + context 'urlencoded' do + let(:wikipedia_url) { 'https://en.wikipedia.org/wiki/M%C4%81ori' } + it { expect(subject).to be_valid } + end + + context 'with new lines in url' do + let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage\n\nBrendaRocks' } + it { expect(subject).not_to be_valid } + end + + context "with script tags in url" do + let(:wikipedia_url) { 'http://en.wikipedia.org/wiki/SomePage' } + it { expect(subject).not_to be_valid } + end end context 'varieties' do @@ -103,78 +132,114 @@ describe Crop do it 'toplevel scope works' do @tomato = FactoryGirl.create(:tomato) @roma = FactoryGirl.create(:roma, parent_id: @tomato.id) - Crop.toplevel.should eq [ @tomato ] + Crop.toplevel.should eq [@tomato] end end context 'photos' do - it 'has a default photo' do + before :each do @crop = FactoryGirl.create(:tomato) - @planting = FactoryGirl.create(:planting, crop: @crop) - @photo = FactoryGirl.create(:photo) - @planting.photos << @photo - @crop.default_photo.should be_an_instance_of Photo + end + context 'with a planting photo' do + before :each do + @planting = FactoryGirl.create(:planting, crop: @crop) + @photo = FactoryGirl.create(:photo) + @planting.photos << @photo + end + + it 'has a default photo' do + @crop.default_photo.should be_an_instance_of Photo + @crop.default_photo.id.should eq @photo.id + end + end + + context 'with a harvest photo' do + before :each do + @harvest = FactoryGirl.create(:harvest, crop: @crop) + @photo = FactoryGirl.create(:photo) + @harvest.photos << @photo + end + + it 'has a default photo' do + @crop.default_photo.should be_an_instance_of Photo + @crop.default_photo.id.should eq @photo.id + end + + context 'and planting photo' do + before :each do + @planting = FactoryGirl.create(:planting, crop: @crop) + @planting_photo = FactoryGirl.create(:photo) + @planting.photos << @planting_photo + end + + it 'should prefer the planting photo' do + @crop.default_photo.id.should eq @planting_photo.id + end + end + end + + context 'with no plantings or harvests' do + it 'has no default photo' do + @crop.default_photo.should eq nil + end end end context 'sunniness' do - let(:crop) { FactoryGirl.create(:tomato) } it 'returns a hash of sunniness values' do - planting1 = FactoryGirl.create(:sunny_planting, crop: crop) - planting2 = FactoryGirl.create(:sunny_planting, crop: crop) - planting3 = FactoryGirl.create(:semi_shady_planting, crop: crop) - planting4 = FactoryGirl.create(:shady_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:semi_shady_planting, crop: crop) + FactoryGirl.create(:shady_planting, crop: crop) crop.sunniness.should be_an_instance_of Hash end it 'counts each sunniness value' do - planting1 = FactoryGirl.create(:sunny_planting, crop: crop) - planting2 = FactoryGirl.create(:sunny_planting, crop: crop) - planting3 = FactoryGirl.create(:semi_shady_planting, crop: crop) - planting4 = FactoryGirl.create(:shady_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:semi_shady_planting, crop: crop) + FactoryGirl.create(:shady_planting, crop: crop) crop.sunniness.should == { 'sun' => 2, 'shade' => 1, 'semi-shade' => 1 } end it 'ignores unused sunniness values' do - planting1 = FactoryGirl.create(:sunny_planting, crop: crop) - planting2 = FactoryGirl.create(:sunny_planting, crop: crop) - planting3 = FactoryGirl.create(:semi_shady_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:sunny_planting, crop: crop) + FactoryGirl.create(:semi_shady_planting, crop: crop) crop.sunniness.should == { 'sun' => 2, 'semi-shade' => 1 } end end context 'planted_from' do - let(:crop) { FactoryGirl.create(:tomato) } it 'returns a hash of sunniness values' do - planting1 = FactoryGirl.create(:seed_planting, crop: crop) - planting2 = FactoryGirl.create(:seed_planting, crop: crop) - planting3 = FactoryGirl.create(:seedling_planting, crop: crop) - planting4 = FactoryGirl.create(:cutting_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seedling_planting, crop: crop) + FactoryGirl.create(:cutting_planting, crop: crop) crop.planted_from.should be_an_instance_of Hash end it 'counts each planted_from value' do - planting1 = FactoryGirl.create(:seed_planting, crop: crop) - planting2 = FactoryGirl.create(:seed_planting, crop: crop) - planting3 = FactoryGirl.create(:seedling_planting, crop: crop) - planting4 = FactoryGirl.create(:cutting_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seedling_planting, crop: crop) + FactoryGirl.create(:cutting_planting, crop: crop) crop.planted_from.should == { 'seed' => 2, 'seedling' => 1, 'cutting' => 1 } end it 'ignores unused planted_from values' do - planting1 = FactoryGirl.create(:seed_planting, crop: crop) - planting2 = FactoryGirl.create(:seed_planting, crop: crop) - planting3 = FactoryGirl.create(:seedling_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seed_planting, crop: crop) + FactoryGirl.create(:seedling_planting, crop: crop) crop.planted_from.should == { 'seed' => 2, 'seedling' => 1 } end end context 'popular plant parts' do - let(:crop) { FactoryGirl.create(:tomato) } it 'returns a hash of plant_part values' do @@ -204,7 +269,6 @@ describe Crop do ) crop.popular_plant_parts.should == { @fruit => 2, @seed => 1, @root => 1 } end - end context 'interesting' do @@ -255,7 +319,6 @@ describe Crop do Crop.interesting.should include @crop1 Crop.interesting.should_not include @crop2 Crop.interesting.size.should == 1 - end it 'ignores crops without photos' do @@ -282,7 +345,6 @@ describe Crop do Crop.interesting.should_not include @crop2 Crop.interesting.size.should == 1 end - end context "harvests" do @@ -324,7 +386,6 @@ describe Crop do end context "search" do - let(:mushroom) { FactoryGirl.create(:crop, name: 'mushroom') } before do @@ -356,7 +417,6 @@ describe Crop do end context "csv loading" do - before(:each) do # don't use 'let' for this -- we need to actually create it, # regardless of whether it's used. @@ -364,7 +424,6 @@ describe Crop do end context "scientific names" do - it "adds a scientific name to a crop that has none" do tomato = FactoryGirl.create(:tomato) expect(tomato.scientific_names.size).to eq 0 @@ -417,8 +476,8 @@ describe Crop do expect(tomato.scientific_names.size).to eq 0 tomato.add_scientific_names_from_csv("Foo, Bar") expect(tomato.scientific_names.size).to eq 2 - expect(tomato.scientific_names[0].scientific_name).to eq "Foo" - expect(tomato.scientific_names[1].scientific_name).to eq "Bar" + expect(tomato.scientific_names[0].name).to eq "Foo" + expect(tomato.scientific_names[1].name).to eq "Bar" end it "loads multiple scientific names with variant spacing" do @@ -429,7 +488,6 @@ describe Crop do tomato.add_scientific_names_from_csv("Baz, Quux") # multiple spaces expect(tomato.scientific_names.size).to eq 4 end - end # scientific names context "alternate names" do @@ -492,7 +550,7 @@ describe Crop do loaded = Crop.last expect(loaded.name).to eq "tomato" expect(loaded.scientific_names.size).to eq 1 - expect(loaded.scientific_names.last.scientific_name).to eq "Solanum lycopersicum" + expect(loaded.scientific_names.last.name).to eq "Solanum lycopersicum" end it "loads a crop with an alternate name" do @@ -531,9 +589,7 @@ describe Crop do expect(loaded.name).to eq "tomato" expect(loaded.en_wikipedia_url).to eq 'http://en.wikipedia.org/wiki/Tomato' expect(loaded.creator).to eq @cropbot - end - end context "crop-post association" do @@ -557,8 +613,17 @@ describe Crop do end context "crop rejections" do - let!(:rejected_reason) { FactoryGirl.create(:crop, name: 'tomato', approval_status: 'rejected', reason_for_rejection: 'not edible') } - let!(:rejected_other) { FactoryGirl.create(:crop, name: 'tomato', approval_status: 'rejected', reason_for_rejection: 'other', rejection_notes: 'blah blah blah') } + let!(:rejected_reason) do + FactoryGirl.create(:crop, name: 'tomato', + approval_status: 'rejected', + reason_for_rejection: 'not edible') + end + let!(:rejected_other) do + FactoryGirl.create(:crop, name: 'tomato', + approval_status: 'rejected', + reason_for_rejection: 'other', + rejection_notes: 'blah blah blah') + end describe "rejecting a crop" do it "should give reason if a default option" do diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb index 7bebbc7f3..95b82d8a8 100644 --- a/spec/models/follow_spec.rb +++ b/spec/models/follow_spec.rb @@ -1,7 +1,6 @@ require 'spec_helper' describe Follow do - before(:each) do @member1 = FactoryGirl.create(:member) @member2 = FactoryGirl.create(:member) @@ -21,8 +20,7 @@ describe Follow do end context "when follow is created" do - - before (:each) do + before(:each) do @follow = Follow.create(follower_id: @member1.id, followed_id: @member2.id) end @@ -41,5 +39,4 @@ describe Follow do expect(@member2.followers).not_to include(@member1) end end - -end \ No newline at end of file +end diff --git a/spec/models/forum_spec.rb b/spec/models/forum_spec.rb index 72fafd31c..4c1c42275 100644 --- a/spec/models/forum_spec.rb +++ b/spec/models/forum_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Forum do - let(:forum) { FactoryGirl.create(:forum) } it "belongs to an owner" do @@ -27,5 +26,4 @@ describe Forum do @post2 = FactoryGirl.create(:forum_post, forum: forum, created_at: 1.day.ago) forum.posts.first.should eq @post2 end - end diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index 1332e7287..1fd0900f4 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Garden do - let(:owner) { FactoryGirl.create(:member) } let(:garden) { FactoryGirl.create(:garden, owner: owner) } @@ -23,11 +22,26 @@ describe Garden do garden.should_not be_valid end + it "allows numbers" do + garden = FactoryGirl.build(:garden, name: "100 vines of 2 kamo-kamo") + garden.should_not be_valid + end + + it "allows macrons" do + garden = FactoryGirl.build(:garden, name: "Kūmara and pūha patch") + garden.should_not be_valid + end + it "doesn't allow a name with only spaces" do garden = FactoryGirl.build(:garden, name: " ") garden.should_not be_valid end + it "doesn't allow a new lines in garden names" do + garden = FactoryGirl.build(:garden, name: "My garden\nI am a 1337 hacker") + garden.should_not be_valid + end + it "should have an owner" do garden.owner.should be_an_instance_of Member end @@ -37,7 +51,6 @@ describe Garden do end context "featured plantings" do - let(:tomato) { FactoryGirl.create(:tomato) } let(:maize) { FactoryGirl.create(:maize) } let(:chard) { FactoryGirl.create(:chard) } @@ -50,7 +63,6 @@ describe Garden do @p2 = FactoryGirl.create(:planting, crop: maize, garden: garden) garden.featured_plantings.should eq [@p2, @p1] - end it "should fetch most recent 4 featured plantings" do @@ -78,7 +90,7 @@ describe Garden do context 'ordering' do it "should be sorted alphabetically" do - z = FactoryGirl.create(:garden_z) + FactoryGirl.create(:garden_z) a = FactoryGirl.create(:garden_a) Garden.first.should == a end @@ -153,7 +165,6 @@ describe Garden do end context 'active scopes' do - let(:active) { FactoryGirl.create(:garden) } let(:inactive) { FactoryGirl.create(:inactive_garden) } @@ -204,7 +215,6 @@ describe Garden do end context 'photos' do - let(:garden) { FactoryGirl.create(:garden) } let(:photo) { FactoryGirl.create(:photo) } @@ -219,18 +229,17 @@ describe Garden do it 'deletes association with photos when photo is deleted' do photo.destroy garden.reload - garden.photos.should be_empty + garden.photos.should be_empty end it 'has a default photo' do - garden.default_photo.should eq photo + garden.default_photo.should eq photo end it 'chooses the most recent photo' do - @photo2 = FactoryGirl.create(:photo) + @photo2 = FactoryGirl.create(:photo) garden.photos << @photo2 garden.default_photo.should eq @photo2 end end - end diff --git a/spec/models/harvest_spec.rb b/spec/models/harvest_spec.rb index 583363aa2..a3aedddf2 100644 --- a/spec/models/harvest_spec.rb +++ b/spec/models/harvest_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Harvest do - it "has an owner" do harvest = FactoryGirl.create(:harvest) harvest.owner.should be_an_instance_of Member @@ -46,7 +45,8 @@ describe Harvest do context 'units' do it 'all valid units should work' do - ['individual','bunch','sprig','handful','litre','pint','quart','bucket','basket','bushel', nil, ''].each do |s| + ['individual', 'bunch', 'sprig', 'handful', 'litre', + 'pint', 'quart', 'bucket', 'basket', 'bushel', nil, ''].each do |s| @harvest = FactoryGirl.build(:harvest, unit: s) @harvest.should be_valid end @@ -147,117 +147,154 @@ describe Harvest do end context "stringification" do - let(:crop) { FactoryGirl.create(:crop, name: "apricot") } it "apricots" do @h = FactoryGirl.create(:harvest, crop: crop, - quantity: nil, - unit: nil, - weight_quantity: nil, - weight_unit: nil + quantity: nil, + unit: nil, + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "apricots" end it "1 individual apricot" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 1, - unit: 'individual', - weight_quantity: nil, - weight_unit: nil + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 1, + unit: 'individual', + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "1 individual apricot" end it "10 individual apricots" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 10, - unit: 'individual', - weight_quantity: nil, - weight_unit: nil + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 10, + unit: 'individual', + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "10 individual apricots" end it "1 bushel of apricots" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 1, - unit: 'bushel', - weight_quantity: nil, - weight_unit: nil + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 1, + unit: 'bushel', + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "1 bushel of apricots" end it "1.5 bushels of apricots" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 1.5, - unit: 'bushel', - weight_quantity: nil, - weight_unit: nil + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 1.5, + unit: 'bushel', + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "1.5 bushels of apricots" end it "10 bushels of apricots" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 10, - unit: 'bushel', - weight_quantity: nil, - weight_unit: nil + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 10, + unit: 'bushel', + weight_quantity: nil, + weight_unit: nil ) @h.to_s.should eq "10 bushels of apricots" end it "apricots weighing 1.2 kg" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: nil, - unit: nil, - weight_quantity: 1.2, - weight_unit: 'kg' + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: nil, + unit: nil, + weight_quantity: 1.2, + weight_unit: 'kg' ) @h.to_s.should eq "apricots weighing 1.2 kg" end it "10 bushels of apricots weighing 100 kg" do - @h = FactoryGirl.create(:harvest, crop: crop, - quantity: 10, - unit: 'bushel', - weight_quantity: 100, - weight_unit: 'kg') + @h = FactoryGirl.create(:harvest, crop: crop, + quantity: 10, + unit: 'bushel', + weight_quantity: 100, + weight_unit: 'kg') @h.to_s.should eq "10 bushels of apricots weighing 100 kg" end - end context 'photos' do - - let(:harvest) { FactoryGirl.create(:harvest) } - let(:photo) { FactoryGirl.create(:photo) } - - before do - harvest.photos << photo + before :each do + @harvest = FactoryGirl.create(:harvest) end - it 'has a photo' do - harvest.photos.first.should eq photo + context 'without a photo' do + it 'should have no default photo' do + @harvest.default_photo.should eq nil + end + + context 'and with a crop(planting) photo' do + before :each do + @photo = FactoryGirl.create(:photo) + @planting = FactoryGirl.create(:planting, crop: @harvest.crop) + @planting.photos << @photo + end + + it 'should have a default photo' do + @harvest.default_photo.should eq @photo + end + end end - it 'deletes association with photos when photo is deleted' do - photo.destroy - harvest.reload - harvest.photos.should be_empty - end + context 'with a photo' do + before do + @photo = FactoryGirl.create(:photo) - it 'has a default photo' do - harvest.default_photo.should eq photo - end + @harvest.photos << @photo + end - it 'chooses the most recent photo' do - @photo2 = FactoryGirl.create(:photo) - harvest.photos << @photo2 - harvest.default_photo.should eq @photo2 + it 'has a photo' do + @harvest.photos.first.should eq @photo + end + + it 'deletes association with photos when photo is deleted' do + @photo.destroy + @harvest.reload + @harvest.photos.should be_empty + end + + it 'has a default photo' do + @harvest.default_photo.should eq @photo + end + + context 'and with a crop(planting) photo' do + before :each do + @crop_photo = FactoryGirl.create(:photo) + @planting = FactoryGirl.create(:planting, crop: @harvest.crop) + @planting.photos << @crop_photo + end + + it 'should prefer the harvest photo' do + @harvest.default_photo.should eq @photo + end + end + + context 'and a second photo' do + before :each do + @photo2 = FactoryGirl.create(:photo) + @harvest.photos << @photo2 + end + + it 'chooses the most recent photo' do + @harvest.default_photo.should eq @photo2 + end + end end end end diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 138dc4cf5..576e37dab 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -1,9 +1,7 @@ require 'rails_helper' describe 'member' do - context 'valid member' do - let(:member) { FactoryGirl.create(:member) } it 'should be fetchable from the database' do @@ -100,11 +98,9 @@ describe 'member' do member.latitude.should be_nil member.longitude.should be_nil end - end context 'no TOS agreement' do - let(:member) { FactoryGirl.build(:no_tos_member) } it "should refuse to save a member who hasn't agreed to the TOS" do @@ -139,17 +135,18 @@ describe 'member' do context 'case sensitivity' do it 'preserves case of login name' do - member = FactoryGirl.create(:member, login_name: "BOB") - check = Member.find('bob') - check.login_name.should eq 'BOB' + FactoryGirl.create(:member, login_name: "BOB") + Member.find('bob').login_name.should eq 'BOB' end end context 'ordering' do + before do + FactoryGirl.create(:member, login_name: "Zoe") + FactoryGirl.create(:member, login_name: "Anna") + end it "should be sorted by name" do - z = FactoryGirl.create(:member, login_name: "Zoe") - a = FactoryGirl.create(:member, login_name: "Anna") - Member.first.should == a + expect(Member.first.login_name).to eq("Anna") end end @@ -197,7 +194,6 @@ describe 'member' do end context 'roles' do - let(:member) { FactoryGirl.create(:member) } let(:role) { FactoryGirl.create(:role) } @@ -287,12 +283,10 @@ describe 'member' do @member1.updated_at = 3.days.ago @member2.updated_at = 2.days.ago - @member3.updated_at = 1.days.ago - - Member.interesting.should eq [ @member3, @member2, @member1 ] + @member3.updated_at = 1.day.ago + Member.interesting.should eq [@member3, @member2, @member1] end - end context 'orders' do @@ -312,19 +306,18 @@ describe 'member' do end context "paid accounts" do - let(:member) { FactoryGirl.create(:member) } it "recognises a permanent paid account" do @account_type = FactoryGirl.create(:account_type, - is_paid: true, is_permanent_paid: true) + is_paid: true, is_permanent_paid: true) member.account.account_type = @account_type member.is_paid?.should be(true) end it "recognises a current paid account" do @account_type = FactoryGirl.create(:account_type, - is_paid: true, is_permanent_paid: false) + is_paid: true, is_permanent_paid: false) member.account.account_type = @account_type member.account.paid_until = Time.zone.now + 1.month member.is_paid?.should be(true) @@ -332,7 +325,7 @@ describe 'member' do it "recognises an expired paid account" do @account_type = FactoryGirl.create(:account_type, - is_paid: true, is_permanent_paid: false) + is_paid: true, is_permanent_paid: false) member.account.account_type = @account_type member.account.paid_until = Time.zone.now - 1.minute member.is_paid?.should be(false) @@ -340,23 +333,21 @@ describe 'member' do it "recognises a free account" do @account_type = FactoryGirl.create(:account_type, - is_paid: false, is_permanent_paid: false) + is_paid: false, is_permanent_paid: false) member.account.account_type = @account_type member.is_paid?.should be(false) end it "recognises a free account even with paid_until set" do @account_type = FactoryGirl.create(:account_type, - is_paid: false, is_permanent_paid: false) + is_paid: false, is_permanent_paid: false) member.account.account_type = @account_type member.account.paid_until = Time.zone.now + 1.month member.is_paid?.should be(false) end - end context "update account" do - let(:product) { FactoryGirl.create(:product, paid_months: 3 )} @@ -372,11 +363,11 @@ describe 'member' do member.update_account_after_purchase(product) # stringify to avoid millisecond problems... - member.account.paid_until.to_s.should eq (Time.zone.now + 3.months).to_s + member.account.paid_until.to_s.should eq((Time.zone.now + 3.months).to_s) # and again to make sure it works for currently paid accounts member.update_account_after_purchase(product) - member.account.paid_until.to_s.should eq (Time.zone.now + 3.months + 3.months).to_s + member.account.paid_until.to_s.should eq((Time.zone.now + 3.months + 3.months).to_s) end end @@ -389,11 +380,9 @@ describe 'member' do end context 'member who followed another member' do - - let(:member1) { FactoryGirl.create(:member) } let(:member2) { FactoryGirl.create(:member) } - let(:member3) { FactoryGirl.create(:member) } + let(:member3) { FactoryGirl.create(:member) } before do @follow = member1.follows.create(follower_id: member1.id, followed_id: member2.id) @@ -418,7 +407,5 @@ describe 'member' do expect(member1.get_follow(member3)).to be_nil end end - end - end diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index e38444d5d..04cb028f3 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Notification do - let(:notification) { FactoryGirl.create(:notification) } it "belongs to a post" do @@ -56,5 +55,4 @@ describe Notification do notification = FactoryGirl.create(:notification, subject: " ") notification.subject.should == "(no subject)" end - end diff --git a/spec/models/order_item_spec.rb b/spec/models/order_item_spec.rb index 67f86415c..a6ede25d8 100644 --- a/spec/models/order_item_spec.rb +++ b/spec/models/order_item_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe OrderItem do - let(:order_item) { FactoryGirl.create(:order_item) } it "has an order and a product" do @@ -24,5 +23,4 @@ describe OrderItem do @order_item2 = FactoryGirl.build(:order_item, order: @order) @order_item2.should_not be_valid end - end diff --git a/spec/models/order_spec.rb b/spec/models/order_spec.rb index 9291e1a3f..1f8bf88bf 100644 --- a/spec/models/order_spec.rb +++ b/spec/models/order_spec.rb @@ -8,6 +8,19 @@ describe Order do order_id: @order.id, product_id: @product.id) end + describe '#by_member_id' do + before do + @member1 = FactoryGirl.create(:member) + @member2 = FactoryGirl.create(:member) + @order1 = Order.create!(member_id: @member1.id) + @order2 = Order.create!(member_id: @member2.id) + end + + it "only returns orders belonging to member" do + Order.by_member(@member1).should eq [@order1] + end + end + it 'has order_items' do @order.order_items.first.should eq @order_item end @@ -47,7 +60,7 @@ describe Order do @order_item1 = FactoryGirl.create(:order_item, order_id: @order.id, product_id: @product.id, price: 1111, quantity: 1) - @order.total.should eq 1111 + @order.total.should eq 1111 end it "gives the correct total for quantities more than 1" do @@ -61,7 +74,7 @@ describe Order do @order_item1 = FactoryGirl.create(:order_item, order_id: @order.id, product_id: @product.id, price: 1111, quantity: 2) - @order.total.should eq 2222 + @order.total.should eq 2222 end it "formats order items for activemerchant" do @@ -81,7 +94,6 @@ describe Order do quantity: 1, amount: 1111 }] - end context "referral codes" do @@ -126,7 +138,5 @@ describe Order do order = FactoryGirl.create(:order, referral_code: 'baz') Order.search(by: 'referral_code', for: 'baz').should eq [order] end - end - end diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb index bd6335be2..b1f4f2759 100644 --- a/spec/models/photo_spec.rb +++ b/spec/models/photo_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Photo do - describe 'add/delete functionality' do let(:photo) { FactoryGirl.create(:photo) } let(:planting) { FactoryGirl.create(:planting) } @@ -86,11 +85,13 @@ describe Photo do planting.destroy # photo is still used by harvest and garden photo.reload + expect(photo.plantings.size).to eq 0 expect(photo.harvests.size).to eq 1 harvest.destroy garden.destroy # photo is now no longer used by anything + photo.reload expect(photo.plantings.size).to eq 0 expect(photo.harvests.size).to eq 0 @@ -105,9 +106,7 @@ describe Photo do planting.destroy # photo is still used by the harvest expect(photo).to be_an_instance_of Photo end - end # removing photos - end # add/delete functionality describe 'flickr_metadata' do diff --git a/spec/models/plant_part_spec.rb b/spec/models/plant_part_spec.rb index ef3705ef2..bd2ee6407 100644 --- a/spec/models/plant_part_spec.rb +++ b/spec/models/plant_part_spec.rb @@ -35,5 +35,4 @@ describe PlantPart do ) @pp1.crops.should eq [@maize] end - end diff --git a/spec/models/planting_spec.rb b/spec/models/planting_spec.rb index 3663f8c29..327379fc3 100644 --- a/spec/models/planting_spec.rb +++ b/spec/models/planting_spec.rb @@ -1,12 +1,11 @@ require 'rails_helper' describe Planting do - let(:crop) { FactoryGirl.create(:tomato) } let(:garden_owner) { FactoryGirl.create(:member) } let(:garden) { FactoryGirl.create(:garden, owner: garden_owner) } let(:planting) { FactoryGirl.create(:planting, - crop: crop, garden: garden)} + crop: crop, garden: garden)} it 'has an owner' do planting.owner.should be_an_instance_of Member @@ -76,7 +75,7 @@ describe Planting do it 'should not be calculated for plantings with an unknown days before maturity' do @planting = FactoryGirl.build(:planting, days_before_maturity: nil) - @planting.percentage_grown.should be nil + @planting.percentage_grown.should be nil end end @@ -123,7 +122,6 @@ describe Planting do end context 'sunniness' do - let(:planting) { FactoryGirl.create(:sunny_planting) } it 'should have a sunniness value' do @@ -152,8 +150,8 @@ describe Planting do it 'all valid planted_from values should work' do ['seed', 'seedling', 'cutting', 'root division', - 'runner', 'bare root plant', 'advanced plant', - 'graft', 'layering', 'bulb', 'root/tuber', nil, ''].each do |p| + 'runner', 'bare root plant', 'advanced plant', + 'graft', 'layering', 'bulb', 'root/tuber', nil, ''].each do |p| @planting = FactoryGirl.build(:planting, planted_from: p) @planting.should be_valid end @@ -169,7 +167,6 @@ describe Planting do # we decided that all the tests for the planting/photo association would # be done on this side, not on the photos side context 'photos' do - let(:planting) { FactoryGirl.create(:planting) } let(:photo) { FactoryGirl.create(:photo) } @@ -278,7 +275,6 @@ describe Planting do Planting.interesting(3, false).size.should eq 3 end end - end # interesting plantings context "finished" do @@ -304,7 +300,7 @@ describe Planting do context "finished date validation" do it 'requires finished date after planting date' do - @f = FactoryGirl.build(:finished_planting, planted_at: '2014-01-01', finished_at: '2013-01-01') + @f = FactoryGirl.build(:finished_planting, planted_at: '2014-01-01', finished_at: '2013-01-01') @f.should_not be_valid end diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index 74a323db7..1fc5be7e9 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Post do - let(:member) { FactoryGirl.create(:member) } it_behaves_like "it is likeable" @@ -68,11 +67,10 @@ describe Post do end context "recent activity" do - before do Time.stub(now: Time.now) end - + let(:post) { FactoryGirl.create(:post, created_at: 1.day.ago) } it "sets recent activity to post time" do @@ -81,7 +79,7 @@ describe Post do it "sets recent activity to comment time" do @comment = FactoryGirl.create(:comment, post: post, - created_at: 1.hour.ago) + created_at: 1.hour.ago) post.recent_activity.to_i.should eq @comment.created_at.to_i end diff --git a/spec/models/product_spec.rb b/spec/models/product_spec.rb index af1a02ba5..6526ecf27 100644 --- a/spec/models/product_spec.rb +++ b/spec/models/product_spec.rb @@ -1,10 +1,8 @@ require 'rails_helper' describe Product do - it "stringifies using the name" do @product = FactoryGirl.create(:product) @product.to_s.should eq @product.name end - end diff --git a/spec/models/role_spec.rb b/spec/models/role_spec.rb index 6ea5d1a9d..f8393ae84 100644 --- a/spec/models/role_spec.rb +++ b/spec/models/role_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' describe Role do - let(:member) { FactoryGirl.create(:member) } + let(:member) { FactoryGirl.create(:member) } subject do role = FactoryGirl.create(:role, name: 'Crop Wrangler') diff --git a/spec/models/scientific_name_spec.rb b/spec/models/scientific_name_spec.rb index e506acccf..b7648cb36 100644 --- a/spec/models/scientific_name_spec.rb +++ b/spec/models/scientific_name_spec.rb @@ -2,7 +2,6 @@ require 'rails_helper' describe ScientificName do context 'all fields present' do - let(:sn) { FactoryGirl.create(:zea_mays) } it 'should save a basic scientific name' do @@ -11,7 +10,7 @@ describe ScientificName do it 'should be fetchable from the database' do sn.save - @sn2 = ScientificName.find_by_scientific_name('Zea mays') + @sn2 = ScientificName.find_by(name: 'Zea mays') @sn2.crop.name.should == 'maize' end diff --git a/spec/models/seed_spec.rb b/spec/models/seed_spec.rb index 58ae5f906..5e6a9ff19 100644 --- a/spec/models/seed_spec.rb +++ b/spec/models/seed_spec.rb @@ -1,7 +1,6 @@ require 'rails_helper' describe Seed do - let(:seed) { FactoryGirl.build(:seed) } it 'should save a basic seed' do @@ -48,7 +47,10 @@ describe Seed do it 'should refuse invalid tradable_to values' do @seed = FactoryGirl.build(:seed, tradable_to: 'not valid') @seed.should_not be_valid - @seed.errors[:tradable_to].should include("You may only trade seed nowhere, locally, nationally, or internationally") + @seed.errors[:tradable_to].should include( + "You may only trade seed nowhere, locally, "\ + "nationally, or internationally" + ) end it 'should not allow nil or blank values' do @@ -82,14 +84,13 @@ describe Seed do @untradable = FactoryGirl.create(:untradable_seed) Seed.tradable.should include @tradable Seed.tradable.should_not include @untradable - end end context 'organic, gmo, heirloom' do it 'all valid organic values should work' do - ['certified organic', 'non-certified organic', - 'conventional/non-organic', 'unknown'].each do |t| + ['certified organic', 'non-certified organic', + 'conventional/non-organic', 'unknown'].each do |t| @seed = FactoryGirl.build(:seed, organic: t) @seed.should be_valid end @@ -104,7 +105,7 @@ describe Seed do end it 'all valid heirloom values should work' do - %w(heirloom hybrid unknown).each do |t| + %w(heirloom hybrid unknown).each do |t| @seed = FactoryGirl.build(:seed, heirloom: t) @seed.should be_valid end @@ -128,10 +129,8 @@ describe Seed do end end - context 'interesting' do it 'lists interesting seeds' do - # to be interesting a seed must: # 1) be tradable # 2) the owner must have a location set @@ -149,5 +148,4 @@ describe Seed do Seed.interesting.size.should == 1 end end - end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index dac96d64e..cdfb951cb 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -5,9 +5,9 @@ require 'coveralls' # output coverage locally AND send it to coveralls SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ - SimpleCov::Formatter::HTMLFormatter, - Coveralls::SimpleCov::Formatter -]) + SimpleCov::Formatter::HTMLFormatter, + Coveralls::SimpleCov::Formatter + ]) # fail if there's a significant test coverage drop SimpleCov.maximum_coverage_drop 1 @@ -37,7 +37,7 @@ if ENV['GROWSTUFF_CAPYBARA_DRIVER'].present? end Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example| - "screenshot_#{example.description.gsub(' ', '-').gsub(/^.*\/spec\//,'')}" + "screenshot_#{example.description.gsub(' ', '-').gsub(/^.*\/spec\//, '')}" end Capybara.app_host = 'http://localhost' @@ -59,7 +59,7 @@ include Warden::Test::Helpers # require only the support files necessary. # Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } -Dir[Rails.root.join("spec/features/shared_examples/**/*.rb")].each {|f| require f} +Dir[Rails.root.join("spec/features/shared_examples/**/*.rb")].each { |f| require f } # Checks for pending migrations before tests are run. # If you are not using ActiveRecord, you can remove this line. @@ -96,7 +96,7 @@ RSpec.configure do |config| # controller specs require this to work with Devise # see https://github.com/plataformatec/devise/wiki/How-To%3a-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29 - config.include Devise::TestHelpers, type: :controller + config.include Devise::Test::ControllerHelpers, type: :controller config.extend ControllerMacros, type: :controller # Allow just create(:factory) instead of needing to specify FactoryGirl.create(:factory) @@ -109,6 +109,8 @@ RSpec.configure do |config| 'mapbox.com', 'okfn.org', 'googlecode.com', - ] + ] if page.driver.browser.respond_to?(:url_blacklist) + + page.driver.browser.manage.window.maximize if page.driver.browser.respond_to?(:manage) end end diff --git a/spec/routing/account_types_routing_spec.rb b/spec/routing/account_types_routing_spec.rb index 83dba34a5..8402dd727 100644 --- a/spec/routing/account_types_routing_spec.rb +++ b/spec/routing/account_types_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe AccountTypesController do describe "routing" do - it "routes to #index" do get("/account_types").should route_to("account_types#index") end @@ -30,6 +29,5 @@ describe AccountTypesController do it "routes to #destroy" do delete("/account_types/1").should route_to("account_types#destroy", id: "1") end - end end diff --git a/spec/routing/authentications_routing_spec.rb b/spec/routing/authentications_routing_spec.rb index 75f86fd49..0601b9924 100644 --- a/spec/routing/authentications_routing_spec.rb +++ b/spec/routing/authentications_routing_spec.rb @@ -9,6 +9,5 @@ describe AuthenticationsController do it "routes to #destroy" do delete("/authentications/1").should route_to("authentications#destroy", id: "1") end - end end diff --git a/spec/routing/comments_routing_spec.rb b/spec/routing/comments_routing_spec.rb index b5466af43..5390ab066 100644 --- a/spec/routing/comments_routing_spec.rb +++ b/spec/routing/comments_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe CommentsController do describe "routing" do - it "routes to #index" do get("/comments").should route_to("comments#index") end @@ -30,6 +29,5 @@ describe CommentsController do it "routes to #destroy" do delete("/comments/1").should route_to("comments#destroy", id: "1") end - end end diff --git a/spec/routing/crops_routing_spec.rb b/spec/routing/crops_routing_spec.rb index 95985917f..97c1a874c 100644 --- a/spec/routing/crops_routing_spec.rb +++ b/spec/routing/crops_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe CropsController do describe "routing" do - it "routes to #index" do get("/crops").should route_to("crops#index") end @@ -30,6 +29,5 @@ describe CropsController do it "routes to #destroy" do delete("/crops/1").should route_to("crops#destroy", id: "1") end - end end diff --git a/spec/routing/follows_routing_spec.rb b/spec/routing/follows_routing_spec.rb index 4158502c7..ddb01e00c 100644 --- a/spec/routing/follows_routing_spec.rb +++ b/spec/routing/follows_routing_spec.rb @@ -2,7 +2,6 @@ require "spec_helper" describe FollowsController do describe "routing" do - it "routes to #create" do post("/follows").should route_to("follows#create") end @@ -10,6 +9,5 @@ describe FollowsController do it "routes to #destroy" do delete("/follows/1").should route_to("follows#destroy", id: "1") end - end end diff --git a/spec/routing/forums_routing_spec.rb b/spec/routing/forums_routing_spec.rb index 12730c556..9ce6f427b 100644 --- a/spec/routing/forums_routing_spec.rb +++ b/spec/routing/forums_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe ForumsController do describe "routing" do - it "routes to #index" do get("/forums").should route_to("forums#index") end @@ -30,6 +29,5 @@ describe ForumsController do it "routes to #destroy" do delete("/forums/1").should route_to("forums#destroy", id: "1") end - end end diff --git a/spec/routing/gardens_routing_spec.rb b/spec/routing/gardens_routing_spec.rb index 5270195ec..6888f099f 100644 --- a/spec/routing/gardens_routing_spec.rb +++ b/spec/routing/gardens_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe GardensController do describe "routing" do - it "routes to #index" do get("/gardens").should route_to("gardens#index") end @@ -30,6 +29,5 @@ describe GardensController do it "routes to #destroy" do delete("/gardens/1").should route_to("gardens#destroy", id: "1") end - end end diff --git a/spec/routing/harvests_routing_spec.rb b/spec/routing/harvests_routing_spec.rb index 4d532bcfc..c6890df15 100644 --- a/spec/routing/harvests_routing_spec.rb +++ b/spec/routing/harvests_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe HarvestsController do describe "routing" do - it "routes to #index" do get("/harvests").should route_to("harvests#index") end @@ -30,6 +29,5 @@ describe HarvestsController do it "routes to #destroy" do delete("/harvests/1").should route_to("harvests#destroy", id: "1") end - end end diff --git a/spec/routing/notifications_routing_spec.rb b/spec/routing/notifications_routing_spec.rb index d3c2b9f61..bb7335e1b 100644 --- a/spec/routing/notifications_routing_spec.rb +++ b/spec/routing/notifications_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe NotificationsController do describe "routing" do - it "routes to #index" do get("/notifications").should route_to("notifications#index") end @@ -30,6 +29,5 @@ describe NotificationsController do it "routes to #destroy" do delete("/notifications/1").should route_to("notifications#destroy", id: "1") end - end end diff --git a/spec/routing/order_items_routing_spec.rb b/spec/routing/order_items_routing_spec.rb index 6562e3a17..7487cb9f5 100644 --- a/spec/routing/order_items_routing_spec.rb +++ b/spec/routing/order_items_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe OrderItemsController do describe "routing" do - it "routes to #index" do get("/order_items").should route_to("order_items#index") end @@ -30,6 +29,5 @@ describe OrderItemsController do it "routes to #destroy" do delete("/order_items/1").should route_to("order_items#destroy", id: "1") end - end end diff --git a/spec/routing/orders_routing_spec.rb b/spec/routing/orders_routing_spec.rb index 61410745e..38184ef33 100644 --- a/spec/routing/orders_routing_spec.rb +++ b/spec/routing/orders_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe OrdersController do describe "routing" do - it "routes to #index" do get("/orders").should route_to("orders#index") end @@ -30,6 +29,5 @@ describe OrdersController do it "routes to #destroy" do delete("/orders/1").should route_to("orders#destroy", id: "1") end - end end diff --git a/spec/routing/photos_routing_spec.rb b/spec/routing/photos_routing_spec.rb index fb96758c2..a645d0a60 100644 --- a/spec/routing/photos_routing_spec.rb +++ b/spec/routing/photos_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe PhotosController do describe "routing" do - it "routes to #index" do get("/photos").should route_to("photos#index") end @@ -30,6 +29,5 @@ describe PhotosController do it "routes to #destroy" do delete("/photos/1").should route_to("photos#destroy", id: "1") end - end end diff --git a/spec/routing/plant_parts_routing_spec.rb b/spec/routing/plant_parts_routing_spec.rb index 4a4137cd6..966047f3f 100644 --- a/spec/routing/plant_parts_routing_spec.rb +++ b/spec/routing/plant_parts_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe PlantPartsController do describe "routing" do - it "routes to #index" do get("/plant_parts").should route_to("plant_parts#index") end @@ -30,6 +29,5 @@ describe PlantPartsController do it "routes to #destroy" do delete("/plant_parts/1").should route_to("plant_parts#destroy", id: "1") end - end end diff --git a/spec/routing/plantings_routing_spec.rb b/spec/routing/plantings_routing_spec.rb index 1be8416d4..473fe827e 100644 --- a/spec/routing/plantings_routing_spec.rb +++ b/spec/routing/plantings_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe PlantingsController do describe "routing" do - it "routes to #index" do get("/plantings").should route_to("plantings#index") end @@ -30,6 +29,5 @@ describe PlantingsController do it "routes to #destroy" do delete("/plantings/1").should route_to("plantings#destroy", id: "1") end - end end diff --git a/spec/routing/products_routing_spec.rb b/spec/routing/products_routing_spec.rb index 189bbe59a..15166a805 100644 --- a/spec/routing/products_routing_spec.rb +++ b/spec/routing/products_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe ProductsController do describe "routing" do - it "routes to #index" do get("/products").should route_to("products#index") end @@ -30,6 +29,5 @@ describe ProductsController do it "routes to #destroy" do delete("/products/1").should route_to("products#destroy", id: "1") end - end end diff --git a/spec/routing/roles_routing_spec.rb b/spec/routing/roles_routing_spec.rb index 752bd7c49..7b6469efb 100644 --- a/spec/routing/roles_routing_spec.rb +++ b/spec/routing/roles_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe RolesController do describe "routing" do - it "routes to #index" do get("/roles").should route_to("roles#index") end @@ -30,6 +29,5 @@ describe RolesController do it "routes to #destroy" do delete("/roles/1").should route_to("roles#destroy", id: "1") end - end end diff --git a/spec/routing/scientific_names_routing_spec.rb b/spec/routing/scientific_names_routing_spec.rb index f5bfa780e..7bbbfa764 100644 --- a/spec/routing/scientific_names_routing_spec.rb +++ b/spec/routing/scientific_names_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe ScientificNamesController do describe "routing" do - it "routes to #index" do get("/scientific_names").should route_to("scientific_names#index") end @@ -30,6 +29,5 @@ describe ScientificNamesController do it "routes to #destroy" do delete("/scientific_names/1").should route_to("scientific_names#destroy", id: "1") end - end end diff --git a/spec/routing/seeds_routing_spec.rb b/spec/routing/seeds_routing_spec.rb index 5ac7ae02c..74f4aff64 100644 --- a/spec/routing/seeds_routing_spec.rb +++ b/spec/routing/seeds_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe SeedsController do describe "routing" do - it "routes to #index" do get("/seeds").should route_to("seeds#index") end @@ -30,6 +29,5 @@ describe SeedsController do it "routes to #destroy" do delete("/seeds/1").should route_to("seeds#destroy", id: "1") end - end end diff --git a/spec/routing/updates_routing_spec.rb b/spec/routing/updates_routing_spec.rb index 32be13b86..966647515 100644 --- a/spec/routing/updates_routing_spec.rb +++ b/spec/routing/updates_routing_spec.rb @@ -2,7 +2,6 @@ require "rails_helper" describe PostsController do describe "routing" do - it "routes to #index" do get("/posts").should route_to("posts#index") end @@ -30,6 +29,5 @@ describe PostsController do it "routes to #destroy" do delete("/posts/1").should route_to("posts#destroy", id: "1") end - end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8c7b0b9fe..7b314e901 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -42,8 +42,8 @@ RSpec.configure do |config| mocks.syntax = [:should, :expect] end -# The settings below are suggested to provide a good initial experience -# with RSpec, but feel free to customize to your heart's content. + # The settings below are suggested to provide a good initial experience + # with RSpec, but feel free to customize to your heart's content. # These two settings work together to allow you to limit a spec run # to individual examples or groups you care about by tagging them with @@ -85,5 +85,4 @@ RSpec.configure do |config| # test failures related to randomization by passing the same `--seed` value # as the one that triggered the failure. Kernel.srand config.seed - end diff --git a/spec/support/controller_macros.rb b/spec/support/controller_macros.rb index 2e8162705..1bf679afb 100644 --- a/spec/support/controller_macros.rb +++ b/spec/support/controller_macros.rb @@ -1,9 +1,7 @@ # Taken unashamedly from https://github.com/plataformatec/devise/wiki/How-To%3a-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29 module ControllerMacros - def login_member(member_factory=:member) - - let(:member) { member = FactoryGirl.create(member_factory || :member) } - + def login_member(member_factory = :member) + let(:member) { FactoryGirl.create(member_factory || :member) } before(:each) do @request.env["devise.mapping"] = Devise.mappings[:member] sign_in member diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb index 051579ea7..e0dbc9aa8 100644 --- a/spec/support/database_cleaner.rb +++ b/spec/support/database_cleaner.rb @@ -1,5 +1,4 @@ RSpec.configure do |config| - config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end @@ -19,5 +18,4 @@ RSpec.configure do |config| config.after(:each) do DatabaseCleaner.clean end - -end \ No newline at end of file +end diff --git a/spec/support/devise.rb b/spec/support/devise.rb index 5fffd6c3f..0cf56ea83 100644 --- a/spec/support/devise.rb +++ b/spec/support/devise.rb @@ -1,4 +1,4 @@ RSpec.configure do |config| - config.include Devise::TestHelpers, type: :controller - config.include Devise::TestHelpers, type: :view + config.include Devise::Test::ControllerHelpers, type: :controller + config.include Devise::Test::ControllerHelpers, type: :view end diff --git a/spec/support/elasticsearch_helpers.rb b/spec/support/elasticsearch_helpers.rb index 94cf447ff..1d1db1db3 100644 --- a/spec/support/elasticsearch_helpers.rb +++ b/spec/support/elasticsearch_helpers.rb @@ -1,7 +1,7 @@ module ElasticsearchHelpers def sync_elasticsearch(crops) if ENV['GROWSTUFF_ELASTICSEARCH'] == "true" - crops.each {|crop| crop.__elasticsearch__.index_document} + crops.each { |crop| crop.__elasticsearch__.index_document } Crop.__elasticsearch__.refresh_index! end end diff --git a/spec/support/feature_helpers.rb b/spec/support/feature_helpers.rb index b4da3b755..dbe4f327b 100644 --- a/spec/support/feature_helpers.rb +++ b/spec/support/feature_helpers.rb @@ -1,6 +1,5 @@ module FeatureHelpers - - def fill_autocomplete(field, options={}) + def fill_autocomplete(field, options = {}) fill_in field, with: options[:with] page.execute_script %Q{ $('##{field}').trigger('focus'); } @@ -12,9 +11,8 @@ module FeatureHelpers selector = %Q{ul.ui-autocomplete li.ui-menu-item a:contains("#{select}")} page.execute_script %Q{ $('#{selector}').mouseenter().click() } end - end RSpec.configure do |config| config.include FeatureHelpers, type: :feature -end \ No newline at end of file +end diff --git a/spec/views/account_types/edit.html.haml_spec.rb b/spec/views/account_types/edit.html.haml_spec.rb index f8fa80cc3..c53272c0e 100644 --- a/spec/views/account_types/edit.html.haml_spec.rb +++ b/spec/views/account_types/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "account_types/edit" do diff --git a/spec/views/account_types/index.html.haml_spec.rb b/spec/views/account_types/index.html.haml_spec.rb index 76a83d269..ca86626f3 100644 --- a/spec/views/account_types/index.html.haml_spec.rb +++ b/spec/views/account_types/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "account_types/index" do diff --git a/spec/views/account_types/new.html.haml_spec.rb b/spec/views/account_types/new.html.haml_spec.rb index 8ec9fc1ff..01e1f025a 100644 --- a/spec/views/account_types/new.html.haml_spec.rb +++ b/spec/views/account_types/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "account_types/new" do diff --git a/spec/views/account_types/show.html.haml_spec.rb b/spec/views/account_types/show.html.haml_spec.rb index bfbd50243..adad83ad8 100644 --- a/spec/views/account_types/show.html.haml_spec.rb +++ b/spec/views/account_types/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "account_types/show" do diff --git a/spec/views/accounts/edit.html.haml_spec.rb b/spec/views/accounts/edit.html.haml_spec.rb index 2f265658f..4b278acc2 100644 --- a/spec/views/accounts/edit.html.haml_spec.rb +++ b/spec/views/accounts/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "accounts/edit" do diff --git a/spec/views/accounts/index.html.haml_spec.rb b/spec/views/accounts/index.html.haml_spec.rb index 60b2cf6f6..192c86dab 100644 --- a/spec/views/accounts/index.html.haml_spec.rb +++ b/spec/views/accounts/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "accounts/index" do diff --git a/spec/views/accounts/new.html.haml_spec.rb b/spec/views/accounts/new.html.haml_spec.rb index f51649226..bc2b711fa 100644 --- a/spec/views/accounts/new.html.haml_spec.rb +++ b/spec/views/accounts/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "accounts/new" do diff --git a/spec/views/accounts/show.html.haml_spec.rb b/spec/views/accounts/show.html.haml_spec.rb index 7b4e273d1..351a8fb24 100644 --- a/spec/views/accounts/show.html.haml_spec.rb +++ b/spec/views/accounts/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "accounts/show" do diff --git a/spec/views/admin/index_spec.rb b/spec/views/admin/index_spec.rb index 79ac5d965..32e77b9ee 100644 --- a/spec/views/admin/index_spec.rb +++ b/spec/views/admin/index_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'admin/index.html.haml', type: "view" do diff --git a/spec/views/admin/newsletter_spec.rb b/spec/views/admin/newsletter_spec.rb index 55f02d0fa..fb49b2e61 100644 --- a/spec/views/admin/newsletter_spec.rb +++ b/spec/views/admin/newsletter_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'admin/newsletter.html.haml', type: "view" do diff --git a/spec/views/admin/orders/index_spec.rb b/spec/views/admin/orders/index_spec.rb index 55d55773d..ea1331c94 100644 --- a/spec/views/admin/orders/index_spec.rb +++ b/spec/views/admin/orders/index_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'admin/orders/index.html.haml', type: "view" do diff --git a/spec/views/comments/edit.html.haml_spec.rb b/spec/views/comments/edit.html.haml_spec.rb index d6e7ccb2a..5446d2877 100644 --- a/spec/views/comments/edit.html.haml_spec.rb +++ b/spec/views/comments/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "comments/edit" do diff --git a/spec/views/comments/index.html.haml_spec.rb b/spec/views/comments/index.html.haml_spec.rb index 4b8cbf72f..86c30c508 100644 --- a/spec/views/comments/index.html.haml_spec.rb +++ b/spec/views/comments/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "comments/index" do @@ -24,9 +20,9 @@ describe "comments/index" do total_entries = 2 comments = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| pager.replace([ - FactoryGirl.create(:comment), - FactoryGirl.create(:comment, body: 'ROFL') - ]) + FactoryGirl.create(:comment), + FactoryGirl.create(:comment, body: 'ROFL') + ]) end assign(:comments, comments) render diff --git a/spec/views/comments/index.rss.haml_spec.rb b/spec/views/comments/index.rss.haml_spec.rb index 9c61e9f2d..68888611e 100644 --- a/spec/views/comments/index.rss.haml_spec.rb +++ b/spec/views/comments/index.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'comments/index.rss.haml' do @@ -22,9 +18,9 @@ describe 'comments/index.rss.haml' do @author = FactoryGirl.create(:member) @post = FactoryGirl.create(:post) assign(:comments, [ - FactoryGirl.create(:comment, author: @author, post: @post), - FactoryGirl.create(:comment, author: @author, post: @post) - ]) + FactoryGirl.create(:comment, author: @author, post: @post), + FactoryGirl.create(:comment, author: @author, post: @post) + ]) render end @@ -44,5 +40,4 @@ describe 'comments/index.rss.haml' do it 'shows content of comments' do rendered.should have_content "OMG LOL" end - end diff --git a/spec/views/comments/new.html.haml_spec.rb b/spec/views/comments/new.html.haml_spec.rb index d86d304cf..2e55c843d 100644 --- a/spec/views/comments/new.html.haml_spec.rb +++ b/spec/views/comments/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "comments/new" do @@ -47,5 +43,4 @@ describe "comments/new" do it 'shows markdown help' do rendered.should have_content 'Markdown' end - end diff --git a/spec/views/comments/show.html.haml_spec.rb b/spec/views/comments/show.html.haml_spec.rb index 80b59d33d..4cc8a8a71 100644 --- a/spec/views/comments/show.html.haml_spec.rb +++ b/spec/views/comments/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "comments/show" do diff --git a/spec/views/crops/_grown_for.html.haml_spec.rb b/spec/views/crops/_grown_for.html.haml_spec.rb index 10a36aff9..776d3bdf3 100644 --- a/spec/views/crops/_grown_for.html.haml_spec.rb +++ b/spec/views/crops/_grown_for.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/_grown_for" do diff --git a/spec/views/crops/_planting_advice.html.haml_spec.rb b/spec/views/crops/_planting_advice.html.haml_spec.rb index 77e7e1b38..62d85bcfa 100644 --- a/spec/views/crops/_planting_advice.html.haml_spec.rb +++ b/spec/views/crops/_planting_advice.html.haml_spec.rb @@ -1,24 +1,20 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/_planting_advice" do before(:each) do - @owner = FactoryGirl.create(:member) + @owner = FactoryGirl.create(:member) @crop = FactoryGirl.create(:crop) @garden = FactoryGirl.create(:garden, owner: @owner) @planting = FactoryGirl.create(:planting, @@ -48,11 +44,9 @@ describe "crops/_planting_advice" do rendered.should have_content "Plant in:" rendered.should have_content "sun (2), shade (1)" end - end context "planted from" do - it "doesn't show planted_from if none are set" do render partial: 'crops/planting_advice', locals: { crop: @crop } rendered.should have_content "Plant from: not known." @@ -74,5 +68,4 @@ describe "crops/_planting_advice" do rendered.should have_content "seed (2), cutting (1)" end end - end diff --git a/spec/views/crops/_popover.html.haml_spec.rb b/spec/views/crops/_popover.html.haml_spec.rb index 3ef9660f6..af97d7645 100644 --- a/spec/views/crops/_popover.html.haml_spec.rb +++ b/spec/views/crops/_popover.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/_popover" do @@ -32,5 +28,4 @@ describe "crops/_popover" do it 'shows count of plantings' do rendered.should have_content '1 time' end - end diff --git a/spec/views/crops/edit.html.haml_spec.rb b/spec/views/crops/edit.html.haml_spec.rb index 98957fc85..436114f78 100644 --- a/spec/views/crops/edit.html.haml_spec.rb +++ b/spec/views/crops/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/edit" do @@ -32,5 +28,4 @@ describe "crops/edit" do it "shows the creator" do rendered.should have_content "Added by #{@crop.creator} less than a minute ago." end - end diff --git a/spec/views/crops/hierarchy.html.haml_spec.rb b/spec/views/crops/hierarchy.html.haml_spec.rb index 32bfc4248..077add247 100644 --- a/spec/views/crops/hierarchy.html.haml_spec.rb +++ b/spec/views/crops/hierarchy.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/hierarchy" do diff --git a/spec/views/crops/index.html.haml_spec.rb b/spec/views/crops/index.html.haml_spec.rb index 0a779241d..a11cbcb76 100644 --- a/spec/views/crops/index.html.haml_spec.rb +++ b/spec/views/crops/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/index" do @@ -26,7 +22,7 @@ describe "crops/index" do @maize = FactoryGirl.create(:maize) assign(:crops, [@tomato, @maize]) paginated_crops = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| - pager.replace([ @tomato, @maize ]) + pager.replace([@tomato, @maize]) end assign(:paginated_crops, paginated_crops) end @@ -40,8 +36,8 @@ describe "crops/index" do end it "linkifies crop images" do - render - assert_select "img", src: :tomato + render + assert_select "img", src: :tomato end context "logged in and crop wrangler" do diff --git a/spec/views/crops/index.rss.haml_spec.rb b/spec/views/crops/index.rss.haml_spec.rb index b07eab95a..5726c162c 100644 --- a/spec/views/crops/index.rss.haml_spec.rb +++ b/spec/views/crops/index.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'crops/index.rss.haml' do @@ -34,5 +30,4 @@ describe 'crops/index.rss.haml' do rendered.should have_content @tomato.name rendered.should have_content @maize.name end - end diff --git a/spec/views/crops/new.html.haml_spec.rb b/spec/views/crops/new.html.haml_spec.rb index 8b5484235..406b5e5c2 100644 --- a/spec/views/crops/new.html.haml_spec.rb +++ b/spec/views/crops/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/new" do @@ -32,5 +28,4 @@ describe "crops/new" do it "shows a link to crop wrangling guidelines" do assert_select "a[href^='http://wiki.growstuff.org']", "crop wrangling guide" end - end diff --git a/spec/views/crops/wrangle.html.haml_spec.rb b/spec/views/crops/wrangle.html.haml_spec.rb index e4f41b8c8..b0ff06281 100644 --- a/spec/views/crops/wrangle.html.haml_spec.rb +++ b/spec/views/crops/wrangle.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "crops/wrangle" do @@ -26,7 +22,7 @@ describe "crops/wrangle" do @tomato = FactoryGirl.create(:tomato) @maize = FactoryGirl.create(:maize) crops = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| - pager.replace([ @tomato, @maize ]) + pager.replace([@tomato, @maize]) end assign(:crops, crops) assign(:crop_wranglers, Role.crop_wranglers) @@ -48,5 +44,4 @@ describe "crops/wrangle" do assert_select "a", text: @maize.name assert_select "a", text: @tomato.name end - end diff --git a/spec/views/devise/confirmations/new_spec.rb b/spec/views/devise/confirmations/new_spec.rb index 8d567d793..720822083 100644 --- a/spec/views/devise/confirmations/new_spec.rb +++ b/spec/views/devise/confirmations/new_spec.rb @@ -1,5 +1,4 @@ describe 'devise/confirmations/new.html.haml', type: "view" do - before(:each) do @view.stub(:resource).and_return(Member.new) @view.stub(:resource_name).and_return("member") diff --git a/spec/views/devise/mailer/confirmation_instructions_spec.rb b/spec/views/devise/mailer/confirmation_instructions_spec.rb index 6f60268e4..f10eb6176 100644 --- a/spec/views/devise/mailer/confirmation_instructions_spec.rb +++ b/spec/views/devise/mailer/confirmation_instructions_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/mailer/confirmation_instructions.html.haml', type: "view" do - context "logged in" do before(:each) do @resource = FactoryGirl.create(:member) diff --git a/spec/views/devise/mailer/reset_password_instructions_spec.rb b/spec/views/devise/mailer/reset_password_instructions_spec.rb index 91c46a696..7d0cdfe6a 100644 --- a/spec/views/devise/mailer/reset_password_instructions_spec.rb +++ b/spec/views/devise/mailer/reset_password_instructions_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/mailer/reset_password_instructions.html.haml', type: "view" do - context "logged in" do before(:each) do @resource = mock_model(Member) diff --git a/spec/views/devise/mailer/unlock_instructions_spec.rb b/spec/views/devise/mailer/unlock_instructions_spec.rb index 5c90260c5..e0fb50e50 100644 --- a/spec/views/devise/mailer/unlock_instructions_spec.rb +++ b/spec/views/devise/mailer/unlock_instructions_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/mailer/unlock_instructions.html.haml', type: "view" do context "logged in" do @@ -31,4 +27,3 @@ describe 'devise/mailer/unlock_instructions.html.haml', type: "view" do end end end - diff --git a/spec/views/devise/registrations/edit_spec.rb b/spec/views/devise/registrations/edit_spec.rb index 8fb096255..2aef2fa70 100644 --- a/spec/views/devise/registrations/edit_spec.rb +++ b/spec/views/devise/registrations/edit_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/registrations/edit.html.haml', type: "view" do - context "logged in" do before(:each) do controller.stub(:current_user) { nil } @@ -75,7 +70,6 @@ describe 'devise/registrations/edit.html.haml', type: "view" do end context 'other sites section' do - context 'not connected to twitter' do it 'has a link to connect' do render @@ -115,9 +109,6 @@ describe 'devise/registrations/edit.html.haml', type: "view" do assert_select "a", href: @flickr_auth, text: "Disconnect" end end - end - end - end diff --git a/spec/views/devise/registrations/new_spec.rb b/spec/views/devise/registrations/new_spec.rb index 5d6d8ac5a..be00abae9 100644 --- a/spec/views/devise/registrations/new_spec.rb +++ b/spec/views/devise/registrations/new_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/registrations/new.html.haml', type: "view" do - context "logged in" do before(:each) do @view.stub(:resource).and_return(Member.new) @@ -28,7 +23,7 @@ describe 'devise/registrations/new.html.haml', type: "view" do end it 'should have some fields' do - rendered.should have_content 'Email' + rendered.should have_content 'Email' end it 'has a checkbox for newsletter subscription' do diff --git a/spec/views/devise/sessions/new_spec.rb b/spec/views/devise/sessions/new_spec.rb index 674e92978..93b14b9c3 100644 --- a/spec/views/devise/sessions/new_spec.rb +++ b/spec/views/devise/sessions/new_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/sessions/new.html.haml', type: "view" do - context "logged in" do before(:each) do @view.stub(:resource).and_return(Member.new) @@ -28,8 +23,8 @@ describe 'devise/sessions/new.html.haml', type: "view" do end it 'should have some fields' do - rendered.should have_content 'Remember me' - rendered.should have_content 'Password' + rendered.should have_content 'Remember me' + rendered.should have_content 'Password' end end end diff --git a/spec/views/devise/shared/_links_spec.rb b/spec/views/devise/shared/_links_spec.rb index 7e71bbc12..39147113f 100644 --- a/spec/views/devise/shared/_links_spec.rb +++ b/spec/views/devise/shared/_links_spec.rb @@ -1,5 +1,4 @@ describe 'devise/shared/_links.haml', type: "view" do - def devise_mapping(register, recover, confirm, lock, oauth) dm = double("mappings") dm.stub(registerable?: register) @@ -7,20 +6,20 @@ describe 'devise/shared/_links.haml', type: "view" do dm.stub(confirmable?: confirm) dm.stub(lockable?: lock) dm.stub(omniauthable?: oauth) - return dm + dm end it 'should have a sign-in link if not in sessions' do @view.stub(:controller_name).and_return("anything but sessions") @view.stub(:resource_name).and_return("member") - @view.stub(devise_mapping: devise_mapping(false, false, false, false, false)) + @view.stub(devise_mapping: devise_mapping(false, false, false, false, false)) render end it "shouldn't have a sign-in link if in sessions" do @view.stub(:controller_name).and_return("sessions") @view.stub(:resource_name).and_return("member") - @view.stub(devise_mapping: devise_mapping(false, false, false, false, false)) + @view.stub(devise_mapping: devise_mapping(false, false, false, false, false)) render end end diff --git a/spec/views/devise/unlocks/new_spec.rb b/spec/views/devise/unlocks/new_spec.rb index e145900e4..c53968a8d 100644 --- a/spec/views/devise/unlocks/new_spec.rb +++ b/spec/views/devise/unlocks/new_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'devise/unlocks/new.html.haml', type: "view" do - context "logged in" do before(:each) do @view.stub(:resource).and_return(Member.new) @@ -28,7 +23,7 @@ describe 'devise/unlocks/new.html.haml', type: "view" do end it 'should have some fields' do - rendered.should have_content 'Email' + rendered.should have_content 'Email' end end end diff --git a/spec/views/forums/edit.html.haml_spec.rb b/spec/views/forums/edit.html.haml_spec.rb index e3c874519..002a52f3e 100644 --- a/spec/views/forums/edit.html.haml_spec.rb +++ b/spec/views/forums/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "forums/edit" do diff --git a/spec/views/forums/index.html.haml_spec.rb b/spec/views/forums/index.html.haml_spec.rb index dc1bdba58..701504d7f 100644 --- a/spec/views/forums/index.html.haml_spec.rb +++ b/spec/views/forums/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "forums/index" do @@ -22,7 +18,7 @@ describe "forums/index" do controller.stub(:current_user) { @admin } @forum1 = FactoryGirl.create(:forum) @forum2 = FactoryGirl.create(:forum) - assign(:forums, [ @forum1, @forum2 ]) + assign(:forums, [@forum1, @forum2]) end it "renders a list of forums" do @@ -51,6 +47,5 @@ describe "forums/index" do it "displays comment count" do assert_select "td", text: "1" end - end end diff --git a/spec/views/forums/new.html.haml_spec.rb b/spec/views/forums/new.html.haml_spec.rb index 59988ae90..de0be5b3c 100644 --- a/spec/views/forums/new.html.haml_spec.rb +++ b/spec/views/forums/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "forums/new" do diff --git a/spec/views/forums/show.html.haml_spec.rb b/spec/views/forums/show.html.haml_spec.rb index 77ed26382..f2fa920a6 100644 --- a/spec/views/forums/show.html.haml_spec.rb +++ b/spec/views/forums/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "forums/show" do diff --git a/spec/views/gardens/edit.html.haml_spec.rb b/spec/views/gardens/edit.html.haml_spec.rb index 959600d77..f8b4b5e03 100644 --- a/spec/views/gardens/edit.html.haml_spec.rb +++ b/spec/views/gardens/edit.html.haml_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "gardens/edit" do - context "logged in" do before(:each) do @owner = FactoryGirl.create(:member) @@ -41,5 +36,4 @@ describe "gardens/edit" do end end end - end diff --git a/spec/views/gardens/new.html.haml_spec.rb b/spec/views/gardens/new.html.haml_spec.rb index 84b689eb0..337b9066c 100644 --- a/spec/views/gardens/new.html.haml_spec.rb +++ b/spec/views/gardens/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "gardens/new" do diff --git a/spec/views/gardens/show.html.haml_spec.rb b/spec/views/gardens/show.html.haml_spec.rb index dff7ebefa..0e166e453 100644 --- a/spec/views/gardens/show.html.haml_spec.rb +++ b/spec/views/gardens/show.html.haml_spec.rb @@ -1,24 +1,20 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "gardens/show" do before(:each) do - @owner = FactoryGirl.create(:member) + @owner = FactoryGirl.create(:member) controller.stub(:current_user) { @owner } @garden = FactoryGirl.create(:garden, owner: @owner) @planting = FactoryGirl.create(:planting, garden: @garden) @@ -51,7 +47,6 @@ describe "gardens/show" do end context 'signed in' do - before :each do sign_in @owner render @@ -69,5 +64,4 @@ describe "gardens/show" do assert_select("a[href='#{new_planting_path}?garden_id=#{@garden.id}']") end end - end diff --git a/spec/views/harvests/edit.html.haml_spec.rb b/spec/views/harvests/edit.html.haml_spec.rb index f318e3a79..e0959b451 100644 --- a/spec/views/harvests/edit.html.haml_spec.rb +++ b/spec/views/harvests/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "harvests/edit" do diff --git a/spec/views/harvests/index.html.haml_spec.rb b/spec/views/harvests/index.html.haml_spec.rb index 923b3fb39..32baadc1a 100644 --- a/spec/views/harvests/index.html.haml_spec.rb +++ b/spec/views/harvests/index.html.haml_spec.rb @@ -1,25 +1,21 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "harvests/index" do before(:each) do controller.stub(:current_user) { nil } - @member = FactoryGirl.create(:member) + @member = FactoryGirl.create(:member) @tomato = FactoryGirl.create(:tomato) @maize = FactoryGirl.create(:maize) @pp = FactoryGirl.create(:plant_part) @@ -28,16 +24,16 @@ describe "harvests/index" do total_entries = 2 harvests = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| pager.replace([ - FactoryGirl.create(:harvest, - crop: @tomato, - owner: @member - ), - FactoryGirl.create(:harvest, - crop: @maize, - plant_part: @pp, - owner: @member - ) - ]) + FactoryGirl.create(:harvest, + crop: @tomato, + owner: @member + ), + FactoryGirl.create(:harvest, + crop: @maize, + plant_part: @pp, + owner: @member + ) + ]) end assign(:harvests, harvests) render @@ -61,5 +57,4 @@ describe "harvests/index" do render view.content_for(:title).should have_content @tomato.name end - end diff --git a/spec/views/harvests/new.html.haml_spec.rb b/spec/views/harvests/new.html.haml_spec.rb index 20a908310..1b300f1e3 100644 --- a/spec/views/harvests/new.html.haml_spec.rb +++ b/spec/views/harvests/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "harvests/new" do @@ -27,7 +23,7 @@ describe "harvests/new" do assert_select "input#crop", class: "ui-autocomplete-input" assert_select "input#harvest_crop_id", name: "harvest[crop_id]" assert_select "select#harvest_plant_part_id", name: "harvest[plant_part_id]" -# some browsers interpret without a step as "integer" + # some browsers interpret without a step as "integer" assert_select "input#harvest_quantity[step=any]", name: "harvest[quantity]" assert_select "input#harvest_weight_quantity[step=any]", name: "harvest[quantity]" assert_select "select#harvest_unit", name: "harvest[unit]" diff --git a/spec/views/harvests/show.html.haml_spec.rb b/spec/views/harvests/show.html.haml_spec.rb index 91014941b..b6a1ec7a0 100644 --- a/spec/views/harvests/show.html.haml_spec.rb +++ b/spec/views/harvests/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "harvests/show" do @@ -29,5 +25,4 @@ describe "harvests/show" do rendered.should have_content @harvest.harvested_at.to_s rendered.should have_content @harvest.plant_part.to_s end - end diff --git a/spec/views/home/_blurb.html.haml_spec.rb b/spec/views/home/_blurb.html.haml_spec.rb index 94e7550d1..710fcd4d4 100644 --- a/spec/views/home/_blurb.html.haml_spec.rb +++ b/spec/views/home/_blurb.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/_blurb.html.haml', type: "view" do @@ -37,5 +33,4 @@ describe 'home/_blurb.html.haml', type: "view" do assert_select "a", href: new_member_session_path end end - end diff --git a/spec/views/home/_crops.html.haml_spec.rb b/spec/views/home/_crops.html.haml_spec.rb index 3009a7cc4..8f375f3e1 100644 --- a/spec/views/home/_crops.html.haml_spec.rb +++ b/spec/views/home/_crops.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/_crops.html.haml', type: "view" do diff --git a/spec/views/home/_members.html.haml_spec.rb b/spec/views/home/_members.html.haml_spec.rb index f208c1bde..a4391da51 100644 --- a/spec/views/home/_members.html.haml_spec.rb +++ b/spec/views/home/_members.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/_members.html.haml', type: "view" do @@ -35,5 +31,4 @@ describe 'home/_members.html.haml', type: "view" do rendered.should have_content @member.location rendered.should have_content @planting.crop_name end - end diff --git a/spec/views/home/_seeds.html.haml_spec.rb b/spec/views/home/_seeds.html.haml_spec.rb index 6cbd276f7..a904f47ff 100644 --- a/spec/views/home/_seeds.html.haml_spec.rb +++ b/spec/views/home/_seeds.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/_seeds.html.haml', type: "view" do diff --git a/spec/views/home/_stats.html.haml_spec.rb b/spec/views/home/_stats.html.haml_spec.rb index 0eeaf66f8..6bfc3e6fe 100644 --- a/spec/views/home/_stats.html.haml_spec.rb +++ b/spec/views/home/_stats.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/_stats.html.haml', type: "view" do diff --git a/spec/views/home/index_spec.rb b/spec/views/home/index_spec.rb index 84dd65bde..b5a726e23 100644 --- a/spec/views/home/index_spec.rb +++ b/spec/views/home/index_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'home/index.html.haml', type: "view" do @@ -57,5 +53,4 @@ describe 'home/index.html.haml', type: "view" do rendered.should have_content "Welcome to #{ENV['GROWSTUFF_SITE_NAME']}, #{@member.login_name}" end end - end diff --git a/spec/views/layouts/_header_spec.rb b/spec/views/layouts/_header_spec.rb index 8742796c1..2e6f8e36a 100644 --- a/spec/views/layouts/_header_spec.rb +++ b/spec/views/layouts/_header_spec.rb @@ -10,10 +10,6 @@ ## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'layouts/_header.html.haml', type: "view" do @@ -64,11 +60,9 @@ describe 'layouts/_header.html.haml', type: "view" do assert_select("form[action='#{crops_search_path}']") assert_select("input#term") end - end context "logged in" do - before(:each) do @member = FactoryGirl.create(:member) sign_in @member @@ -110,6 +104,5 @@ describe 'layouts/_header.html.haml', type: "view" do rendered.should have_content 'Inbox (1)' end end - end end diff --git a/spec/views/layouts/_meta_spec.rb b/spec/views/layouts/_meta_spec.rb index 716429e37..805f0298d 100644 --- a/spec/views/layouts/_meta_spec.rb +++ b/spec/views/layouts/_meta_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'layouts/_meta.html.haml', type: "view" do @@ -39,5 +35,4 @@ describe 'layouts/_meta.html.haml', type: "view" do it 'should have a title' do assert_select "head>title" end - end diff --git a/spec/views/layouts/application_spec.rb b/spec/views/layouts/application_spec.rb index af710ce6f..b773cce58 100644 --- a/spec/views/layouts/application_spec.rb +++ b/spec/views/layouts/application_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'layouts/application.html.haml', type: "view" do @@ -27,5 +23,4 @@ describe 'layouts/application.html.haml', type: "view" do assert_select "script", text: 'alert("foo!")' rendered.should_not have_content 'script' end - end diff --git a/spec/views/members/_location.html.haml_spec.rb b/spec/views/members/_location.html.haml_spec.rb index 43fb66285..23beefc69 100644 --- a/spec/views/members/_location.html.haml_spec.rb +++ b/spec/views/members/_location.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "members/_location" do @@ -45,7 +41,5 @@ describe "members/_location" do it "doesn't link anywhere" do assert_select "a", false end - end - end diff --git a/spec/views/members/index.html.haml_spec.rb b/spec/views/members/index.html.haml_spec.rb index ee1537b77..122b88b48 100644 --- a/spec/views/members/index.html.haml_spec.rb +++ b/spec/views/members/index.html.haml_spec.rb @@ -10,10 +10,6 @@ ## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "members/index" do @@ -24,7 +20,7 @@ describe "members/index" do total_entries = 2 @member = FactoryGirl.create(:london_member) members = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| - pager.replace([ @member, @member ]) + pager.replace([@member, @member]) end assign(:members, members) render @@ -37,5 +33,4 @@ describe "members/index" do it 'contains member locations' do rendered.should have_content @member.location end - end diff --git a/spec/views/members/show.rss.haml_spec.rb b/spec/views/members/show.rss.haml_spec.rb index dcfa0b7b6..5a3320a8b 100644 --- a/spec/views/members/show.rss.haml_spec.rb +++ b/spec/views/members/show.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'members/show.rss.haml', type: "view" do @@ -34,13 +30,12 @@ describe 'members/show.rss.haml', type: "view" do end it 'renders post bodies to HTML and XML-escapes them' do -# The variable "rendered" has been entity-replaced and tag-stripped -# The literal string output contains "<strong>" etc. + # The variable "rendered" has been entity-replaced and tag-stripped + # The literal string output contains "<strong>" etc. rendered.should have_content "strong" end it 'gives the author in the item title' do rendered.should have_content "#{@post1.subject} by #{@post1.author}" end - end diff --git a/spec/views/notifications/index.html.haml_spec.rb b/spec/views/notifications/index.html.haml_spec.rb index a7ec6a696..5e0f95beb 100644 --- a/spec/views/notifications/index.html.haml_spec.rb +++ b/spec/views/notifications/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "notifications/index" do @@ -25,12 +21,11 @@ describe "notifications/index" do context "ordinary notifications" do before(:each) do @notification = FactoryGirl.create(:notification, sender: @member, - recipient: @member) - assign(:notifications, Kaminari.paginate_array([ @notification, @notification ]).page(1)) + recipient: @member) + assign(:notifications, Kaminari.paginate_array([@notification, @notification]).page(1)) render end - it "renders a list of notifications" do assert_select "table" assert_select "tr>td", text: @notification.sender.to_s, count: 2 @@ -45,7 +40,7 @@ describe "notifications/index" do context "no subject" do it "shows (no subject)" do @notification = FactoryGirl.create(:notification, - sender: @member, recipient: @member, subject: nil) + sender: @member, recipient: @member, subject: nil) assign(:notifications, Kaminari.paginate_array([@notification]).page(1)) render rendered.should have_content "(no subject)" @@ -55,11 +50,10 @@ describe "notifications/index" do context "whitespace-only subject" do it "shows (no subject)" do @notification = FactoryGirl.create(:notification, - sender: @member, recipient: @member, subject: " ") + sender: @member, recipient: @member, subject: " ") assign(:notifications, Kaminari.paginate_array([@notification]).page(1)) render rendered.should have_content "(no subject)" end end - end diff --git a/spec/views/notifications/new.html.haml_spec.rb b/spec/views/notifications/new.html.haml_spec.rb index b2e6cd125..a5daa64f5 100644 --- a/spec/views/notifications/new.html.haml_spec.rb +++ b/spec/views/notifications/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "notifications/new" do @@ -22,7 +18,7 @@ describe "notifications/new" do @sender = FactoryGirl.create(:member) assign(:notification, FactoryGirl.create(:notification, recipient_id: @recipient.id, sender_id: @sender.id)) sign_in @sender - controller.stub(:current_user) { @sender} + controller.stub(:current_user) { @sender } end it "renders new message form" do @@ -63,5 +59,4 @@ describe "notifications/new" do render rendered.should have_content 'Markdown' end - end diff --git a/spec/views/notifications/show.html.haml_spec.rb b/spec/views/notifications/show.html.haml_spec.rb index a0ca5ec8f..4d5a71dfc 100644 --- a/spec/views/notifications/show.html.haml_spec.rb +++ b/spec/views/notifications/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "notifications/show" do @@ -36,7 +32,6 @@ describe "notifications/show" do end it "includes a reply button" do - assert_select "a", {href: @reply_link}, "Reply" + assert_select "a", { href: @reply_link }, "Reply" end - end diff --git a/spec/views/notifier/notify.html.haml_spec.rb b/spec/views/notifier/notify.html.haml_spec.rb index 5a6c96116..e3a7cbdb4 100644 --- a/spec/views/notifier/notify.html.haml_spec.rb +++ b/spec/views/notifier/notify.html.haml_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'notifier/notify.html.haml', type: "view" do - before(:each) do @notification = FactoryGirl.create(:notification) @reply_link = "http://example.com" diff --git a/spec/views/orders/index.html.haml_spec.rb b/spec/views/orders/index.html.haml_spec.rb index 297ac9ad4..38ab39362 100644 --- a/spec/views/orders/index.html.haml_spec.rb +++ b/spec/views/orders/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "orders/index" do @@ -22,7 +18,7 @@ describe "orders/index" do sign_in @member @order1 = FactoryGirl.create(:order, member: @member) @order2 = FactoryGirl.create(:completed_order, member: @member) - assign(:orders, [ @order1, @order2 ]) + assign(:orders, [@order1, @order2]) end it "shows your current account status" do diff --git a/spec/views/orders/show.html.haml_spec.rb b/spec/views/orders/show.html.haml_spec.rb index 10fd2f5d7..b6c3da53b 100644 --- a/spec/views/orders/show.html.haml_spec.rb +++ b/spec/views/orders/show.html.haml_spec.rb @@ -1,23 +1,18 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "orders/show" do - before(:each) do @member = FactoryGirl.create(:member) sign_in @member @@ -84,7 +79,5 @@ describe "orders/show" do it "doesn't show delete order button" do assert_select "a", text: "Delete this order", count: 0 end - end - end diff --git a/spec/views/photos/edit.html.haml_spec.rb b/spec/views/photos/edit.html.haml_spec.rb index 6df82b418..5ff07030b 100644 --- a/spec/views/photos/edit.html.haml_spec.rb +++ b/spec/views/photos/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "photos/edit" do @@ -25,5 +21,4 @@ describe "photos/edit" do fullsize_url: "MyString" )) end - end diff --git a/spec/views/photos/index.html.haml_spec.rb b/spec/views/photos/index.html.haml_spec.rb index 1741d9aa3..a59e4eb2c 100644 --- a/spec/views/photos/index.html.haml_spec.rb +++ b/spec/views/photos/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "photos/index" do @@ -23,9 +19,9 @@ describe "photos/index" do total_entries = 2 photos = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| pager.replace([ - FactoryGirl.create(:photo), - FactoryGirl.create(:photo) - ]) + FactoryGirl.create(:photo), + FactoryGirl.create(:photo) + ]) end assign(:photos, photos) end diff --git a/spec/views/photos/new.html.haml_spec.rb b/spec/views/photos/new.html.haml_spec.rb index 47df538b4..dab06e8b0 100644 --- a/spec/views/photos/new.html.haml_spec.rb +++ b/spec/views/photos/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "photos/new" do @@ -39,7 +35,7 @@ describe "photos/new" do context "user has photosets" do before(:each) do - assign(:sets, {"foo" => "bar"}) # Hash of names => IDs + assign(:sets, { "foo" => "bar" }) # Hash of names => IDs end it "shows a dropdown with sets from Flickr" do @@ -48,10 +44,9 @@ describe "photos/new" do end it "shows the current photoset" do - assign(:current_set, "bar") # the ID of the set + assign(:current_set, "bar") # the ID of the set render assert_select "h2", "foo" # the name of the set end end - end diff --git a/spec/views/photos/show.html.haml_spec.rb b/spec/views/photos/show.html.haml_spec.rb index 055032f76..2a2e7afeb 100644 --- a/spec/views/photos/show.html.haml_spec.rb +++ b/spec/views/photos/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "photos/show" do @@ -38,7 +34,7 @@ describe "photos/show" do it "links to the CC license" do assert_select "a", href: @photo.license_url, - text: @photo.license_name + text: @photo.license_name end it "shows a link to the original image" do @@ -59,7 +55,5 @@ describe "photos/show" do it "contains the phrase 'All rights reserved'" do rendered.should have_content "All rights reserved" end - end - end diff --git a/spec/views/places/_map_attribution.html.haml_spec.rb b/spec/views/places/_map_attribution.html.haml_spec.rb index cbb305ed6..efc101bc1 100644 --- a/spec/views/places/_map_attribution.html.haml_spec.rb +++ b/spec/views/places/_map_attribution.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "places/_map_attribution.html.haml", type: :view do @@ -23,12 +19,12 @@ describe "places/_map_attribution.html.haml", type: :view do it "links to OpenStreetMap" do assert_select "a", href: "http://openstreetmap.org", - text: "OpenStreetMap" + text: "OpenStreetMap" end it "links to the ODbL" do assert_select "a", href: "http://www.openstreetmap.org/copyright", - text: "ODbL" + text: "ODbL" end it "links to CloudMade" do diff --git a/spec/views/places/index.html.haml_spec.rb b/spec/views/places/index.html.haml_spec.rb index 10c5caca6..44299c286 100644 --- a/spec/views/places/index.html.haml_spec.rb +++ b/spec/views/places/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "places/index" do diff --git a/spec/views/places/show.html.haml_spec.rb b/spec/views/places/show.html.haml_spec.rb index 7cfa2c16c..57f7e9742 100644 --- a/spec/views/places/show.html.haml_spec.rb +++ b/spec/views/places/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "places/show" do @@ -39,5 +35,4 @@ describe "places/show" do rendered.should have_content m.login_name end end - end diff --git a/spec/views/plant_parts/edit.html.haml_spec.rb b/spec/views/plant_parts/edit.html.haml_spec.rb index 1f92923d8..2eeb4e535 100644 --- a/spec/views/plant_parts/edit.html.haml_spec.rb +++ b/spec/views/plant_parts/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plant_parts/edit" do diff --git a/spec/views/plant_parts/index.html.haml_spec.rb b/spec/views/plant_parts/index.html.haml_spec.rb index 1fe26abba..adb0f9a46 100644 --- a/spec/views/plant_parts/index.html.haml_spec.rb +++ b/spec/views/plant_parts/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plant_parts/index" do @@ -28,5 +24,4 @@ describe "plant_parts/index" do rendered.should have_content @pp.name assert_select "a", href: plant_part_path(@pp) end - end diff --git a/spec/views/plant_parts/new.html.haml_spec.rb b/spec/views/plant_parts/new.html.haml_spec.rb index 213eee57a..e25ba2da1 100644 --- a/spec/views/plant_parts/new.html.haml_spec.rb +++ b/spec/views/plant_parts/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plant_parts/new" do diff --git a/spec/views/plant_parts/show.html.haml_spec.rb b/spec/views/plant_parts/show.html.haml_spec.rb index 7c23b9bb9..8b267c449 100644 --- a/spec/views/plant_parts/show.html.haml_spec.rb +++ b/spec/views/plant_parts/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plant_parts/show" do @@ -32,4 +28,3 @@ describe "plant_parts/show" do end end end - diff --git a/spec/views/plantings/_form.html.haml_spec.rb b/spec/views/plantings/_form.html.haml_spec.rb index 0d813b678..1ba3be93e 100644 --- a/spec/views/plantings/_form.html.haml_spec.rb +++ b/spec/views/plantings/_form.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plantings/_form" do @@ -36,6 +32,4 @@ describe "plantings/_form" do it "has a free-form text field containing the planting date in ISO format" do assert_select "input#planting_planted_at[type='text'][value='2013-03-01']" end - end - diff --git a/spec/views/plantings/edit.html.haml_spec.rb b/spec/views/plantings/edit.html.haml_spec.rb index 24b0b81ce..1ea5fc586 100644 --- a/spec/views/plantings/edit.html.haml_spec.rb +++ b/spec/views/plantings/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plantings/edit" do @@ -35,7 +31,6 @@ describe "plantings/edit" do @planting = assign(:planting, FactoryGirl.create(:planting, garden: @garden, crop: @tomato) ) - end context "logged in" do @@ -66,6 +61,5 @@ describe "plantings/edit" do assert_select "select#planting_garden_id", html: /option selected value="#{@garden.id}"/ end - end end diff --git a/spec/views/plantings/index.html.haml_spec.rb b/spec/views/plantings/index.html.haml_spec.rb index 928735dde..54f2bb63a 100644 --- a/spec/views/plantings/index.html.haml_spec.rb +++ b/spec/views/plantings/index.html.haml_spec.rb @@ -1,25 +1,21 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plantings/index" do before(:each) do controller.stub(:current_user) { nil } - @member = FactoryGirl.create(:member) + @member = FactoryGirl.create(:member) @garden = FactoryGirl.create(:garden, owner: @member) @tomato = FactoryGirl.create(:tomato) @maize = FactoryGirl.create(:maize) @@ -28,25 +24,25 @@ describe "plantings/index" do total_entries = 3 plantings = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| pager.replace([ - FactoryGirl.create(:planting, - garden: @garden, - crop: @tomato, - owner: @member - ), - FactoryGirl.create(:planting, - garden: @garden, - crop: @maize, - description: '', - planted_at: Time.local(2013, 1, 13) - ), - FactoryGirl.create(:planting, - garden: @garden, - crop: @tomato, - planted_at: Time.local(2013, 1, 13), - finished_at: Time.local(2013, 1, 20), - finished: true - ) - ]) + FactoryGirl.create(:planting, + garden: @garden, + crop: @tomato, + owner: @member + ), + FactoryGirl.create(:planting, + garden: @garden, + crop: @maize, + description: '', + planted_at: Time.local(2013, 1, 13) + ), + FactoryGirl.create(:planting, + garden: @garden, + crop: @tomato, + planted_at: Time.local(2013, 1, 13), + finished_at: Time.local(2013, 1, 20), + finished: true + ) + ]) end assign(:plantings, plantings) render diff --git a/spec/views/plantings/index.rss.haml_spec.rb b/spec/views/plantings/index.rss.haml_spec.rb index 9f3d7ccc1..58a4a2996 100644 --- a/spec/views/plantings/index.rss.haml_spec.rb +++ b/spec/views/plantings/index.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'plantings/index.rss.haml' do @@ -54,7 +50,7 @@ describe 'plantings/index.rss.haml' do context "one person's plantings" do before :each do @planting = FactoryGirl.create(:planting) - assign(:plantings, [@planting ]) + assign(:plantings, [@planting]) assign(:owner, @planting.owner) render end diff --git a/spec/views/plantings/new.html.haml_spec.rb b/spec/views/plantings/new.html.haml_spec.rb index 825d64c5b..2fadcf38b 100644 --- a/spec/views/plantings/new.html.haml_spec.rb +++ b/spec/views/plantings/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plantings/new" do @@ -31,7 +27,6 @@ describe "plantings/new" do garden: @garden_a, crop: @crop2 )) - end context "logged in" do diff --git a/spec/views/plantings/show.html.haml_spec.rb b/spec/views/plantings/show.html.haml_spec.rb index f04604722..f6136f8f6 100644 --- a/spec/views/plantings/show.html.haml_spec.rb +++ b/spec/views/plantings/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "plantings/show" do @@ -22,11 +18,11 @@ describe "plantings/show" do @crop = FactoryGirl.create(:tomato) @planting = assign(:planting, FactoryGirl.create(:planting, garden: @garden, crop: @crop, - planted_from: 'cutting') + planted_from: 'cutting') ) end - before (:each) do + before(:each) do @member = FactoryGirl.create(:member) controller.stub(:current_user) { @member } @p = create_planting_for(@member) diff --git a/spec/views/posts/_single.html.haml_spec.rb b/spec/views/posts/_single.html.haml_spec.rb index 14551afc3..656a4194b 100644 --- a/spec/views/posts/_single.html.haml_spec.rb +++ b/spec/views/posts/_single.html.haml_spec.rb @@ -1,25 +1,20 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "posts/_single" do - def render_post() - render partial: "single", locals: { post: @post } + render partial: "single", locals: { post: @post } end before(:each) do @@ -37,7 +32,7 @@ describe "posts/_single" do end it "doesn't contain a link to new comment" do - assert_select("a", {href: new_comment_path(post_id: @post.id)}, false) + assert_select("a", { href: new_comment_path(post_id: @post.id) }, false) end end @@ -50,7 +45,7 @@ describe "posts/_single" do end it "contains link to new comment" do - assert_select("a", {href: new_comment_path(post_id: @post.id)}, "Reply") + assert_select("a", { href: new_comment_path(post_id: @post.id) }, "Reply") end it "does not contain an edit link" do @@ -121,13 +116,12 @@ describe "posts/_single" do end it "does not contain link to post" do - assert_select "a[href='#{post_path @post}']", false + assert_select "a[href='#{post_path @post}']", false end it "does not contain link to new comment" do assert_select "a[href='#{new_comment_path(post_id: @post.id)}']", false end - end context "when post has been edited" do @@ -135,7 +129,7 @@ describe "posts/_single" do @member = FactoryGirl.create(:member) sign_in @member controller.stub(:current_user) { @member } - @post = FactoryGirl.create(:post, :author => @member) + @post = FactoryGirl.create(:post, author: @member) @post.update(body: "I am updated") render_post end @@ -154,10 +148,10 @@ describe "posts/_single" do @member = FactoryGirl.create(:member) sign_in @member controller.stub(:current_user) { @member } - @post = FactoryGirl.create(:post, :author => @member) - @comment = FactoryGirl.create(:comment, :post => @post) + @post = FactoryGirl.create(:post, author: @member) + @comment = FactoryGirl.create(:comment, post: @post) @comment.update(body: "I've been updated") - render :partial => "comments/single", :locals => { :comment => @comment } + render partial: "comments/single", locals: { comment: @comment } end it "shows edited at time" do @@ -174,7 +168,7 @@ describe "posts/_single" do @member = FactoryGirl.create(:member) sign_in @member controller.stub(:current_user) { @member } - @post = FactoryGirl.create(:post, :author => @member) + @post = FactoryGirl.create(:post, author: @member) @post.update(updated_at: @post.created_at) render_post end @@ -189,15 +183,14 @@ describe "posts/_single" do @member = FactoryGirl.create(:member) sign_in @member controller.stub(:current_user) { @member } - @post = FactoryGirl.create(:post, :author => @member) - @comment = FactoryGirl.create(:comment, :post => @post) + @post = FactoryGirl.create(:post, author: @member) + @comment = FactoryGirl.create(:comment, post: @post) @comment.update(updated_at: @comment.created_at) - render :partial => "comments/single", :locals => { :comment => @comment } + render partial: "comments/single", locals: { comment: @comment } end it "does not show edited at" do rendered.should_not have_content "edited at #{@comment.updated_at}" end end - end diff --git a/spec/views/posts/edit.html.haml_spec.rb b/spec/views/posts/edit.html.haml_spec.rb index bf48f9d88..d3342f5b9 100644 --- a/spec/views/posts/edit.html.haml_spec.rb +++ b/spec/views/posts/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "posts/edit" do @@ -47,7 +43,7 @@ describe "posts/edit" do context "forum specified" do before(:each) do @forum = assign(:forum, FactoryGirl.create(:forum)) - assign(:post, FactoryGirl.create( :post, + assign(:post, FactoryGirl.create(:post, forum: @forum, author: @author )) @@ -62,6 +58,5 @@ describe "posts/edit" do rendered.should have_content "This post will be posted in the forum #{@forum.name}" end end - end end diff --git a/spec/views/posts/index.html.haml_spec.rb b/spec/views/posts/index.html.haml_spec.rb index 1290cc2c7..731be8ea8 100644 --- a/spec/views/posts/index.html.haml_spec.rb +++ b/spec/views/posts/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "posts/index" do @@ -25,9 +21,9 @@ describe "posts/index" do total_entries = 2 posts = WillPaginate::Collection.create(page, per_page, total_entries) do |pager| pager.replace([ - FactoryGirl.create(:post, author: @author), - FactoryGirl.create(:post, author: @author) - ]) + FactoryGirl.create(:post, author: @author), + FactoryGirl.create(:post, author: @author) + ]) end assign(:posts, posts) render diff --git a/spec/views/posts/index.rss.haml_spec.rb b/spec/views/posts/index.rss.haml_spec.rb index 496311efc..a5ee08423 100644 --- a/spec/views/posts/index.rss.haml_spec.rb +++ b/spec/views/posts/index.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'posts/index.rss.haml', type: "view" do @@ -37,5 +33,4 @@ describe 'posts/index.rss.haml', type: "view" do it 'gives the author in the item title' do rendered.should have_content "#{@post1.subject} by #{@post1.author}" end - end diff --git a/spec/views/posts/new.html.haml_spec.rb b/spec/views/posts/new.html.haml_spec.rb index 6352ffabb..53c01fa35 100644 --- a/spec/views/posts/new.html.haml_spec.rb +++ b/spec/views/posts/new.html.haml_spec.rb @@ -1,26 +1,22 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "posts/new" do before(:each) do @author = FactoryGirl.create(:member) assign(:post, FactoryGirl.create(:post, author: @author)) -# assign(:forum, Forum.new) + # assign(:forum, Forum.new) sign_in @author controller.stub(:current_user) { @author } end @@ -74,5 +70,4 @@ describe "posts/new" do render rendered.should have_content 'Markdown' end - end diff --git a/spec/views/posts/show.html.haml_spec.rb b/spec/views/posts/show.html.haml_spec.rb index b50812078..9564e7ee8 100644 --- a/spec/views/posts/show.html.haml_spec.rb +++ b/spec/views/posts/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "posts/show" do @@ -52,7 +48,7 @@ describe "posts/show" do it 'has an anchor to the comments' do @post = assign(:post, - FactoryGirl.create(:post, author: @author)) + FactoryGirl.create(:post, author: @author)) render assert_select 'a[name=comments]' end @@ -60,7 +56,7 @@ describe "posts/show" do context "when there is one comment" do before(:each) do @post = assign(:post, - FactoryGirl.create(:html_post, author: @author)) + FactoryGirl.create(:html_post, author: @author)) @comment = FactoryGirl.create(:comment, post: @post) @comments = @post.comments render @@ -82,14 +78,14 @@ describe "posts/show" do context "when there is more than one comment" do before(:each) do @post = assign(:post, - FactoryGirl.create(:html_post, author: @author)) + FactoryGirl.create(:html_post, author: @author)) @comment1 = FactoryGirl.create(:comment, post: @post, body: "F1rst!!!", - created_at: Date.new(2010, 5, 17)) + created_at: Date.new(2010, 5, 17)) @comment3 = FactoryGirl.create(:comment, post: @post, body: "Th1rd!!!", - created_at: Date.new(2012, 5, 17)) + created_at: Date.new(2012, 5, 17)) @comment4 = FactoryGirl.create(:comment, post: @post, body: "F0urth!!!") @comment2 = FactoryGirl.create(:comment, post: @post, body: "S3c0nd!!1!", - created_at: Date.new(2011, 5, 17)) + created_at: Date.new(2011, 5, 17)) @comments = @post.comments render end @@ -107,7 +103,7 @@ describe "posts/show" do rendered.should have_content "in #{@post.forum.name}" end end - + context "signed in" do before(:each) do sign_in @author @@ -118,9 +114,7 @@ describe "posts/show" do end it 'shows a comment button' do - assert_select "a", {href: new_comment_path(post_id: @post.id)}, "Comment" - end - + assert_select "a", { href: new_comment_path(post_id: @post.id) }, "Comment" + end end - end diff --git a/spec/views/posts/show.rss.haml_spec.rb b/spec/views/posts/show.rss.haml_spec.rb index abe9b81f4..7fd1d8891 100644 --- a/spec/views/posts/show.rss.haml_spec.rb +++ b/spec/views/posts/show.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'posts/show.rss.haml' do @@ -43,5 +39,4 @@ describe 'posts/show.rss.haml' do it 'shows content of comments' do rendered.should have_content "OMG LOL" end - end diff --git a/spec/views/products/edit.html.haml_spec.rb b/spec/views/products/edit.html.haml_spec.rb index 107a32284..cb8269d9c 100644 --- a/spec/views/products/edit.html.haml_spec.rb +++ b/spec/views/products/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "products/edit" do diff --git a/spec/views/products/index.html.haml_spec.rb b/spec/views/products/index.html.haml_spec.rb index 576e6d3ec..f69492169 100644 --- a/spec/views/products/index.html.haml_spec.rb +++ b/spec/views/products/index.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "products/index" do diff --git a/spec/views/products/new.html.haml_spec.rb b/spec/views/products/new.html.haml_spec.rb index db20a5c95..172cdf2ee 100644 --- a/spec/views/products/new.html.haml_spec.rb +++ b/spec/views/products/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "products/new" do diff --git a/spec/views/products/show.html.haml_spec.rb b/spec/views/products/show.html.haml_spec.rb index 6fcb35654..2aeffa783 100644 --- a/spec/views/products/show.html.haml_spec.rb +++ b/spec/views/products/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "products/show" do diff --git a/spec/views/roles/edit.html.haml_spec.rb b/spec/views/roles/edit.html.haml_spec.rb index a4026f63e..44e32b306 100644 --- a/spec/views/roles/edit.html.haml_spec.rb +++ b/spec/views/roles/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "roles/edit" do diff --git a/spec/views/roles/index.html.haml_spec.rb b/spec/views/roles/index.html.haml_spec.rb index fe8e40333..00aca2be7 100644 --- a/spec/views/roles/index.html.haml_spec.rb +++ b/spec/views/roles/index.html.haml_spec.rb @@ -1,34 +1,30 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "roles/index" do before(:each) do controller.stub(:current_user) { nil } assign(:roles, [ - stub_model(Role, - name: "Name", - description: "MyText" - ), - stub_model(Role, - name: "Name", - description: "MyText" - ) - ]) + stub_model(Role, + name: "Name", + description: "MyText" + ), + stub_model(Role, + name: "Name", + description: "MyText" + ) + ]) end it "renders a list of roles" do diff --git a/spec/views/roles/new.html.haml_spec.rb b/spec/views/roles/new.html.haml_spec.rb index 01dcd4c60..e884d6e64 100644 --- a/spec/views/roles/new.html.haml_spec.rb +++ b/spec/views/roles/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "roles/new" do diff --git a/spec/views/roles/show.html.haml_spec.rb b/spec/views/roles/show.html.haml_spec.rb index cc0eb506e..cb208b487 100644 --- a/spec/views/roles/show.html.haml_spec.rb +++ b/spec/views/roles/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "roles/show" do diff --git a/spec/views/scientific_names/edit.html.haml_spec.rb b/spec/views/scientific_names/edit.html.haml_spec.rb index 09ff5125b..446740f2d 100644 --- a/spec/views/scientific_names/edit.html.haml_spec.rb +++ b/spec/views/scientific_names/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "scientific_names/edit" do @@ -28,16 +24,15 @@ describe "scientific_names/edit" do render end - it "shows the creator" do - rendered.should have_content "Added by #{@scientific_name.creator} less than a minute ago." - end + it "shows the creator" do + rendered.should have_content "Added by #{@scientific_name.creator} less than a minute ago." + end it "renders the edit scientific_name form" do assert_select "form", action: scientific_names_path(@scientific_name), method: "post" do - assert_select "input#scientific_name_scientific_name", name: "scientific_name[scientific_name]" + assert_select "input#scientific_name_name", name: "scientific_name[scientific_name]" assert_select "select#scientific_name_crop_id", name: "scientific_name[crop_id]" end end end - end diff --git a/spec/views/scientific_names/index.html.haml_spec.rb b/spec/views/scientific_names/index.html.haml_spec.rb index ea89ae101..feb4d3535 100644 --- a/spec/views/scientific_names/index.html.haml_spec.rb +++ b/spec/views/scientific_names/index.html.haml_spec.rb @@ -1,28 +1,24 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "scientific_names/index" do before(:each) do controller.stub(:current_user) { nil } assign(:scientific_names, [ - FactoryGirl.create(:zea_mays), - FactoryGirl.create(:solanum_lycopersicum) - ]) + FactoryGirl.create(:zea_mays), + FactoryGirl.create(:solanum_lycopersicum) + ]) end it "renders a list of scientific_names" do diff --git a/spec/views/scientific_names/new.html.haml_spec.rb b/spec/views/scientific_names/new.html.haml_spec.rb index a8ad3f615..772387dd7 100644 --- a/spec/views/scientific_names/new.html.haml_spec.rb +++ b/spec/views/scientific_names/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "scientific_names/new" do @@ -33,11 +29,9 @@ describe "scientific_names/new" do render # Run the generator again with the --webrat flag if you want to use webrat matchers assert_select "form", action: scientific_names_path, method: "post" do - assert_select "input#scientific_name_scientific_name", name: "scientific_name[scientific_name]" + assert_select "input#scientific_name_name", name: "scientific_name[scientific_name]" assert_select "select#scientific_name_crop_id", name: "scientific_name[crop_id]" end end - end - end diff --git a/spec/views/scientific_names/show.html.haml_spec.rb b/spec/views/scientific_names/show.html.haml_spec.rb index a36646658..d044bfbcc 100644 --- a/spec/views/scientific_names/show.html.haml_spec.rb +++ b/spec/views/scientific_names/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "scientific_names/show" do @@ -31,7 +27,6 @@ describe "scientific_names/show" do end context 'signed in' do - before :each do @wrangler = FactoryGirl.create(:crop_wrangling_member) sign_in @wrangler diff --git a/spec/views/seeds/edit.html.haml_spec.rb b/spec/views/seeds/edit.html.haml_spec.rb index 1c9911afa..9ed744295 100644 --- a/spec/views/seeds/edit.html.haml_spec.rb +++ b/spec/views/seeds/edit.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "seeds/edit" do diff --git a/spec/views/seeds/index.rss.haml_spec.rb b/spec/views/seeds/index.rss.haml_spec.rb index 5e88fc014..a90394084 100644 --- a/spec/views/seeds/index.rss.haml_spec.rb +++ b/spec/views/seeds/index.rss.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'seeds/index.rss.haml' do @@ -25,7 +21,7 @@ describe 'seeds/index.rss.haml' do before(:each) do @seed = FactoryGirl.create(:seed) @tradable = FactoryGirl.create(:tradable_seed) - assign(:seeds, [ @seed, @tradable ]) + assign(:seeds, [@seed, @tradable]) render end @@ -42,19 +38,18 @@ describe 'seeds/index.rss.haml' do end it 'shows the plant_before date' do - rendered.should have_content "Plant before: #{@seed.plant_before.to_s}" + rendered.should have_content "Plant before: #{@seed.plant_before}" end it 'mentions that one seed is tradable' do rendered.should have_content "Will trade #{@tradable.tradable_to} from #{@tradable.owner.location}" end - end context "one member's seeds" do before(:each) do @seed = FactoryGirl.create(:seed) - assign(:seeds, [ @seed ]) + assign(:seeds, [@seed]) assign(:owner, @seed.owner) render end diff --git a/spec/views/seeds/new.html.haml_spec.rb b/spec/views/seeds/new.html.haml_spec.rb index 2f20412fa..2cc82f641 100644 --- a/spec/views/seeds/new.html.haml_spec.rb +++ b/spec/views/seeds/new.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "seeds/new" do @@ -62,5 +58,4 @@ describe "seeds/new" do assert_select "a", text: "Change your location." end end - end diff --git a/spec/views/seeds/show.html.haml_spec.rb b/spec/views/seeds/show.html.haml_spec.rb index 88f4f32d5..c970a2518 100644 --- a/spec/views/seeds/show.html.haml_spec.rb +++ b/spec/views/seeds/show.html.haml_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe "seeds/show" do @@ -73,6 +69,5 @@ describe "seeds/show" do render rendered.should have_content "Request seeds" end - end end diff --git a/spec/views/shop/index_spec.rb b/spec/views/shop/index_spec.rb index c574f2ac4..736168b63 100644 --- a/spec/views/shop/index_spec.rb +++ b/spec/views/shop/index_spec.rb @@ -1,19 +1,15 @@ ## DEPRECATION NOTICE: Do not add new tests to this file! ## -## View and controller tests are deprecated in the Growstuff project. -## We no longer write new view and controller tests, but instead write -## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). -## These test the full stack, behaving as a browser, and require less complicated setup -## to run. Please feel free to delete old view/controller tests as they are reimplemented -## in feature tests. +## View and controller tests are deprecated in the Growstuff project. +## We no longer write new view and controller tests, but instead write +## feature tests (in spec/features) using Capybara (https://github.com/jnicklas/capybara). +## These test the full stack, behaving as a browser, and require less complicated setup +## to run. Please feel free to delete old view/controller tests as they are reimplemented +## in feature tests. ## -## If you submit a pull request containing new view or controller tests, it will not be +## If you submit a pull request containing new view or controller tests, it will not be ## merged. - - - - require 'rails_helper' describe 'shop/index.html.haml', type: "view" do @@ -83,7 +79,6 @@ describe 'shop/index.html.haml', type: "view" do render assert_select "form", false end - end context "signed out" do @@ -96,5 +91,4 @@ describe 'shop/index.html.haml', type: "view" do rendered.should have_content "sign in or sign up" end end - end