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