Compare commits

...

104 Commits

Author SHA1 Message Date
Daniel O'Connor
d57ca1b4bb Merge branch 'dev' into fix-3278 2024-07-23 19:44:09 +09:30
dependabot[bot]
d03f1e171d Merge pull request #3808 from Growstuff/dependabot/bundler/selenium-webdriver-4.23.0 2024-07-23 10:13:31 +00:00
dependabot[bot]
ef9fd8c82b Merge pull request #3810 from Growstuff/dependabot/bundler/rexml-3.3.2 2024-07-22 09:55:23 +00:00
dependabot[bot]
cb9afd00c6 Bump selenium-webdriver from 4.22.0 to 4.23.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.22.0 to 4.23.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.22.0...selenium-4.23.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 09:25:56 +00:00
dependabot[bot]
946b780b4e Bump rexml from 3.3.1 to 3.3.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 09:25:45 +00:00
dependabot[bot]
82be16b8f8 Merge pull request #3809 from Growstuff/dependabot/bundler/icalendar-2.10.2 2024-07-22 09:24:57 +00:00
dependabot[bot]
becd846022 Bump icalendar from 2.10.1 to 2.10.2
Bumps [icalendar](https://github.com/icalendar/icalendar) from 2.10.1 to 2.10.2.
- [Changelog](https://github.com/icalendar/icalendar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/icalendar/icalendar/compare/v2.10.1...v2.10.2)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 07:10:18 +00:00
Daniel O'Connor
dc4133abd2 Merge branch 'dev' into fix-3278 2024-07-17 20:06:48 +09:30
Daniel O'Connor
e7a0d0276f Photos > Show crop link (#3803)
* Fix #3802 Show crop link

* Fix #3802 Show crop link

* Fix missing arg

* Fix missing arg

* Translations
2024-07-17 20:06:32 +09:30
dependabot[bot]
7b5d8c0236 Merge pull request #3807 from Growstuff/dependabot/bundler/faker-3.4.2 2024-07-17 10:16:18 +00:00
dependabot[bot]
d45b51f85c Bump faker from 3.4.1 to 3.4.2
Bumps [faker](https://github.com/faker-ruby/faker) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: faker
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 07:33:55 +00:00
dependabot[bot]
d041382195 Merge pull request #3806 from Growstuff/dependabot/bundler/leaflet-rails-1.9.5 2024-07-16 13:42:01 +00:00
dependabot[bot]
8f0dff1e96 Bump leaflet-rails from 1.9.4 to 1.9.5
Bumps [leaflet-rails](https://github.com/axyjo/leaflet-rails) from 1.9.4 to 1.9.5.
- [Commits](https://github.com/axyjo/leaflet-rails/compare/v1.9.4...v1.9.5)

---
updated-dependencies:
- dependency-name: leaflet-rails
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-16 13:26:59 +00:00
Daniel O'Connor
5b42174baf Merge pull request #3804 from Growstuff/fix-3801
Seeds > Ebay > Simplify link
2024-07-16 22:55:40 +09:30
Daniel O'Connor
8ba7eef6be Simplify link 2024-07-13 11:56:24 +00:00
Daniel O'Connor
0b4bdc6946 Re-add expectation 2024-07-13 09:55:06 +00:00
Daniel O'Connor
3d308db0d9 'Only required for wrangers, and only when approving 2024-07-13 09:54:31 +00:00
Daniel O'Connor
bfa1ae3ae2 Require a name 2024-07-13 09:42:20 +00:00
Daniel O'Connor
71ef2c058b Require a URL 2024-07-13 09:41:35 +00:00
Daniel O'Connor
b42385be14 Fix #3278 by ensuring we rebuild names on error 2024-07-13 09:39:58 +00:00
Daniel O'Connor
aba09679e0 Merge pull request #3797 from Growstuff/bump-raindrops
Bump raindrops, fix permissions on container start
2024-07-13 17:49:42 +09:30
Daniel O'Connor
9eff9150f6 Merge pull request #3796 from Growstuff/bump-http-party
Bump http party
2024-07-13 17:49:31 +09:30
Daniel O'Connor
10a32686c6 Merge branch 'dev' into bump-http-party 2024-07-13 17:20:06 +09:30
Daniel O'Connor
8fe65768d0 Bump raindrops, fix permissions on container start 2024-07-13 07:48:56 +00:00
Daniel O'Connor
470e2d554e Merge pull request #3795 from Growstuff/bump-launchy
Bump launchy
2024-07-13 17:09:09 +09:30
Daniel O'Connor
e952ca6c4c Merge pull request #3794 from Growstuff/bump-factory-bot
Bump Factory Bot
2024-07-13 17:06:35 +09:30
Daniel O'Connor
ee1c4fc79c Bump http party 2024-07-13 07:32:00 +00:00
dependabot[bot]
c80c1c4758 Merge pull request #3792 from Growstuff/dependabot/bundler/rubocop-rspec-3.0.3 2024-07-13 07:22:34 +00:00
Daniel O'Connor
3d3f97f0bf Bump launchy 2024-07-13 07:22:24 +00:00
Daniel O'Connor
961d36c57d Bump 2024-07-13 07:19:43 +00:00
dependabot[bot]
6a2d21d80b Bump rubocop-rspec from 3.0.2 to 3.0.3
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-13 07:07:52 +00:00
Daniel O'Connor
93b63284b7 Merge pull request #3791 from Growstuff/bump-bullet
Bump bullet
2024-07-13 16:36:48 +09:30
Daniel O'Connor
7cd1f503f2 Merge pull request #3790 from Growstuff/websocket
Bump websocket
2024-07-13 16:33:07 +09:30
Daniel O'Connor
25f63a7708 Merge pull request #3788 from Growstuff/rails-71
Rubocop: Rails 7.1
2024-07-13 16:24:33 +09:30
Daniel O'Connor
e46b3f8d19 Update dependabot.yml 2024-07-13 16:22:45 +09:30
Daniel O'Connor
f04f8a9201 Bump bullet 2024-07-13 06:48:09 +00:00
Daniel O'Connor
10e456a18d Bump websocket 2024-07-13 06:44:10 +00:00
Daniel O'Connor
7e2be8efd9 Rubocop Rails 7.1 2024-07-13 06:29:08 +00:00
Daniel O'Connor
5ba25b8e76 Rubocop Rails 7.1 2024-07-13 06:28:30 +00:00
Daniel O'Connor
826f92691a Trial Ruby 3.3.* (#3778)
* Ruby 3.3

* Upgrade.
2024-07-13 15:42:51 +09:30
Daniel O'Connor
81060cccf7 Ruby 3.2: Rubocop - Lint/* and Style/* (#3786)
* Rubocop - Layout/*
* Rubocop - Lint and Style
2024-07-13 15:38:37 +09:30
Daniel O'Connor
8b4f0771c5 Ruby 3.2: Rubocop - Fix Negation matcher (#3780)
* Ruby 3.2/Bundler 2.4

* Fix creation

* Upgrade to js-routes 2. Put all js routes into a global namespace.

* Remove js-routes

* Remove

* Adjust ownership

* Appease codeclimate for the nth time

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Swap to will paginate successor for bootstrap

* Update app/views/members/show.html.haml

* Update app/views/plantings/index.rss.haml

* Update .env

* Update .devcontainer/.env

* Fix spec

* Update spec

* Fix spec

* Pin to 2.4.22

* 3 space indent

* Regenerate

* Update rubocop

* Rubocop

* More rubocop

* Regenerate

* Fix Capybara/NegationMatcher
2024-07-13 15:20:11 +09:30
Daniel O'Connor
4f5c47ba58 Ruby 3.2: Rubocop - Layout/* (#3785)
* Rubocop - Layout/*

* Regenerate
2024-07-13 15:19:09 +09:30
Daniel O'Connor
d542326047 Ruby 3.2: Rubocop - Rails/FilePath (#3783)
* Rails/FilePath
2024-07-13 15:13:56 +09:30
Daniel O'Connor
e69467f056 Ruby 3.2: Rubocop - RSpec/excessive docstring spacing (#3782)
* RSpec/ExcessiveDocstringSpacing
2024-07-13 15:12:56 +09:30
Daniel O'Connor
1176d18918 Ruby 3.2: Rubocop - Fix Lint/symbol conversion (#3781)
* Lint/SymbolConversion: Unnecessary symbol conversion; use error: instead.
2024-07-13 15:11:49 +09:30
Daniel O'Connor
78fee52f17 Ruby 3.2: Upgrade Rubocop and add more rubocop helpers (#3779)
* Ruby 3.2/Bundler 2.4

* Fix creation

* Upgrade to js-routes 2. Put all js routes into a global namespace.

* Remove js-routes

* Remove

* Adjust ownership

* Appease codeclimate for the nth time

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Swap to will paginate successor for bootstrap

* Update app/views/members/show.html.haml

* Update app/views/plantings/index.rss.haml

* Update .env

* Update .devcontainer/.env

* Fix spec

* Update spec

* Fix spec

* Pin to 2.4.22

* 3 space indent

* Regenerate

* Update rubocop

* Rubocop

* More rubocop

* Regenerate

* Fix config file
2024-07-13 15:09:32 +09:30
Daniel O'Connor
000f4979db Trial Ruby32 (#3418)
* Ruby 3.2/Bundler 2.4

* Fix creation

* Upgrade to js-routes 2. Put all js routes into a global namespace.

* Remove js-routes

* Remove

* Adjust ownership

* Appease codeclimate for the nth time

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Fix deprecation warning by explicitly calling to_fs

* Swap to will paginate successor for bootstrap

* Update app/views/members/show.html.haml

* Update app/views/plantings/index.rss.haml

* Update .env

* Update .devcontainer/.env

* Fix spec

* Update spec

* Fix spec

* Pin to 2.4.22

* 3 space indent

* Regenerate

* Update rubocop
2024-07-13 14:45:33 +09:30
dependabot[bot]
f76258dcab Merge pull request #3776 from Growstuff/dependabot/bundler/rubocop-1.65.0 2024-07-13 04:26:20 +00:00
dependabot[bot]
c3b79d1d3f Bump rubocop from 1.64.1 to 1.65.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.64.1 to 1.65.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.64.1...v1.65.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-11 07:34:17 +00:00
dependabot[bot]
fa78997d8c Merge pull request #3775 from Growstuff/dependabot/bundler/faraday-2.10.0 2024-07-10 09:31:04 +00:00
dependabot[bot]
b05efe8e8f Bump faraday from 2.9.2 to 2.10.0
Bumps [faraday](https://github.com/lostisland/faraday) from 2.9.2 to 2.10.0.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.9.2...v2.10.0)

---
updated-dependencies:
- dependency-name: faraday
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 07:31:45 +00:00
dependabot[bot]
8906454323 Merge pull request #3774 from Growstuff/dependabot/bundler/rubocop-rspec-3.0.2 2024-07-04 06:05:51 +00:00
dependabot[bot]
dfa81aeaf2 Bump rubocop-rspec from 3.0.1 to 3.0.2
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.0.1...v3.0.2)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 07:30:28 +00:00
Daniel O'Connor
436c2305b3 Merge pull request #3773 from Growstuff/CloCkWeRX-patch-1
Update garden.rb
2024-07-02 23:08:46 +09:30
Daniel O'Connor
57f1fd34c9 Update garden.rb 2024-07-02 23:08:29 +09:30
Daniel O'Connor
c1dc3cc4c0 Merge pull request #3772 from Growstuff/CloCkWeRX-patch-1
Update predict_planting.rb
2024-07-02 23:08:04 +09:30
Daniel O'Connor
067fb1671b Update predict_planting.rb 2024-07-02 23:07:48 +09:30
Daniel O'Connor
fa6df64221 Update garden.rb 2024-07-02 22:42:35 +09:30
Daniel O'Connor
dc473108d0 Merge branch 'mainline' into dev 2024-07-02 17:49:53 +09:30
Daniel O'Connor
adef9f9622 Merge pull request #3770 from Growstuff/CloCkWeRX-patch-1
Update garden.rb
2024-07-02 17:48:56 +09:30
Daniel O'Connor
b908777a86 Merge pull request #3768 from Growstuff/dependabot/bundler/rubocop-rails-2.25.1
Bump rubocop-rails from 2.24.1 to 2.25.1
2024-07-02 17:48:39 +09:30
Daniel O'Connor
fda04a6367 Merge pull request #3769 from Growstuff/dependabot/bundler/sidekiq-7.3.0
Bump sidekiq from 7.2.4 to 7.3.0
2024-07-02 17:48:28 +09:30
Daniel O'Connor
3d524bb105 Update garden.rb 2024-07-02 17:37:17 +09:30
dependabot[bot]
92cb0c32ab Bump sidekiq from 7.2.4 to 7.3.0
Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.2.4 to 7.3.0.
- [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md)
- [Commits](https://github.com/sidekiq/sidekiq/compare/v7.2.4...v7.3.0)

---
updated-dependencies:
- dependency-name: sidekiq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 07:38:55 +00:00
dependabot[bot]
6bde403f17 Bump rubocop-rails from 2.24.1 to 2.25.1
Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.24.1 to 2.25.1.
- [Release notes](https://github.com/rubocop/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.24.1...v2.25.1)

---
updated-dependencies:
- dependency-name: rubocop-rails
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 07:37:20 +00:00
dependabot[bot]
ff2f2014fc Merge pull request #3765 from Growstuff/dependabot/npm_and_yarn/ws-8.17.1 2024-06-22 07:26:49 +00:00
dependabot[bot]
8e5d8002ff Bump ws from 8.5.0 to 8.17.1
Bumps [ws](https://github.com/websockets/ws) from 8.5.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.5.0...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-22 07:11:07 +00:00
dependabot[bot]
a8954d2e12 Merge pull request #3767 from Growstuff/dependabot/bundler/selenium-webdriver-4.22.0 2024-06-21 10:03:34 +00:00
dependabot[bot]
892d850f6a Bump selenium-webdriver from 4.20.1 to 4.22.0
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.20.1 to 4.22.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.22.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-21 07:33:12 +00:00
dependabot[bot]
b5b5222960 Merge pull request #3766 from Growstuff/dependabot/bundler/rspec-rails-6.1.3 2024-06-20 10:59:56 +00:00
dependabot[bot]
a6821d689d Bump rspec-rails from 6.1.2 to 6.1.3
Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 6.1.2 to 6.1.3.
- [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-rails/compare/v6.1.2...v6.1.3)

---
updated-dependencies:
- dependency-name: rspec-rails
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 07:22:36 +00:00
dependabot[bot]
6ac5dc5ac9 Merge pull request #3763 from Growstuff/dependabot/bundler/timecop-0.9.10 2024-06-19 23:22:23 +00:00
dependabot[bot]
82855883ca Bump timecop from 0.9.9 to 0.9.10
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.9 to 0.9.10.
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.9...v0.9.10)

---
updated-dependencies:
- dependency-name: timecop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 23:06:59 +00:00
dependabot[bot]
c7b0e036c4 Merge pull request #3764 from Growstuff/dependabot/bundler/faraday-2.9.2 2024-06-19 23:05:56 +00:00
dependabot[bot]
ec3a9ab32f Bump faraday from 2.9.1 to 2.9.2
Bumps [faraday](https://github.com/lostisland/faraday) from 2.9.1 to 2.9.2.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.9.1...v2.9.2)

---
updated-dependencies:
- dependency-name: faraday
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 08:11:08 +00:00
dependabot[bot]
6f22a7ffb7 Merge pull request #3762 from Growstuff/dependabot/npm_and_yarn/braces-3.0.3 2024-06-14 10:35:10 +00:00
Daniel O'Connor
3246773cd8 Merge branch 'dev' into dependabot/npm_and_yarn/braces-3.0.3 2024-06-14 19:49:36 +09:30
dependabot[bot]
1270dc91f6 Merge pull request #3757 from Growstuff/dependabot/bundler/oj-3.16.4 2024-06-13 12:41:36 +00:00
dependabot[bot]
c9f3105e89 Bump oj from 3.16.3 to 3.16.4
Bumps [oj](https://github.com/ohler55/oj) from 3.16.3 to 3.16.4.
- [Release notes](https://github.com/ohler55/oj/releases)
- [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/ohler55/oj/compare/v3.16.3...v3.16.4)

---
updated-dependencies:
- dependency-name: oj
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 12:25:21 +00:00
dependabot[bot]
54f340380d Merge pull request #3760 from Growstuff/dependabot/bundler/rubocop-rspec-3.0.1 2024-06-13 12:24:17 +00:00
dependabot[bot]
661930f99e Bump rubocop-rspec from 2.31.0 to 3.0.1
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.31.0 to 3.0.1.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.31.0...v3.0.1)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 12:08:49 +00:00
dependabot[bot]
b29f2cabe6 Merge pull request #3759 from Growstuff/dependabot/bundler/will_paginate-4.0.1 2024-06-13 12:07:45 +00:00
dependabot[bot]
88a60ca3cf Bump will_paginate from 4.0.0 to 4.0.1
Bumps [will_paginate](https://github.com/mislav/will_paginate) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/mislav/will_paginate/releases)
- [Commits](https://github.com/mislav/will_paginate/compare/v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: will_paginate
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 11:52:49 +00:00
dependabot[bot]
4f7098c0f6 Merge pull request #3758 from Growstuff/dependabot/bundler/recaptcha-5.17.0 2024-06-13 11:51:44 +00:00
dependabot[bot]
9de957f39b Bump recaptcha from 5.16.0 to 5.17.0
Bumps [recaptcha](https://github.com/ambethia/recaptcha) from 5.16.0 to 5.17.0.
- [Changelog](https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ambethia/recaptcha/compare/v5.16.0...v5.17.0)

---
updated-dependencies:
- dependency-name: recaptcha
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 11:36:42 +00:00
dependabot[bot]
480430af37 Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 11:36:05 +00:00
dependabot[bot]
1c66b8b554 Merge pull request #3761 from Growstuff/dependabot/bundler/terser-1.2.3 2024-06-13 11:35:36 +00:00
dependabot[bot]
405946370b Bump terser from 1.2.2 to 1.2.3
Bumps [terser](https://github.com/ahorek/terser-ruby) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/ahorek/terser-ruby/releases)
- [Changelog](https://github.com/ahorek/terser-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ahorek/terser-ruby/compare/1.2.2...1.2.3)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-12 07:10:55 +00:00
Daniel O'Connor
f04ad801ba Merge pull request #3726 from domthor/edit-profile-tabs-fix#497
Added javascript to fix edit profile tab issue. Fixes #497.
2024-06-07 22:00:53 +09:30
dependabot[bot]
08efbb5a54 Merge pull request #3756 from Growstuff/dependabot/bundler/rubocop-rspec-2.31.0 2024-06-07 12:30:31 +00:00
dependabot[bot]
619022c61a Bump rubocop-rspec from 2.30.0 to 2.31.0
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.30.0 to 2.31.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.30.0...v2.31.0)

---
updated-dependencies:
- dependency-name: rubocop-rspec
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 07:30:11 +00:00
Daniel O'Connor
2528ed3e8b Merge pull request #3721 from Growstuff/dev
May 2024 Release
2024-06-07 13:40:25 +09:30
Daniel O'Connor
411152bc31 Merge branch 'dev' into edit-profile-tabs-fix#497 2024-06-05 13:46:58 +09:30
domthor
88ad6d8de9 fix space in "function ()" 2024-04-26 18:08:03 -04:00
domthor
c5df760ce4 change double quotes to single quotes 2024-04-26 18:04:13 -04:00
domthor
d9500eff16 fix let in js 2024-04-26 17:59:34 -04:00
domthor
31fafe6a74 fix unexpected function() token 2024-04-26 17:57:37 -04:00
domthor
f87b83bdd1 fix const error 2024-04-26 17:56:06 -04:00
domthor
88e458077b fix unexpected token linting error 2024-04-26 17:54:12 -04:00
domthor
a7cc576ef2 Merge branch 'edit-profile-tabs-fix#497' of github.com:domthor/growstuff into edit-profile-tabs-fix#497 2024-04-26 17:50:30 -04:00
domthor
a713d2936c fix linting errors 2024-04-26 17:48:09 -04:00
Dominick Thornton
751c2e1a89 Merge branch 'dev' into edit-profile-tabs-fix#497 2024-04-26 17:43:32 -04:00
domthor
9fd7e145b5 Added javascript to fix edit profile tab issue. Fixes #497 2024-04-26 21:35:34 +00:00
113 changed files with 522 additions and 554 deletions

View File

@@ -1,2 +1,2 @@
# Ruby version
VARIANT=3.1.4
VARIANT=3.3.4

View File

@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/devcontainers/ruby:0-3.1-bullseye
FROM mcr.microsoft.com/devcontainers/ruby:1-3.3-bullseye
# Install Rails
RUN gem install rails:7.0.8
@@ -24,3 +24,10 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
# We run as the vscode user.
# Make sure this is writable as https://github.com/rubygems/rubygems/issues/6272 was removed
RUN su root -c "mkdir -p /usr/local/rvm/gems/default/cache/bundler/"
RUN su root -c "mkdir -p /usr/local/rvm/gems/default/bundler/gems/"
RUN su root -c "chown -R vscode:rvm /usr/local/rvm/gems/"
RUN su root -c "chmod -R 0755 /usr/local/rvm/gems/"

View File

@@ -7,50 +7,6 @@ updates:
time: "07:00"
open-pull-requests-limit: 20
versioning-strategy: lockfile-only
ignore:
- dependency-name: active_median
versions:
- "< 0.2.2, >= 0.2.1.a"
- dependency-name: rubocop
versions:
- "< 0.63, >= 0.62.a"
- dependency-name: rubocop
versions:
- "< 0.64, >= 0.63.a"
- dependency-name: sidekiq
versions:
- 5.2.4
- dependency-name: oj
versions:
- 3.11.4
- dependency-name: listen
versions:
- 3.5.0
- dependency-name: rspec-rails
versions:
- 4.1.0
- 5.0.0
- dependency-name: searchkick
versions:
- 4.4.3
- dependency-name: rswag-api
versions:
- 2.3.3
- dependency-name: rswag-specs
versions:
- 2.3.3
- dependency-name: rswag-ui
versions:
- 2.3.3
- dependency-name: timecop
versions:
- 0.9.3
- dependency-name: puma
versions:
- 5.2.0
- dependency-name: capybara
versions:
- 3.35.1
- package-ecosystem: github-actions
directory: "/"
schedule:

View File

@@ -1,13 +1,17 @@
inherit_from: .rubocop_todo.yml
require:
- rubocop-factory_bot
- rubocop-capybara
- rubocop-rails
- rubocop-rspec
- rubocop-rspec_rails
- rubocop-rake
AllCops:
NewCops: enable
Exclude:
- 'db/schema.rb'
- 'vendor/**/*'
TargetRailsVersion: 7.0
TargetRailsVersion: 7.1
Rails:
Enabled: true

View File

@@ -1,15 +1,37 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2023-09-16 07:51:19 UTC using RuboCop version 1.56.3.
# on 2024-07-13 05:47:38 UTC using RuboCop version 1.65.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: 15
# Offense count: 231
# Configuration parameters: EnforcedStyle.
# SupportedStyles: link_or_button, strict
Capybara/ClickLinkOrButtonStyle:
Enabled: false
# Offense count: 39
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: DefaultSelector.
Capybara/RSpec/HaveSelector:
Exclude:
- 'spec/features/conversations/index_spec.rb'
- 'spec/features/footer_spec.rb'
- 'spec/features/gardens/adding_gardens_spec.rb'
- 'spec/features/harvests/harvesting_a_crop_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/plantings/planting_a_crop_spec.rb'
- 'spec/features/seeds/adding_seeds_spec.rb'
- 'spec/features/shared_examples/crop_suggest.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/support/feature_helpers.rb'
- 'spec/views/posts/show.html.haml_spec.rb'
# Offense count: 14
Capybara/SpecificMatcher:
Exclude:
- 'spec/features/crops/browse_crops_spec.rb'
- 'spec/features/footer_spec.rb'
- 'spec/features/gardens/adding_gardens_spec.rb'
- 'spec/features/harvests/harvesting_a_crop_spec.rb'
@@ -23,8 +45,7 @@ Capybara/VisibilityMatcher:
# Offense count: 6
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include, EnforcedStyle, NonImplicitAssociationMethodNames.
# Include: spec/factories.rb, spec/factories/**/*.rb, features/support/factories/**/*.rb
# Configuration parameters: EnforcedStyle, NonImplicitAssociationMethodNames.
# SupportedStyles: explicit, implicit
FactoryBot/AssociationStyle:
Exclude:
@@ -33,81 +54,48 @@ FactoryBot/AssociationStyle:
- 'spec/factories/like.rb'
- 'spec/factories/scientific_name.rb'
# Offense count: 8
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include, EnforcedStyle, ExplicitOnly.
# Include: **/*_spec.rb, **/spec/**/*, spec/factories.rb, spec/factories/**/*.rb, features/support/factories/**/*.rb
# Configuration parameters: AutoCorrect, Include, EnforcedStyle, ExplicitOnly.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
# SupportedStyles: create_list, n_times
FactoryBot/CreateList:
Exclude:
- 'spec/factories/member.rb'
- 'spec/helpers/gardens_helper_spec.rb'
- 'spec/views/comments/index.rss.haml_spec.rb'
- 'spec/views/home/index_spec.rb'
- 'spec/views/photos/index.html.haml_spec.rb'
- 'spec/views/places/show.html.haml_spec.rb'
- 'spec/views/posts/index.html.haml_spec.rb'
# Offense count: 1135
# Offense count: 4
# Configuration parameters: Include, MaxAmount.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
FactoryBot/ExcessiveCreateList:
Exclude:
- 'spec/controllers/posts_controller_spec.rb'
- 'spec/features/crops/show_spec.rb'
- 'spec/features/percy/percy_spec.rb'
# Offense count: 1127
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
FactoryBot/SyntaxMethods:
Enabled: false
# Offense count: 5
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, DefLikeMacros, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
Layout/EmptyLineBetweenDefs:
Exclude:
- 'db/migrate/20171129041341_create_photographings.rb'
- 'db/migrate/20190130090437_add_crop_to_photographings.rb'
# Offense count: 10
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: space, no_space
Layout/LineContinuationSpacing:
Exclude:
- 'app/mailers/notifier_mailer.rb'
- 'app/models/seed.rb'
- 'lib/tasks/growstuff.rake'
- 'spec/features/rss/plantings_spec.rb'
- 'spec/features/rss/posts_spec.rb'
- 'spec/features/rss/seeds_spec.rb'
- 'spec/models/seed_spec.rb'
# Offense count: 9
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: aligned, indented
Layout/LineEndStringConcatenationIndentation:
Exclude:
- 'app/mailers/notifier_mailer.rb'
- 'app/models/seed.rb'
- 'lib/tasks/growstuff.rake'
- 'spec/features/rss/plantings_spec.rb'
- 'spec/features/rss/posts_spec.rb'
- 'spec/features/rss/seeds_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 304
Exclude:
- 'app/helpers/crops_helper.rb'
- 'db/seeds.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
Lint/AmbiguousOperatorPrecedence:
Exclude:
- 'db/seeds.rb'
- 'spec/helpers/gardens_helper_spec.rb'
- 'spec/helpers/seeds_helper_spec.rb'
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: RequireParenthesesForMethodChains.
Lint/AmbiguousRange:
Exclude:
- 'app/models/concerns/search_activities.rb'
- 'app/models/concerns/search_harvests.rb'
- 'app/models/concerns/search_plantings.rb'
@@ -130,6 +118,12 @@ Lint/EmptyBlock:
- 'spec/features/crops/crop_detail_page_spec.rb'
- 'spec/requests/authentications_spec.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Lint/RedundantCopDisableDirective:
Exclude:
- 'db/migrate/20230313015323_create_active_storage_tables.active_storage.rb'
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/RedundantDirGlobSort:
@@ -142,48 +136,46 @@ Lint/SuppressedException:
Exclude:
- 'lib/tasks/testing.rake'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: strict, consistent
Lint/SymbolConversion:
Exclude:
- 'app/controllers/likes_controller.rb'
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect.
Lint/UselessAssignment:
Exclude:
- 'config.rb'
- 'config/compass.rb'
# Offense count: 45
# Offense count: 52
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 151
# Offense count: 10
# Offense count: 14
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
# AllowedMethods: refine
Metrics/BlockLength:
Max: 61
Max: 115
# Offense count: 6
# Offense count: 7
# Configuration parameters: CountComments, CountAsOne.
Metrics/ClassLength:
Max: 171
Max: 183
# Offense count: 4
# Offense count: 6
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/CyclomaticComplexity:
Max: 32
# Offense count: 61
# Offense count: 71
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Max: 59
Max: 127
# Offense count: 3
# Offense count: 2
# Configuration parameters: CountComments, CountAsOne.
Metrics/ModuleLength:
Max: 125
# Offense count: 5
# Configuration parameters: AllowedMethods, AllowedPatterns.
Metrics/PerceivedComplexity:
Max: 32
@@ -202,7 +194,7 @@ RSpec/ContextWording:
# Offense count: 36
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: SkipBlocks, EnforcedStyle.
# Configuration parameters: SkipBlocks, EnforcedStyle, OnlyStaticConstants.
# SupportedStyles: described_class, explicit
RSpec/DescribedClass:
Exclude:
@@ -212,6 +204,7 @@ RSpec/DescribedClass:
# Offense count: 13
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AutoCorrect.
RSpec/EmptyExampleGroup:
Exclude:
- 'spec/controllers/authentications_controller_spec.rb'
@@ -227,24 +220,26 @@ RSpec/EmptyExampleGroup:
- 'spec/views/photos/edit.html.haml_spec.rb'
- 'spec/views/posts/_single.html.haml_spec.rb'
# Offense count: 134
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowConsecutiveOneLiners.
RSpec/EmptyLineAfterExample:
Exclude:
- 'spec/models/ability_spec.rb'
# Offense count: 140
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 25
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
RSpec/ExcessiveDocstringSpacing:
Exclude:
- 'spec/controllers/crops_controller_spec.rb'
- 'spec/features/crops/crop_photos_spec.rb'
# Offense count: 30
# Offense count: 32
RSpec/ExpectInHook:
Exclude:
- 'spec/controllers/garden_types_controller_spec.rb'
- 'spec/controllers/gardens_controller_spec.rb'
- 'spec/features/admin/forums_spec.rb'
- 'spec/features/admin/plant_parts_spec.rb'
- 'spec/features/admin/roles_spec.rb'
- 'spec/features/crops/crop_photos_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/plantings/planting_a_crop_spec.rb'
@@ -260,11 +255,12 @@ RSpec/HookArgument:
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AutoCorrect.
RSpec/HooksBeforeExamples:
Exclude:
- 'spec/features/crops/creating_a_crop_spec.rb'
# Offense count: 35
# Offense count: 37
# Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
RSpec/IndexedLet:
Exclude:
@@ -272,6 +268,7 @@ RSpec/IndexedLet:
- 'spec/controllers/plantings_controller_spec.rb'
- 'spec/features/crops/crop_photos_spec.rb'
- 'spec/features/members/list_spec.rb'
- 'spec/features/members/profile_spec.rb'
- 'spec/features/percy/percy_spec.rb'
- 'spec/features/planting_reminder_spec.rb'
- 'spec/features/timeline/index_spec.rb'
@@ -279,7 +276,7 @@ RSpec/IndexedLet:
- 'spec/models/member_spec.rb'
- 'spec/views/forums/index.html.haml_spec.rb'
# Offense count: 710
# Offense count: 720
# Configuration parameters: AssignmentOnly.
RSpec/InstanceVariable:
Enabled: false
@@ -288,6 +285,12 @@ RSpec/InstanceVariable:
RSpec/LetSetup:
Enabled: false
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
RSpec/MatchArray:
Exclude:
- 'spec/models/post_spec.rb'
# Offense count: 2
RSpec/MessageChain:
Exclude:
@@ -304,16 +307,16 @@ RSpec/MultipleDescribes:
Exclude:
- 'spec/features/crops/crop_wranglers_spec.rb'
# Offense count: 147
# Offense count: 152
RSpec/MultipleExpectations:
Max: 19
# Offense count: 137
# Offense count: 138
# Configuration parameters: AllowSubject.
RSpec/MultipleMemoizedHelpers:
Max: 14
# Offense count: 132
# Offense count: 133
# Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
# SupportedStyles: always, named_only
RSpec/NamedSubject:
@@ -324,7 +327,7 @@ RSpec/NamedSubject:
RSpec/NestedGroups:
Max: 6
# Offense count: 407
# Offense count: 403
# Configuration parameters: AllowedPatterns.
# AllowedPatterns: ^expect_, ^assert_
RSpec/NoExpectationExample:
@@ -336,21 +339,6 @@ RSpec/PendingWithoutReason:
- 'spec/features/seeds/misc_seeds_spec.rb'
- 'spec/features/unsubscribing_spec.rb'
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/Rails/HaveHttpStatus:
Exclude:
- 'spec/controllers/api/v1/plantings_controller_spec.rb'
- 'spec/controllers/harvests_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/requests/harvests_spec.rb'
# Offense count: 16
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Inferences.
RSpec/Rails/InferredSpecType:
Enabled: false
# Offense count: 2
RSpec/RepeatedDescription:
Exclude:
@@ -370,6 +358,7 @@ RSpec/RepeatedExampleGroupBody:
# Offense count: 6
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AutoCorrect.
RSpec/ScatteredSetup:
Exclude:
- 'spec/features/percy/percy_spec.rb'
@@ -382,14 +371,6 @@ RSpec/SpecFilePathFormat:
Exclude:
- 'spec/controllers/member_controller_spec.rb'
# Offense count: 2
# Configuration parameters: Include.
# Include: **/*_spec*rb*, **/spec/**/*
RSpec/SpecFilePathSuffix:
Exclude:
- 'spec/features/seeds/seed_photos.rb'
- 'spec/models/garden_type.rb'
# Offense count: 3
RSpec/StubbedMock:
Exclude:
@@ -413,7 +394,24 @@ RSpec/VerifiedDoubles:
- 'spec/controllers/gardens_controller_spec.rb'
- 'spec/views/devise/shared/_links_spec.rb'
# Offense count: 26
# Offense count: 7
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ResponseMethods.
# ResponseMethods: response, last_response
RSpecRails/HaveHttpStatus:
Exclude:
- 'spec/controllers/api/v1/plantings_controller_spec.rb'
- 'spec/controllers/harvests_controller_spec.rb'
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/requests/harvests_spec.rb'
# Offense count: 16
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Inferences.
RSpecRails/InferredSpecType:
Enabled: false
# Offense count: 28
# Configuration parameters: Database, Include.
# SupportedDatabases: mysql, postgresql
# Include: db/**/*.rb
@@ -436,17 +434,6 @@ Rails/Date:
Exclude:
- 'app/mailers/notifier_mailer.rb'
# Offense count: 5
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: slashes, arguments
Rails/FilePath:
Exclude:
- 'app/controllers/crops_controller.rb'
- 'config/application.rb'
- 'config/environments/development.rb'
- 'db/seeds.rb'
# Offense count: 11
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
@@ -485,12 +472,13 @@ Rails/I18nLocaleAssignment:
Rails/I18nLocaleTexts:
Enabled: false
# Offense count: 2
# Offense count: 3
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
Exclude:
- 'app/controllers/data_controller.rb'
- 'app/controllers/registrations_controller.rb'
# Offense count: 2
Rails/OutputSafety:
@@ -498,6 +486,12 @@ Rails/OutputSafety:
- 'app/helpers/auto_suggest_helper.rb'
- 'app/helpers/gardens_helper.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Rails/PluralizationGrammar:
Exclude:
- 'spec/requests/plantings_spec.rb'
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
@@ -508,8 +502,10 @@ Rails/RakeEnvironment:
- 'lib/tasks/i18n.rake'
- 'lib/tasks/testing.rake'
# Offense count: 10
# Offense count: 9
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedReceivers.
# AllowedReceivers: ActionMailer::Preview, ActiveSupport::TimeZone
Rails/RedundantActiveRecordAllMethod:
Exclude:
- 'app/controllers/admin/roles_controller.rb'
@@ -518,7 +514,6 @@ Rails/RedundantActiveRecordAllMethod:
- 'app/controllers/plant_parts_controller.rb'
- 'app/controllers/scientific_names_controller.rb'
- 'app/services/openfarm_service.rb'
- 'spec/features/members/deletion_spec.rb'
- 'spec/features/percy/percy_spec.rb'
- 'spec/models/harvest_spec.rb'
@@ -541,8 +536,8 @@ Rails/ResponseParsedBody:
- 'spec/controllers/likes_controller_spec.rb'
- 'spec/requests/api/v1/crop_request_spec.rb'
- 'spec/requests/api/v1/gardens_request_spec.rb'
- 'spec/requests/api/v1/harvest_request_spec.rb'
- 'spec/requests/api/v1/member_request_spec.rb'
- 'spec/requests/api/v1/harvests_request_spec.rb'
- 'spec/requests/api/v1/members_request_spec.rb'
- 'spec/requests/api/v1/photos_request_spec.rb'
- 'spec/requests/api/v1/plantings_request_spec.rb'
- 'spec/requests/api/v1/seeds_request_spec.rb'
@@ -562,26 +557,11 @@ Rails/RootPathnameMethods:
- 'app/controllers/crops_controller.rb'
- 'app/helpers/icons_helper.rb'
# Offense count: 20
# Offense count: 21
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/ThreeStateBooleanColumn:
Exclude:
- 'db/migrate/20121203034745_add_tos_agreement_to_users.rb'
- 'db/migrate/20130206051328_add_show_email_to_member.rb'
- 'db/migrate/20130212123628_create_notifications.rb'
- 'db/migrate/20130327120024_add_send_email_to_member.rb'
- 'db/migrate/20130517051922_create_account_types.rb'
- 'db/migrate/20130718011247_add_trading_to_seeds.rb'
- 'db/migrate/20130722050836_remove_tradable_from_seeds.rb'
- 'db/migrate/20130827105823_add_newsletter_to_member.rb'
- 'db/migrate/20131025104228_add_fields_to_gardens.rb'
- 'db/migrate/20140829230600_add_finished_to_planting.rb'
- 'db/migrate/20140928085713_add_send_planting_reminder_to_member.rb'
- 'db/migrate/20171022032108_all_the_predictions.rb'
- 'db/migrate/20180213005731_seed_usage.rb'
- 'db/migrate/20190720000555_create_mailboxer.mailboxer_engine.rb'
- 'db/migrate/20190720000558_add_delivery_tracking_info_to_mailboxer_receipts.mailboxer_engine.rb'
Enabled: false
# Offense count: 6
# Configuration parameters: Include.
@@ -603,6 +583,18 @@ Rails/WhereEquals:
- 'app/models/harvest.rb'
- 'app/models/planting.rb'
# Offense count: 2
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/WhereRange:
Exclude:
- 'app/models/concerns/predict_planting.rb'
- 'app/models/garden.rb'
# Offense count: 1
Rake/MethodDefinitionInTask:
Exclude:
- 'lib/tasks/growstuff.rake'
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
@@ -622,13 +614,7 @@ Style/CommentedKeyword:
- 'spec/models/photo_spec.rb'
- 'spec/models/planting_spec.rb'
# Offense count: 37
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedVars.
Style/FetchEnvVar:
Enabled: false
# Offense count: 4
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
@@ -636,33 +622,16 @@ Style/FrozenStringLiteralComment:
Exclude:
- 'config/initializers/new_framework_defaults_6_0.rb'
- 'db/migrate/20200801084007_add_foreign_key_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb'
- 'db/migrate/20200815012538_remove_median_function.rb'
- 'spec/lib/haml/filters/growstuff_markdown_spec.rb'
# Offense count: 2
# Offense count: 3
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:
Exclude:
- 'config/environments/production.rb'
- 'lib/tasks/gbif.rake'
- 'lib/tasks/openfarm.rake'
# Offense count: 5
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, EnforcedShorthandSyntax, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
# SupportedShorthandSyntax: always, never, either, consistent
Style/HashSyntax:
Exclude:
- 'app/models/csv_importer.rb'
- 'spec/requests/api/v1/gardens_request_spec.rb'
- 'spec/requests/api/v1/plantings_request_spec.rb'
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
Style/IfUnlessModifier:
Exclude:
- 'bin/setup'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods.
@@ -684,19 +653,23 @@ Style/MixinUsage:
- 'spec/rails_helper.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Style/NegatedIfElseCondition:
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: literals, strict
Style/MutableConstant:
Exclude:
- 'app/helpers/crops_helper.rb'
- 'app/models/activity.rb'
# Offense count: 3
# Offense count: 5
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
# SupportedStyles: predicate, comparison
Style/NumericPredicate:
Exclude:
- 'app/helpers/crops_helper.rb'
- 'app/helpers/harvests_helper.rb'
- 'app/helpers/plantings_helper.rb'
- 'app/models/concerns/predict_planting.rb'
# Offense count: 6
Style/OpenStructUse:
@@ -710,15 +683,6 @@ Style/OptionalBooleanParameter:
Exclude:
- 'app/models/concerns/member_newsletter.rb'
# Offense count: 5
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: same_as_string_literals, single_quotes, double_quotes
Style/QuotedSymbols:
Exclude:
- 'app/models/seed.rb'
- 'spec/controllers/crops_controller_spec.rb'
# Offense count: 1
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Methods.
@@ -726,12 +690,6 @@ Style/RedundantArgument:
Exclude:
- 'app/helpers/application_helper.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
Style/RedundantConstantBase:
Exclude:
- 'config.ru'
# Offense count: 4
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: SafeForConstants.
@@ -739,19 +697,6 @@ Style/RedundantFetchBlock:
Exclude:
- 'config/puma.rb'
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
Style/RedundantRegexpArgument:
Exclude:
- 'db/migrate/20191119030244_cms_tags.rb'
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/controllers/messages_controller.rb'
# Offense count: 2
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowModifier.
@@ -760,7 +705,7 @@ Style/SoleNestedConditional:
- 'app/controllers/application_controller.rb'
- 'app/controllers/messages_controller.rb'
# Offense count: 20
# Offense count: 24
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Mode.
Style/StringConcatenation:

View File

@@ -1 +1 @@
3.1.4
3.3.4

View File

@@ -94,6 +94,7 @@ submit the change with your pull request.
- Rowan Crawford / [wombleton](https://github.com/wombleton)
- Ítalo Pires / [italopires](https://github.com/italopires)
- Bennett Zink / [bennett-zink](https://github.com/bennett-zink)
- Dominick Thornton / [domthor](https://github.com/domthor)
## Bots

View File

@@ -167,8 +167,12 @@ group :development, :test do
gem 'rspec-activemodel-mocks'
gem 'rspec-rails' # unit testing framework
gem 'rswag-specs'
gem 'rubocop-capybara'
gem 'rubocop-factory_bot'
gem 'rubocop-rails'
gem 'rubocop-rake'
gem 'rubocop-rspec'
gem 'rubocop-rspec_rails'
gem 'webrat' # provides HTML matchers for view tests
gem 'dotenv-rails'

View File

@@ -117,8 +117,8 @@ GEM
minitest (>= 5.1)
mutex_m
tzinfo (~> 2.0)
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
ast (2.4.2)
autoprefixer-rails (10.4.16.0)
execjs (~> 2)
@@ -155,8 +155,8 @@ GEM
bootstrap_form (5.4.0)
actionpack (>= 6.1)
activemodel (>= 6.1)
builder (3.2.4)
bullet (7.1.6)
builder (3.3.0)
bullet (7.2.0)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (11.1.3)
@@ -199,7 +199,7 @@ GEM
coffee-script-source (1.12.2)
comfy_bootstrap_form (4.0.9)
rails (>= 5.0.0)
concurrent-ruby (1.3.1)
concurrent-ruby (1.3.3)
connection_pool (2.4.1)
crass (1.0.6)
csv (3.3.0)
@@ -244,19 +244,20 @@ GEM
elasticsearch-transport (7.0.0)
faraday
multi_json
erubi (1.12.0)
erubi (1.13.0)
erubis (2.7.0)
excon (0.110.0)
execjs (2.9.1)
factory_bot (6.4.5)
factory_bot (6.4.6)
activesupport (>= 5.0.0)
factory_bot_rails (6.4.3)
factory_bot (~> 6.4)
railties (>= 5.0.0)
faker (3.4.1)
faker (3.4.2)
i18n (>= 1.8.11, < 2)
faraday (2.9.1)
faraday (2.10.0)
faraday-net_http (>= 2.0, < 3.2)
logger
faraday-net_http (3.1.0)
net-http
ffi (1.16.3)
@@ -306,7 +307,8 @@ GEM
multi_json (>= 1.9.2)
webrick
highline (3.0.1)
httparty (0.21.0)
httparty (0.22.0)
csv
mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2)
i18n (1.14.5)
@@ -321,15 +323,15 @@ GEM
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
icalendar (2.10.1)
icalendar (2.10.2)
ice_cube (~> 0.16)
ice_cube (0.16.4)
ice_cube (0.17.0)
ice_nine (0.11.2)
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
io-console (0.7.2)
irb (1.13.1)
irb (1.14.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jquery-rails (4.6.0)
@@ -348,10 +350,10 @@ GEM
kramdown (2.4.0)
rexml
language_server-protocol (3.17.0.3)
launchy (3.0.0)
launchy (3.0.1)
addressable (~> 2.8)
childprocess (~> 5.0)
leaflet-rails (1.9.4)
leaflet-rails (1.9.5)
actionpack (>= 4.2.0)
railties (>= 4.2.0)
letter_opener (1.10.0)
@@ -359,6 +361,7 @@ GEM
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.6.0)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
@@ -385,11 +388,12 @@ GEM
mini_magick (4.12.0)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
minitest (5.23.1)
minitest (5.24.1)
moneta (1.0.0)
msgpack (1.7.2)
multi_json (1.15.0)
multi_xml (0.6.0)
multi_xml (0.7.1)
bigdecimal (~> 3.1)
mutex_m (0.2.0)
net-http (0.4.1)
uri
@@ -403,13 +407,13 @@ GEM
net-smtp (0.5.0)
net-protocol
nio4r (2.7.3)
nokogiri (1.16.5)
nokogiri (1.16.6)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.16.5-x86_64-linux)
nokogiri (1.16.6-x86_64-linux)
racc (~> 1.4)
oauth (0.5.6)
oj (3.16.3)
oj (3.16.4)
bigdecimal (>= 3.0)
omniauth (1.9.2)
hashie (>= 3.4.6)
@@ -424,8 +428,8 @@ GEM
omniauth-oauth (~> 1.1)
rack
orm_adapter (0.5.0)
parallel (1.24.0)
parser (3.3.2.0)
parallel (1.25.1)
parser (3.3.4.0)
ast (~> 2.4.1)
racc
percy-capybara (5.0.0)
@@ -441,7 +445,7 @@ GEM
method_source (~> 1.0)
psych (5.1.2)
stringio
public_suffix (5.0.5)
public_suffix (6.0.0)
puma (6.4.2)
nio4r (~> 2.0)
query_diet (0.7.1)
@@ -501,25 +505,25 @@ GEM
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
raindrops (0.20.0)
raindrops (0.20.1)
rake (13.2.1)
rate_throttle_client (0.1.2)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rdoc (6.6.3.1)
rdoc (6.7.0)
psych (>= 4.0.0)
recaptcha (5.16.0)
redis-client (0.22.1)
recaptcha (5.17.0)
redis-client (0.22.2)
connection_pool
regexp_parser (2.9.2)
reline (0.5.7)
reline (0.5.9)
io-console (~> 0.5)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.8)
strscan (>= 3.0.9)
rexml (3.3.2)
strscan
rouge (4.1.2)
rspec (3.13.0)
rspec-core (~> 3.13.0)
@@ -531,13 +535,13 @@ GEM
rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
rspec-expectations (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (6.1.2)
rspec-rails (6.1.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
@@ -560,35 +564,35 @@ GEM
rswag-ui (2.13.0)
actionpack (>= 3.1, < 7.2)
railties (>= 3.1, < 7.2)
rubocop (1.64.1)
rubocop (1.65.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
regexp_parser (>= 2.4, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3)
parser (>= 3.3.1.0)
rubocop-capybara (2.20.0)
rubocop-capybara (2.21.0)
rubocop (~> 1.41)
rubocop-factory_bot (2.25.1)
rubocop (~> 1.41)
rubocop-rails (2.24.1)
rubocop-factory_bot (2.26.1)
rubocop (~> 1.61)
rubocop-rails (2.25.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (2.30.0)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
rubocop-rspec_rails (~> 2.28)
rubocop-rspec_rails (2.28.3)
rubocop (~> 1.40)
rubocop-rake (0.6.0)
rubocop (~> 1.0)
rubocop-rspec (3.0.3)
rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61)
rubocop-rspec (~> 3, >= 3.0.1)
ruby-progressbar (1.13.0)
ruby-units (4.0.3)
ruby-vips (2.2.1)
@@ -612,16 +616,18 @@ GEM
searchkick (5.3.1)
activemodel (>= 6.1)
hashie
selenium-webdriver (4.20.1)
selenium-webdriver (4.23.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
sidekiq (7.2.4)
sidekiq (7.3.0)
concurrent-ruby (< 2)
connection_pool (>= 2.3.0)
logger
rack (>= 2.2.4)
redis-client (>= 0.19.0)
redis-client (>= 0.22.2)
simplecov (0.13.0)
docile (~> 1.1.0)
json (>= 1.8, < 3)
@@ -636,18 +642,18 @@ GEM
activesupport (>= 5.2)
sprockets (>= 3.0.0)
ssrf_filter (1.1.2)
stringio (3.1.0)
stringio (3.1.1)
strscan (3.1.0)
sysexits (1.2.0)
temple (0.10.3)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terser (1.2.2)
terser (1.2.3)
execjs (>= 0.3.0, < 3)
thor (1.3.1)
thread_safe (0.3.6)
tilt (2.3.0)
timecop (0.9.9)
tilt (2.4.0)
timecop (0.9.10)
timeout (0.4.1)
trollop (1.16.2)
tzinfo (2.0.6)
@@ -673,18 +679,18 @@ GEM
rack (>= 1.0)
rack-test (>= 0.5.3)
webrick (1.8.1)
websocket (1.2.10)
websocket (1.2.11)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
will_paginate (4.0.0)
will_paginate (4.0.1)
will_paginate-bootstrap-style (0.3.0)
will_paginate (~> 4.0, >= 4.0.0)
xmlrpc (0.3.3)
webrick
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.14)
zeitwerk (2.6.16)
PLATFORMS
ruby
@@ -776,8 +782,12 @@ DEPENDENCIES
rswag-specs
rswag-ui
rubocop
rubocop-capybara
rubocop-factory_bot
rubocop-rails
rubocop-rake
rubocop-rspec
rubocop-rspec_rails
ruby-units
sassc-rails
scout_apm
@@ -796,7 +806,7 @@ DEPENDENCIES
xmlrpc
RUBY VERSION
ruby 3.1.4p223
ruby 3.3.4p94
BUNDLED WITH
2.3.11
2.4.22

View File

@@ -0,0 +1,22 @@
$(document).ready(function() {
var url = location.href.replace(/\/$/, '');
if (location.hash) {
var hash = url.split('#');
var triggerEl = document.querySelector('#myTab a[href="#' + hash[1] + '"]');
var tab = new bootstrap.Tab(triggerEl);
tab.show();
url = location.href.replace(/\/#/, '#');
history.replaceState(null, null, url);
setTimeout(function() {
$(window).scrollTop(0);
}, 20);
}
$('a[data-bs-toggle="tab"]').on('click', function() {
var newUrl;
var hash = $(this).attr('href');
newUrl = url.split('#')[0] + hash;
history.replaceState(null, null, newUrl);
});
});

View File

@@ -81,8 +81,8 @@ class ActivitiesController < DataController
end
def specifics
if @owner.present?
"#{@owner.to_param}-"
end
return if @owner.blank?
"#{@owner.to_param}-"
end
end

View File

@@ -3,9 +3,7 @@
class ApplicationController < ActionController::Base
protect_from_forgery
# Working from codespaces, we want to turn off validation
if Rails.env.development? && ENV['CODESPACE_NAME']
skip_before_action :verify_authenticity_token
end
skip_before_action :verify_authenticity_token if Rails.env.development? && ENV['CODESPACE_NAME']
include ApplicationHelper

View File

@@ -81,7 +81,7 @@ class CropsController < ApplicationController
@companions = @crop.companions.approved
end
format.svg do
icon_data = @crop.svg_icon.presence || File.read(Rails.root.join('app', 'assets', 'images', 'icons', 'sprout.svg'))
icon_data = @crop.svg_icon.presence || File.read(Rails.root.join("app/assets/images/icons/sprout.svg"))
send_data(icon_data, type: "image/svg+xml", disposition: "inline")
end
format.json do
@@ -113,7 +113,12 @@ class CropsController < ApplicationController
@crop.approval_status = "pending"
end
notify_wranglers if Crop.transaction { @crop.save && save_crop_names }
if Crop.transaction { @crop.save && save_crop_names }
notify_wranglers
else
@crop.alternate_names.build
@crop.scientific_names.build
end
respond_with @crop
end

View File

@@ -58,7 +58,7 @@ class LikesController < ApplicationController
def failed(like, message)
respond_to do |format|
format.json { render(json: { 'error': message }, status: :forbidden) }
format.json { render(json: { error: message }, status: :forbidden) }
format.html do
flash[:error] = message
if like&.likeable

View File

@@ -61,7 +61,7 @@ class MembersController < ApplicationController
end
def unsubscribe
verifier = ActiveSupport::MessageVerifier.new(ENV['RAILS_SECRET_TOKEN'])
verifier = ActiveSupport::MessageVerifier.new(ENV.fetch('RAILS_SECRET_TOKEN', nil))
decrypted_message = verifier.verify(params[:message])
@member = Member.find(decrypted_message[:member_id])

View File

@@ -21,7 +21,7 @@ class MessagesController < ApplicationController
return if params[:recipient_id].blank?
@recipient = Member.find_by(id: params[:recipient_id])
return if @recipient.nil?
nil if @recipient.nil?
end
def create

View File

@@ -41,7 +41,7 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def after_sign_in_path_for(resource)
if resource.tos_agreement
super(resource)
super
else
finish_signup_path(resource)
end

View File

@@ -7,14 +7,14 @@ module CropsHelper
return "You don't have any seeds of this crop." if seeds.none?
if total_quantity != 0
"You have #{total_quantity} #{Seed.model_name.human(count: total_quantity)} of this crop."
else
if total_quantity == 0
"You have an unknown quantity of seeds of this crop."
else
"You have #{total_quantity} #{Seed.model_name.human(count: total_quantity)} of this crop."
end
end
def crop_ebay_seeds_url(crop)
"https://rover.ebay.com/rover/1/705-53470-19255-0/1?icep_ff3=9&pub=5575213277&toolid=10001&campid=5337940151&customid=&icep_uq=#{CGI.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"
"https://www.ebay.com/sch/i.html?_nkw=#{CGI.escape crop.name}"
end
end

View File

@@ -2,15 +2,15 @@
class NotifierMailer < ApplicationMailer
# include NotificationsHelper
default from: "Growstuff <#{ENV['GROWSTUFF_EMAIL']}>"
default from: "Growstuff <#{ENV.fetch('GROWSTUFF_EMAIL', nil)}>"
def verifier
unless ENV['RAILS_SECRET_TOKEN']
raise "RAILS_SECRET_TOKEN environment variable"\
"not set - have you created config/application.yml?"
raise "RAILS_SECRET_TOKEN environment variable" \
"not set - have you created config/application.yml?"
end
ActiveSupport::MessageVerifier.new(ENV['RAILS_SECRET_TOKEN'])
ActiveSupport::MessageVerifier.new(ENV.fetch('RAILS_SECRET_TOKEN', nil))
end
def notify(notification)
@@ -27,7 +27,7 @@ class NotifierMailer < ApplicationMailer
def planting_reminder(member)
@member = member
@sitename = ENV['GROWSTUFF_SITE_NAME']
@sitename = ENV.fetch('GROWSTUFF_SITE_NAME', nil)
@late = []
@super_late = []

View File

@@ -9,8 +9,8 @@ module MemberFlickr
if @flickr.nil?
flickr_auth = auth('flickr')
if flickr_auth
FlickRaw.api_key = ENV['GROWSTUFF_FLICKR_KEY']
FlickRaw.shared_secret = ENV['GROWSTUFF_FLICKR_SECRET']
FlickRaw.api_key = ENV.fetch('GROWSTUFF_FLICKR_KEY', nil)
FlickRaw.shared_secret = ENV.fetch('GROWSTUFF_FLICKR_SECRET', nil)
@flickr = FlickRaw::Flickr.new
@flickr.access_token = flickr_auth.token
@flickr.access_secret = flickr_auth.secret

View File

@@ -78,7 +78,7 @@ module PredictPlanting
end
# Deactivate any plantings over time_limit that are super late in small batches.
def self.archive!(time_limit: 3.years.ago, limit: 100)
def self.archive!(time_limit: 3.years.ago, limit: 1000)
active_plantings = Planting.annual.active.where("planted_at < ?", time_limit).order(planted_at: :asc).limit(limit)
active_plantings.each do |planting|
if planting.finish_is_predicatable? && planting.super_late?

View File

@@ -44,7 +44,7 @@ module SearchActivities
1..limit.times do
where = {
# photos_count: { gt: 0 },
owner_id: { not: owners }
owner_id: { not: owners }
}
one_record = search('*',
limit: 1,

View File

@@ -30,7 +30,7 @@ module SearchPlantings
quantity:,
sunniness:,
garden_id:,
garden_name: garden&.name,
garden_name: garden&.name,
description:,
first_harvest_predicted_at:,

View File

@@ -59,7 +59,7 @@ class CsvImporter
alternate_names.split(/,\s*/).each do |name|
altname = AlternateName.find_by(name:, crop: @crop)
altname ||= AlternateName.create! name: name, crop: @crop, creator: cropbot
altname ||= AlternateName.create! name:, crop: @crop, creator: cropbot
@crop.alternate_names << altname
end
end

View File

@@ -10,7 +10,7 @@ class Follow < ApplicationRecord
recipient_id: followed_id,
sender_id: follower_id,
subject: "#{follower.login_name} is now following you",
body: "#{follower.login_name} just followed you on #{ENV['GROWSTUFF_SITE_NAME']}. "
body: "#{follower.login_name} just followed you on #{ENV.fetch('GROWSTUFF_SITE_NAME', nil)}. "
)
end
end

View File

@@ -80,11 +80,11 @@ class Garden < ApplicationRecord
def reindex(refresh: false); end
# Deactivate any gardens with no active plantings
def self.archive!(time_limit: 3.years.ago, limit: 100)
Garden.active.where("updated_at < ?", time_limit).order(updated_at: :asc).limit(limit).each do |active_garden|
def self.archive!(time_limit: 3.years.ago, limit: 1000)
Garden.active.where("gardens.updated_at < ?", time_limit).order(updated_at: :asc).limit(limit).each do |active_garden|
unless active_garden.plantings.active.any?
garden.active = false
garden.save
active_garden.active = false
active_garden.save
end
end
end

View File

@@ -33,17 +33,17 @@ class Seed < ApplicationRecord
validates :days_until_maturity_max, allow_nil: true,
numericality: { only_integer: true, greater_than_or_equal_to: 0 }
validates :tradable_to, allow_blank: false,
inclusion: { in: TRADABLE_TO_VALUES, message: "You may only trade seed nowhere, "\
"locally, nationally, or internationally" }
inclusion: { in: TRADABLE_TO_VALUES, message: "You may only trade seed nowhere, " \
"locally, nationally, or internationally" }
validates :organic, allow_blank: false,
inclusion: { in: ORGANIC_VALUES, message: "You must say whether the seeds "\
"are organic or not, or that you don't know" }
inclusion: { in: ORGANIC_VALUES, message: "You must say whether the seeds " \
"are organic or not, or that you don't know" }
validates :gmo, allow_blank: false,
inclusion: { in: GMO_VALUES, message: "You must say whether the seeds are "\
"genetically modified or not, or that you don't know" }
inclusion: { in: GMO_VALUES, message: "You must say whether the seeds are " \
"genetically modified or not, or that you don't know" }
validates :heirloom, allow_blank: false,
inclusion: { in: HEIRLOOM_VALUES, message: "You must say whether the seeds"\
"are heirloom, hybrid, or unknown" }
inclusion: { in: HEIRLOOM_VALUES, message: "You must say whether the seeds" \
"are heirloom, hybrid, or unknown" }
#
# Delegations
@@ -56,7 +56,7 @@ class Seed < ApplicationRecord
default_scope { joins(:owner).merge(Member.kept) } # Ensure owner exists
scope :tradable, -> { where.not(tradable_to: 'nowhere') }
scope :interesting, -> { tradable.has_location }
scope :has_location, -> { joins(:owner).where.not("members.location": nil) }
scope :has_location, -> { joins(:owner).where.not('members.location': nil) }
scope :recent, -> { order(created_at: :desc) }
scope :active, -> { where('finished <> true').where('finished_at IS NULL OR finished_at < ?', Time.zone.now) }

View File

@@ -26,7 +26,7 @@
%h2 Basic information
.form-group#new_crop
= f.text_field :name
= f.text_field :name, required: true
%span.help-block
The common name for the crop, in English (required).
- if can? :wrangle, @crop
@@ -43,7 +43,7 @@
- unless @crop.approved?
= link_to 'Search wikipedia', "https://en.wikipedia.org/w/index.php?search=#{@crop.name}", target: '_blank'
= f.text_field :en_wikipedia_url, id: "en_wikipedia_url", label: 'Wikipedia URL'
= f.url_field :en_wikipedia_url, id: "en_wikipedia_url", label: 'Wikipedia URL'
%span.help-block
Link to the crop's page on the English language Wikipedia (required).

View File

@@ -1,4 +1,6 @@
= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :delete, class: 'form-horizontal' }) do |f|
= form_for(resource, as: resource_name,
url: registration_path(resource_name) + '#delete',
html: { method: :delete, class: 'form-horizontal' }) do |f|
%br/
= render 'devise/shared/error_messages', resource: resource

View File

@@ -1,5 +1,5 @@
= form_for(resource, as: resource_name,
url: registration_path(resource_name),
url: registration_path(resource_name) + '#apps',
html: { method: :put, class: 'form-horizontal' }) do |_f|
%br/
= render 'devise/shared/error_messages', resource: resource

View File

@@ -1,5 +1,5 @@
= form_for(resource, as: resource_name,
url: registration_path(resource_name),
url: registration_path(resource_name) + '#email',
html: { method: :put, class: 'form-horizontal' }) do |f|
%br/
= render 'devise/shared/error_messages', resource: resource

View File

@@ -1,5 +1,5 @@
= form_for(resource, as: resource_name,
url: registration_path(resource_name),
url: registration_path(resource_name) + '#password',
html: { method: :put, class: 'form-horizontal' }) do |f|
%br/
= render 'devise/shared/error_messages', resource: resource

View File

@@ -1,5 +1,5 @@
= form_for(resource, as: resource_name,
url: registration_path(resource_name),
url: registration_path(resource_name) + '#profile',
html: { method: :put, class: 'form-horizontal' }) do |f|
%br/
= render 'devise/shared/error_messages', resource: resource

View File

@@ -35,7 +35,7 @@
- if @member.last_sign_in_at
%p
%strong Last Login
= @member.last_sign_in_at
= @member.last_sign_in_at&.to_fs(:default)
- if can? :update, @member
= link_to edit_member_registration_path, class: 'btn btn-block' do

View File

@@ -30,3 +30,9 @@
= seed_icon
= link_to t('photos.show.seed', seed: seed.to_s, owner: seed.owner.to_s), seed_path(seed)
= render "association_delete_button", photo: @photo, type: 'seed', thing: seed
- @photo.crops.each do |crop|
%li
= crop_icon(crop)
= link_to t('photos.show.crop', crop: crop.to_s), crop_path(crop)
= render "association_delete_button", photo: @photo, type: 'crop', thing: crop

View File

@@ -8,10 +8,10 @@
in
= link_to @post.forum, @post.forum
on
= @post.created_at
= @post.created_at.to_fs(:default)
- if @post.updated_at > @post.created_at
and edited at
= @post.updated_at
= @post.updated_at.to_fs(:default)
= link_to "Permalink", post

View File

@@ -24,4 +24,9 @@
- photo.seeds.each do |seed|
%li
= seed_icon
= link_to t('photos.show.seed', seed: seed.to_s, owner: seed.owner.to_s), seed_path(seed)
= link_to t('photos.show.seed', seed: seed.to_s, owner: seed.owner.to_s), seed_path(seed)
- photo.crops.each do |crop|
%li
= crop_icon(crop)
= link_to t('photos.show.crop', crop: crop.to_s), crop_path(crop)

View File

@@ -23,12 +23,8 @@ FileUtils.chdir APP_ROOT do
system('bin/yarn')
puts "\n== Copying sample files =="
unless File.exist?('config/database.yml')
FileUtils.cp 'config/database.yml.example', 'config/database.yml'
end
unless File.exist?('.env')
FileUtils.cp 'env-example', '.env'
end
FileUtils.cp 'config/database.yml.example', 'config/database.yml' unless File.exist?('config/database.yml')
FileUtils.cp 'env-example', '.env' unless File.exist?('.env')
puts "\n== Checking for elastic search =="
system! 'script/check_elasticsearch.sh'

View File

@@ -2,5 +2,5 @@
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('config/environment', __dir__)
require File.expand_path('config/environment', __dir__)
run Rails.application

View File

@@ -26,7 +26,7 @@ module Growstuff
config.active_record.yaml_column_permitted_classes = [Symbol, Date, Time, ActiveSupport::TimeWithZone, ActiveSupport::TimeZone]
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}')]
I18n.load_path += Dir[Rails.root.join("config/locales/*.{rb,yml}")]
I18n.default_locale = :en
# rails will fallback to config.i18n.default_locale translation
config.i18n.fallbacks = true
@@ -62,7 +62,7 @@ module Growstuff
# Growstuff-specific configuration variables
config.currency = 'AUD'
config.bot_email = ENV['GROWSTUFF_EMAIL']
config.bot_email = ENV.fetch('GROWSTUFF_EMAIL', nil)
config.user_agent = 'Growstuff'
config.user_agent_email = "info@growstuff.org"
@@ -70,7 +70,7 @@ module Growstuff
# 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']
config.newsletter_list_id = ENV.fetch('GROWSTUFF_MAILCHIMP_NEWSLETTER_ID', nil)
# config.active_record.raise_in_transactional_callbacks = true
config.middleware.insert_before 0, Rack::Cors do

View File

@@ -16,7 +16,7 @@ Rails.application.configure do
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
if Rails.root.join('tmp', 'caching-dev.txt').exist?
if Rails.root.join("tmp/caching-dev.txt").exist?
config.action_controller.perform_caching = true
config.cache_store = :memory_store

View File

@@ -27,7 +27,7 @@ Rails.application.configure do
# Compress JavaScripts and CSS.
config.assets.js_compressor = :terser
# config.assets.css_compressor = :sass
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
@@ -59,8 +59,8 @@ Rails.application.configure do
# Use a different cache store in production.
config.cache_store = :mem_cache_store,
(ENV["MEMCACHIER_SERVERS"] || "").split(","),
{ username: ENV["MEMCACHIER_USERNAME"],
password: ENV["MEMCACHIER_PASSWORD"],
{ username: ENV.fetch("MEMCACHIER_USERNAME", nil),
password: ENV.fetch("MEMCACHIER_PASSWORD", nil),
failover: true,
socket_timeout: 1.5,
socket_failure_delay: 0.2,
@@ -89,20 +89,20 @@ Rails.application.configure do
config.active_record.dump_schema_after_migration = false
# Growstuff configuration
config.action_mailer.default_url_options = { host: ENV['HOST'] }
config.action_mailer.default_url_options = { host: ENV.fetch('HOST', nil) }
config.action_mailer.smtp_settings = {
user_name: ENV['MAILGUN_SMTP_LOGIN'],
password: ENV['MAILGUN_SMTP_PASSWORD'],
domain: ENV['GROWSTUFF_EMAIL_DOMAIN'],
address: ENV['MAILGUN_SMTP_SERVER'],
user_name: ENV.fetch('MAILGUN_SMTP_LOGIN', nil),
password: ENV.fetch('MAILGUN_SMTP_PASSWORD', nil),
domain: ENV.fetch('GROWSTUFF_EMAIL_DOMAIN', nil),
address: ENV.fetch('MAILGUN_SMTP_SERVER', nil),
port: 587,
authentication: :plain,
enable_starttls_auto: true
}
ActionMailer::Base.delivery_method = :smtp
config.host = ENV['HOST']
config.host = ENV.fetch('HOST', nil)
config.analytics_code = <<-GET_CLICKY_SCRIPT
<script src="//static.getclicky.com/js" type="text/javascript"></script>
<script type="text/javascript">try{ clicky.init(100594260); }catch(e){}</script>

View File

@@ -2,7 +2,7 @@
ActionDispatch::Callbacks.after do
# Reload the factories
return unless Rails.env.development? || Rails.env.test?
return unless Rails.env.local?
if FactoryBot.factories.present? # first init will load factories, this should only run on subsequent reloads
FactoryBot.factories.clear

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
# ActiveSupport::Reloader.to_prepare do

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
# Define an application-wide content security policy

View File

@@ -6,9 +6,9 @@ Devise.setup do |config|
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
config.mailer_sender = "Growstuff <#{ENV['GROWSTUFF_EMAIL']}>"
config.mailer_sender = "Growstuff <#{ENV.fetch('GROWSTUFF_EMAIL', nil)}>"
config.secret_key = ENV['RAILS_SECRET_TOKEN']
config.secret_key = ENV.fetch('RAILS_SECRET_TOKEN', nil)
# Configure the class responsible to send e-mails.
# config.mailer = "Devise::Mailer"

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
# Add new mime types for use in respond_to blocks:

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 5.2 upgrade.

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ENV['GROWSTUFF_TWITTER_KEY'], ENV['GROWSTUFF_TWITTER_SECRET']
provider :flickr, ENV['GROWSTUFF_FLICKR_KEY'], ENV['GROWSTUFF_FLICKR_SECRET'], scope: 'read'
provider :twitter, ENV.fetch('GROWSTUFF_TWITTER_KEY', nil), ENV.fetch('GROWSTUFF_TWITTER_SECRET', nil)
provider :flickr, ENV.fetch('GROWSTUFF_FLICKR_KEY', nil), ENV.fetch('GROWSTUFF_FLICKR_SECRET', nil), scope: 'read'
end

View File

@@ -267,6 +267,7 @@ en:
planting: "%{planting}"
seed: "%{seed}"
thing_by: A %{thing} by %{owner}
crop: "%{crop}"
places:
index:
title: "%{site_name} Community Map"

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class CreateCms < ActiveRecord::Migration[4.2]
def self.up # rubocop:disable Metrics/MethodLength
def self.up
# -- Sites --------------------------------------------------------------
create_table :comfy_cms_sites do |t|
t.string :label, null: false

View File

@@ -37,18 +37,22 @@ class CreatePhotographings < ActiveRecord::Migration[4.2]
Photographing.create! photo_id: s.photo_id, photographable_id: s.seed_id, photographable_type: 'Seed'
end
end
class GardensPhoto < ApplicationRecord
belongs_to :photo
belongs_to :garden
end
class PhotosPlanting < ApplicationRecord
belongs_to :photo
belongs_to :planting
end
class HarvestsPhoto < ApplicationRecord
belongs_to :photo
belongs_to :harvest
end
class PhotosSeed < ApplicationRecord
belongs_to :photo
belongs_to :seed

View File

@@ -9,6 +9,7 @@ class AddCropToPhotographings < ActiveRecord::Migration[5.2]
p.set_crop && p.save!
end
end
class Photographing < ApplicationRecord
belongs_to :photo, inverse_of: :photo_associations
belongs_to :photographable, polymorphic: true

View File

@@ -28,10 +28,10 @@ class CmsTags < ActiveRecord::Migration[5.2]
layout.content = layout.content.gsub(%r{\{\{ ?cms:(\w+):([\w/-]+):([\w/-]+):([\w/-]+) ?\}\}}, '{{ cms:\1 \2 \3 \4}}')
end
layout.content = layout.content.gsub(/\{\{ ?cms:(\w+):(\w+):([^:]*) ?}}/, '{{ cms:\1 \2, "\3" }}') if layout.content.is_a? String
layout.content = layout.content.gsub(/cms:rich_text/, 'cms:wysiwyg') if layout.content.is_a? String
layout.content = layout.content.gsub(/cms:integer/, 'cms:number') if layout.content.is_a? String
layout.content = layout.content.gsub("cms:rich_text", 'cms:wysiwyg') if layout.content.is_a? String
layout.content = layout.content.gsub("cms:integer", 'cms:number') if layout.content.is_a? String
if layout.content.is_a? String
layout.content = layout.content.gsub(/cms: string/, 'cms:text')
layout.content = layout.content.gsub("cms: string", 'cms:text')
end # probably a result of goofing one of the more general regexps
if layout.content.is_a? String
layout.content = layout.content.gsub(%r{\{\{ ?cms:page_file ([\w/]+) ?\}\}}, '{{ cms:file \1, render: false }}')

View File

@@ -39,7 +39,7 @@ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
t.foreign_key :active_storage_blobs, column: :blob_id
end
create_table :active_storage_variant_records, id: primary_key_type do |t|
create_table :active_storage_variant_records, id: primary_key_type do |t| # rubocop:disable Rails/CreateTableWithTimestamps
t.belongs_to :blob, null: false, index: false, type: foreign_key_type
t.string :variation_digest, null: false

View File

@@ -1,4 +1,5 @@
# frozen_string_literal: true
class AddSlugToActivity < ActiveRecord::Migration[7.1]
def change
add_column :activities, :slug, :string

View File

@@ -26,7 +26,7 @@ def load_data
end
def load_crops
source_path = Rails.root.join('db', 'seeds')
source_path = Rails.root.join("db/seeds")
Dir.glob("#{source_path}/crops*.csv").each do |crop_file|
puts "Loading crops from #{crop_file}..."
CSV.foreach(crop_file) do |row|
@@ -48,7 +48,7 @@ def load_test_users
puts "Loading test users..."
# Open suburb csv
source_path = Rails.root.join('db', 'seeds')
source_path = Rails.root.join("db/seeds")
begin
suburb_file = File.open("#{source_path}/suburbs.csv")
rescue StandardError
@@ -86,7 +86,7 @@ def load_test_users
owner_id: @user.id,
garden_id: @user.gardens.first.id,
planted_at: (n * 7).days.ago,
crop_id: Crop.find((i + n) % Crop.all.size + 1).id,
crop_id: Crop.find(((i + n) % Crop.all.size) + 1).id,
sunniness: select_random_item(Planting::SUNNINESS_VALUES),
planted_from: select_random_item(Planting::PLANTED_FROM_VALUES)
)

View File

@@ -6,7 +6,7 @@ require 'haml/filters/growstuff_markdown'
class Haml::Filters
class EscapedMarkdown < Haml::Filters::Markdown
def compile(node)
[:escape, true, super(node)]
[:escape, true, super]
end
end

View File

@@ -1,7 +1,6 @@
# frozen_string_literal: true
namespace :gardens do
desc "Mark old gardens inactive"
task archive: :environment do
Planting.archive!

View File

@@ -5,20 +5,20 @@ namespace :growstuff do
# usage: rake growstuff:admin_user name=skud
task admin_user: :environment do
add_role_to_member! ENV['name'], 'Admin'
add_role_to_member! ENV.fetch('name', nil), 'Admin'
end
desc "Add a crop wrangler user, by name"
# usage: rake growstuff:cropwrangler_user name=skud
task cropwrangler_user: :environment do
add_role_to_member! ENV['name'], 'Crop Wrangler'
add_role_to_member! ENV.fetch('name', nil), '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"
raise "Usage: rake growstuff:[rolename] name=[username] " \
"\n (login name is case-sensitive)\n"
end
member = Member.find_by!(login_name:)
role = Role.find_by!(name: role_name)
@@ -31,7 +31,7 @@ namespace :growstuff do
task import_crops: :environment do
require 'csv'
(@file = ENV['file']) || raise("Usage: rake growstuff:import_crops file=file.csv")
(@file = ENV.fetch('file', nil)) || raise("Usage: rake growstuff:import_crops file=file.csv")
puts "Loading crops from #{@file}..."
CSV.foreach(@file) do |row|

View File

@@ -5,12 +5,12 @@ require "English"
if ENV['CI']
if ENV['GITHUB_EVENT_NAME'] == 'pull_request'
author = ENV['GITHUB_ACTOR']
author = ENV.fetch('GITHUB_ACTOR', nil)
exit 1 unless author
elsif ENV['TRAVIS_PULL_REQUEST']
require 'httparty'
repo = ENV['TRAVIS_REPO_SLUG']
repo = ENV.fetch('TRAVIS_REPO_SLUG', nil)
pr = ENV['TRAVIS_PULL_REQUEST']
url = "https://api.github.com/repos/#{repo}/pulls/#{pr}"
response = HTTParty.get(url).parsed_response

View File

@@ -4,8 +4,8 @@
require 'platform-api'
require 'yaml'
heroku = PlatformAPI.connect(ENV['HEROKU_API_KEY'])
branch = ENV['TRAVIS_BRANCH']
heroku = PlatformAPI.connect(ENV.fetch('HEROKU_API_KEY', nil))
branch = ENV.fetch('TRAVIS_BRANCH', nil)
travis_config = YAML.load_file('.travis.yml')
if travis_config['deploy']['app'].key? branch
app = travis_config['deploy']['app'][branch]

View File

@@ -28,7 +28,7 @@ describe CropsController do
end
end
describe "GET crop hierarchy " do
describe "GET crop hierarchy" do
describe 'fetches the crop hierarchy page' do
context 'wrangler' do
include_context 'login as wrangler'
@@ -82,8 +82,8 @@ describe CropsController do
name: 'aubergine',
en_wikipedia_url: "https://en.wikipedia.org/wiki/Eggplant"
},
alt_name: { "1": "egg plant", "2": "purple apple" },
sci_name: { "1": "fancy sci name", "2": "" }
alt_name: { '1': "egg plant", '2': "purple apple" },
sci_name: { '1': "fancy sci name", '2': "" }
}
end

View File

@@ -3,24 +3,23 @@
# Read about factories at https://github.com/thoughtbot/factory_bot
FactoryBot.define do
factory :activity do
name { "Admire" }
description { "Spend 10 minutes admiring your hard work" }
category { "General" }
owner
trait :garden do
category { "Soil Cultivation" }
description { "Apply compost from winter" }
due_date { 3.months.from_now }
garden
end
factory :activity do
name { "Admire" }
description { "Spend 10 minutes admiring your hard work" }
category { "General" }
owner
trait :planting do
category { "Pruning" }
description { "Stake tomato" }
planting
end
trait :garden do
category { "Soil Cultivation" }
description { "Apply compost from winter" }
due_date { 3.months.from_now }
garden
end
trait :planting do
category { "Pruning" }
description { "Stake tomato" }
planting
end
end
end

View File

@@ -19,4 +19,4 @@ describe "newsletter subscribers", :js do
it { expect(page).to have_current_path admin_newsletter_path, ignore_query: true }
it { expect(page).to have_content @subscriber.email }
end
end
end

View File

@@ -37,7 +37,7 @@ describe "Conversations", :js do
describe 'restore conversation' do
before { click_link class: 'restore' }
it { expect(page).not_to have_content 'something i want to say' }
it { expect(page).to have_no_content 'something i want to say' }
describe 'conversation was restored' do
before { click_link 'inbox' }
@@ -61,8 +61,8 @@ describe "Conversations", :js do
all('input[type=checkbox]').each(&:click)
click_button 'Delete'
expect(page).not_to have_content 'this is a message'
expect(page).not_to have_content 'this is another message'
expect(page).to have_no_content 'this is a message'
expect(page).to have_no_content 'this is another message'
end
it 'deletes multiple conversations from the sentbox' do
@@ -81,8 +81,8 @@ describe "Conversations", :js do
expect(page).to have_selector('.sent')
find('.sent').click
expect(page).not_to have_content 'this is a message'
expect(page).not_to have_content 'this is another message'
expect(page).to have_no_content 'this is a message'
expect(page).to have_no_content 'this is another message'
end
end
end

View File

@@ -46,7 +46,7 @@ describe "Alternate names", :js do
accept_confirm do
click_link 'Delete'
end
expect(page).not_to have_content alternate_eggplant.name
expect(page).to have_no_content alternate_eggplant.name
expect(page).to have_content 'Alternate name was successfully deleted'
end

View File

@@ -19,11 +19,11 @@ describe "browse crops", :search do
end
it "pending crops are not listed" do
expect(page).not_to have_content pending_crop.name
expect(page).to have_no_content pending_crop.name
end
it "rejected crops are not listed" do
expect(page).not_to have_content rejected_crop.name
expect(page).to have_no_content rejected_crop.name
end
end
@@ -35,7 +35,7 @@ describe "browse crops", :search do
context 'anon' do
include_examples 'shows crops'
it { expect(page).not_to have_link "Add New Crop" }
it { expect(page).to have_no_link "Add New Crop" }
end
context 'member' do

View File

@@ -22,7 +22,7 @@ describe "crop detail page", :js do
context "varieties" do
it "The crop DOES NOT have varieties" do
visit crop_path(crop)
expect(page).not_to have_text 'Varieties'
expect(page).to have_no_text 'Varieties'
end
end
@@ -92,7 +92,7 @@ describe "crop detail page", :js do
it "User not signed in" do
visit crop_path(seed.crop)
expect(page).not_to have_content "You have 20 seeds"
expect(page).to have_no_content "You have 20 seeds"
end
context 'signed in' do
@@ -194,7 +194,7 @@ describe "crop detail page", :js do
it { expect(page).to have_text 'Annual' }
it { expect(page).to have_text 'living and reproducing in a single year or less' }
it { expect(page).not_to have_text 'Perennial' }
it { expect(page).to have_no_text 'Perennial' }
end
context 'crop is Perennial' do
@@ -202,14 +202,14 @@ describe "crop detail page", :js do
it { expect(page).to have_text 'Perennial' }
it { expect(page).to have_text 'living more than two years' }
it { expect(page).not_to have_text 'Annual' }
it { expect(page).to have_no_text 'Annual' }
end
context 'crop Perennial value is null' do
let(:crop) { FactoryBot.create(:crop, perennial: nil) }
it { expect(page).not_to have_text 'Perennial' }
it { expect(page).not_to have_text 'Annual' }
it { expect(page).to have_no_text 'Perennial' }
it { expect(page).to have_no_text 'Annual' }
end
end
end

View File

@@ -69,7 +69,7 @@ describe "crop detail page", :js, :search do
include_examples "shows photos"
end
context "when not signed in " do
context "when not signed in" do
include_examples "shows photos"
end
end

View File

@@ -75,11 +75,11 @@ context "signed in non-wrangler" do
it "can't see wrangling page without js", js: false do
visit root_path
expect(page).not_to have_link "Crop Wrangling"
expect(page).to have_no_link "Crop Wrangling"
end
it "can't see wrangling page with js" do
visit member_path(member)
expect(page).not_to have_link "Crop Wrangling"
expect(page).to have_no_link "Crop Wrangling"
end
end

View File

@@ -6,14 +6,14 @@ describe "crop wrangling button" do
context 'not signed in' do
before { visit crops_path }
it { expect(page).not_to have_link "Wrangle Crops", href: wrangle_crops_path }
it { expect(page).to have_no_link "Wrangle Crops", href: wrangle_crops_path }
end
context "signed in, but not a crop wrangler" do
include_context 'signed in member'
before { visit crops_path }
it { expect(page).not_to have_link "Wrangle Crops", href: wrangle_crops_path }
it { expect(page).to have_no_link "Wrangle Crops", href: wrangle_crops_path }
end
context "signed in crop wrangler" do

View File

@@ -49,7 +49,7 @@ describe "Scientific names", :js do
end
end
# expect(page.status_code).to equal 200
expect(page).not_to have_content zea_mays.name
expect(page).to have_no_content zea_mays.name
expect(page).to have_content 'Scientific name was successfully deleted.'
end

View File

@@ -51,7 +51,7 @@ describe "Gardens" do
include_examples "has buttons bar at top"
describe 'does not show actions on other member garden' do
it { is_expected.not_to have_link 'Actions' }
it { is_expected.to have_no_link 'Actions' }
end
end
end
@@ -73,7 +73,7 @@ describe "Gardens" do
describe "someone else's garden" do
before { visit garden_path(other_member_garden) }
it { is_expected.not_to have_link 'Actions' }
it { is_expected.to have_no_link 'Actions' }
end
end
end

View File

@@ -33,7 +33,7 @@ describe "Gardens", :js do
fill_in "Name", with: "Negative Garden"
fill_in "Area", with: -5
click_button "Save"
expect(page).not_to have_content "Garden was successfully created"
expect(page).to have_no_content "Garden was successfully created"
expect(page).to have_content "Area must be greater than or equal to 0"
end
end

View File

@@ -31,7 +31,7 @@ describe "Planting a crop", :js do
click_link 'Actions'
expect(page).to have_content "Mark as active"
expect(page).not_to have_content "Mark as inactive"
expect(page).to have_no_content "Mark as inactive"
end
it "List only active gardens" do
@@ -41,7 +41,7 @@ describe "Planting a crop", :js do
click_link "Mark as inactive"
end
visit gardens_path
expect(page).not_to have_link garden_path(garden)
expect(page).to have_no_link garden_path(garden)
end
it "Create new garden" do
@@ -57,7 +57,7 @@ describe "Planting a crop", :js do
fill_in "Name", with: "Negative Garden"
fill_in "Area", with: -5
click_button "Save"
expect(page).not_to have_content "Garden was successfully created"
expect(page).to have_no_content "Garden was successfully created"
expect(page).to have_content "Area must be greater than or equal to 0"
end
@@ -124,7 +124,7 @@ describe "Planting a crop", :js do
it "List only active plantings on a garden" do
visit gardens_path
expect(page).not_to have_content finished_planting.crop_name
expect(page).to have_no_content finished_planting.crop_name
end
end

View File

@@ -40,7 +40,7 @@ describe "Gardens#index", :js do
end
it "does not show inactive garden" do
expect(page).not_to have_text inactive_garden.name
expect(page).to have_no_text inactive_garden.name
end
it "links to active garden" do
@@ -48,7 +48,7 @@ describe "Gardens#index", :js do
end
it "does not link to inactive gardens" do
expect(page).not_to have_link(inactive_garden.name, href: garden_path(inactive_garden))
expect(page).to have_no_link(inactive_garden.name, href: garden_path(inactive_garden))
end
end
@@ -72,7 +72,7 @@ describe "Gardens#index", :js do
end
it "does not show finished planting" do
expect(page).not_to have_text(finished_planting.crop.name)
expect(page).to have_no_text(finished_planting.crop.name)
end
end
end
@@ -113,7 +113,7 @@ describe "Gardens#index", :js do
it { expect(page).to have_link href: planting_path(planting) }
it { expect(page).to have_link href: garden_path(planting.garden) }
it { expect(page).to have_text '7 weeks' }
it { expect(page).not_to have_text 'harvesting now' }
it { expect(page).to have_no_text 'harvesting now' }
end
describe 'harvesting now' do
@@ -128,7 +128,7 @@ describe "Gardens#index", :js do
it { expect(crop.median_lifespan).to eq 90 }
it { expect(page).to have_text 'harvesting now' }
it { expect(page).not_to have_text 'Predicted weeks until harvest' }
it { expect(page).to have_no_text 'Predicted weeks until harvest' }
end
describe 'super late' do
@@ -139,9 +139,9 @@ describe "Gardens#index", :js do
end
it { expect(page).to have_text 'super late' }
it { expect(page).not_to have_text 'harvesting now' }
it { expect(page).not_to have_text 'Predicted weeks until harvest' }
it { expect(page).not_to have_text 'Predicted weeks until planting is finished' }
it { expect(page).to have_no_text 'harvesting now' }
it { expect(page).to have_no_text 'Predicted weeks until harvest' }
it { expect(page).to have_no_text 'Predicted weeks until planting is finished' }
end
end
end

View File

@@ -19,7 +19,7 @@ describe "browse harvests", :search do
end
it 'read more' do
expect(subject).not_to have_link "Read more"
expect(subject).to have_no_link "Read more"
end
end

View File

@@ -104,7 +104,7 @@ describe "home page", :search do
describe 'should say welcome' do
before { visit root_path }
it { expect(page).to have_content "Welcome to #{ENV['GROWSTUFF_SITE_NAME']}, #{member.login_name}" }
it { expect(page).to have_content "Welcome to #{ENV.fetch('GROWSTUFF_SITE_NAME', nil)}, #{member.login_name}" }
end
end
end

View File

@@ -18,7 +18,7 @@ describe "members list" do
end
it { expect(page).to have_link admin.login_name }
it { expect(page).not_to have_link spammer.login_name }
it { expect(page).to have_no_link spammer.login_name }
end
end
end

View File

@@ -117,9 +117,9 @@ describe "member deletion" do
it "removes members from following" do
visit member_follows_path(other_member)
expect(page).not_to have_content member.login_name.to_s
expect(page).to have_no_content member.login_name.to_s
visit member_followers_path(other_member)
expect(page).not_to have_content member.login_name.to_s
expect(page).to have_no_content member.login_name.to_s
end
it "replaces posts with deletion note" do
@@ -131,7 +131,7 @@ describe "member deletion" do
FactoryBot.create(:comment, post: othermemberpost, author: member, body: 'i am deleting my account')
visit post_path(othermemberpost)
expect(page).not_to have_content member.login_name
expect(page).to have_no_content member.login_name
expect(page).to have_content other_member.login_name
expect(page).to have_content "Member Deleted"
end
@@ -166,7 +166,7 @@ describe "member deletion" do
login_as(otherwrangler)
visit edit_crop_path(crop)
expect(page).to have_content member.login_name
expect(page).not_to have_content "cropbot"
expect(page).to have_no_content "cropbot"
logout
login_as(member)
visit member_path(member)
@@ -176,7 +176,7 @@ describe "member deletion" do
click_button "Delete"
login_as(otherwrangler)
visit edit_crop_path(crop)
expect(page).not_to have_content member.login_name
expect(page).to have_no_content member.login_name
end
end
end

View File

@@ -8,8 +8,8 @@ describe "follows", :js do
it "follow buttons on member profile page" do
visit member_path(member)
expect(page).not_to have_link "Follow"
expect(page).not_to have_link "Unfollow"
expect(page).to have_no_link "Follow"
expect(page).to have_no_link "Unfollow"
end
end
@@ -19,8 +19,8 @@ describe "follows", :js do
it "your profile doesn't have a follow button" do
visit member_path(member)
expect(page).not_to have_link "Follow"
expect(page).not_to have_link "Unfollow"
expect(page).to have_no_link "Follow"
expect(page).to have_no_link "Unfollow"
end
context "following another member" do
@@ -66,7 +66,7 @@ describe "follows", :js do
click_link 'Follow'
click_link 'Unfollow'
visit member_follows_path(member)
expect(page).not_to have_content other_member.login_name
expect(page).to have_no_content other_member.login_name
visit member_followers_path(other_member)
expect(page).to have_content member.login_name
end

View File

@@ -32,9 +32,9 @@ describe "member profile", :js do
it "member has not set location" do
visit member_path(member)
expect(page).not_to have_css("h1>small")
expect(page).not_to have_css("#membermap")
expect(page).not_to have_content "See other members"
expect(page).to have_no_css("h1>small")
expect(page).to have_no_css("#membermap")
expect(page).to have_no_content "See other members"
end
end
@@ -47,7 +47,7 @@ describe "member profile", :js do
it "private email address" do
visit member_path(member)
expect(page).not_to have_content member.email
expect(page).to have_no_content member.email
end
end
@@ -55,10 +55,10 @@ describe "member profile", :js do
it "with no activity" do
visit member_path(member)
expect(page).to have_content "Stats"
expect(page).not_to have_content "0 plantings"
expect(page).not_to have_content "0 harvests"
expect(page).not_to have_content "0 seeds"
expect(page).not_to have_content "0 posts"
expect(page).to have_no_content "0 plantings"
expect(page).to have_no_content "0 harvests"
expect(page).to have_no_content "0 seeds"
expect(page).to have_no_content "0 posts"
end
context "with some activity" do
@@ -102,8 +102,8 @@ describe "member profile", :js do
it "ordinary user's page" do
visit member_path(other_member)
expect(page).not_to have_text "Crop Wrangler"
expect(page).not_to have_text "Admin"
expect(page).to have_no_text "Crop Wrangler"
expect(page).to have_no_text "Admin"
end
end
end
@@ -120,7 +120,7 @@ describe "member profile", :js do
it { expect(page).to have_link href: planting_path(new_planting) }
it { expect(page).to have_link href: planting_path(old_planting) }
it { expect(page).to have_link href: planting_path(finished_planting) }
it { expect(page).not_to have_link href: planting_path(no_planted_at_planting) }
it { expect(page).to have_no_link href: planting_path(no_planted_at_planting) }
end
context 'member has activities' do
@@ -257,7 +257,7 @@ describe "member profile", :js do
expect(page).to have_link "Send message", href: new_message_path(recipient_id: other_member.id)
end
it { expect(page).not_to have_link "Edit profile", href: edit_member_registration_path }
it { expect(page).to have_no_link "Edit profile", href: edit_member_registration_path }
end
end
end

View File

@@ -18,7 +18,7 @@ describe "User searches" do
it { expect(page).to have_content "community near Philippines" }
it { expect(page).to have_button "search_button" }
it { expect(page).to have_content "Nearby members" }
it { expect(page).not_to have_content "No results found" }
it { expect(page).to have_no_content "No results found" }
end
it "with a blank search string" do

View File

@@ -23,7 +23,7 @@ describe "Planting reminder email", :js do
end
it "doesn't list plantings" do
expect(mail).not_to have_content "Progress report"
expect(mail).to have_no_content "Progress report"
end
end
@@ -43,7 +43,7 @@ describe "Planting reminder email", :js do
context "when member has no harvests" do
it "doesn't list plantings" do
expect(mail).not_to have_content "Ready to harvest"
expect(mail).to have_no_content "Ready to harvest"
end
end

View File

@@ -102,8 +102,8 @@ describe "Planting a crop", :js, :search do
end
expect(page).to have_content "planting was successfully created"
expect(page).not_to have_content "Finished"
expect(page).not_to have_content "Finishes"
expect(page).to have_no_content "Finished"
expect(page).to have_no_content "Finishes"
end
it "shows that planting is in progress" do
@@ -122,9 +122,9 @@ describe "Planting a crop", :js, :search do
end
expect(page).to have_content "planting was successfully created"
expect(page).not_to have_content "0%"
expect(page).not_to have_content "Finish expected"
expect(page).not_to have_content "Finishes"
expect(page).to have_no_content "0%"
expect(page).to have_no_content "Finish expected"
expect(page).to have_no_content "Finishes"
end
it "shows that planting is 100% complete (no date specified)" do
@@ -184,7 +184,7 @@ describe "Planting a crop", :js, :search do
it "Editing a planting to fill in the finished date" do
visit planting_path(planting)
expect(page).not_to have_content "Finishes"
expect(page).to have_no_content "Finishes"
# click_link(id: 'planting-actions-button')
click_link 'Actions'
click_link "Edit"
@@ -230,7 +230,7 @@ describe "Planting a crop", :js, :search do
# shouldn't be on the page
visit plantings_path
expect(page).not_to have_content "maize"
expect(page).to have_no_content "maize"
# show all plantings to see this finished planting
visit plantings_path(all: 1)

View File

@@ -22,7 +22,7 @@ describe "Display a planting", :js do
context 'Annual no predictions' do
let(:planting) { FactoryBot.create(:annual_planting) }
it { expect(page).not_to have_text 'Finish expected' }
it { expect(page).to have_no_text 'Finish expected' }
end
context 'Annual with predicted finish' do

View File

@@ -10,6 +10,6 @@ describe 'Comments RSS feed' do
it 'The index title is what we expect' do
visit comments_path(format: 'rss')
expect(page).to have_content "Recent comments on all posts (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "Recent comments on all posts (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -12,6 +12,6 @@ describe 'Crops RSS feed' do
it 'The index title is what we expect' do
Crop.reindex
visit crops_path(format: 'rss')
expect(page).to have_content "Recently added crops (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "Recently added crops (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -8,6 +8,6 @@ describe 'Members RSS feed' do
before { visit member_path(member, format: 'rss') }
it 'The show action title is what we expect' do
expect(page).to have_content "#{member.login_name}'s recent posts (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "#{member.login_name}'s recent posts (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -11,7 +11,7 @@ describe 'Plantings RSS feed' do
it 'The index title is what we expect' do
Planting.reindex
visit plantings_path(format: 'rss')
expect(page).to have_content "Recent plantings from "\
"#{@owner || 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "Recent plantings from " \
"#{@owner || 'all members'} (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -10,7 +10,7 @@ describe 'Posts RSS feed' do
it 'The index title is what we expect' do
visit posts_path(format: 'rss')
expect(page).to have_content "Recent posts from "\
"#{@author || 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "Recent posts from " \
"#{@author || 'all members'} (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -10,7 +10,7 @@ describe 'Seeds RSS feed' do
it 'The index title is what we expect' do
visit seeds_path(format: 'rss')
expect(page).to have_content "Recent seeds from "\
"#{@owner || 'all members'} (#{ENV['GROWSTUFF_SITE_NAME']})"
expect(page).to have_content "Recent seeds from " \
"#{@owner || 'all members'} (#{ENV.fetch('GROWSTUFF_SITE_NAME', nil)})"
end
end

View File

@@ -17,7 +17,7 @@ describe "Seeds", :js, :search do
end
describe "displays required and optional fields properly" do
# Note: The required behaviour is pushed down to the control itself, not the form-group as of rails 7.1.
# NOTE: The required behaviour is pushed down to the control itself, not the form-group as of rails 7.1.
# Modern browsers enforce the required behaviour better than us doing it ourselves.
it { expect(page).to have_selector "label", text: "Crop" }
it { expect(page).to have_selector 'input#seed_quantity' }

View File

@@ -17,8 +17,8 @@ shared_examples "crop suggest" do |resource|
fill_autocomplete "crop", with: "pe"
end
expect(page).not_to have_content("pear")
expect(page).not_to have_content("pea")
expect(page).to have_no_content("pear")
expect(page).to have_no_content("pea")
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "pea"
@@ -66,9 +66,7 @@ shared_examples "crop suggest" do |resource|
within "form#new_#{resource}" do
fill_autocomplete "crop", with: "Ryan Gosling"
# Some forms require additional selections before submission.
if resource == "harvest"
choose plant_part.name
end
choose plant_part.name if resource == "harvest"
click_button "Save"
end

View File

@@ -27,7 +27,7 @@ describe "timeline", :js do
it { expect(page).to have_link href: planting_path(friend_planting) }
it { expect(page).to have_link href: planting_path(friend_harvest) }
it { expect(page).to have_link href: planting_path(finished_planting) }
it { expect(page).not_to have_link href: planting_path(no_planted_at_planting) }
it { expect(page).to have_no_link href: planting_path(no_planted_at_planting) }
end
describe 'shows the friends you follow' do

View File

@@ -29,7 +29,7 @@ describe GardensHelper do
garden = FactoryBot.create(:garden,
description: 'a' * 140)
result = helper.display_garden_description(garden)
expect(result).to eq 'a' * 126 + '...' + ' ' + link_to("Read more", garden_path(garden))
expect(result).to eq ('a' * 126) + '...' + ' ' + link_to("Read more", garden_path(garden))
end
end

View File

@@ -29,7 +29,7 @@ describe SeedsHelper do
seed = FactoryBot.create(:seed,
description: 'a' * 140)
result = helper.display_seed_description(seed)
expect(result).to eq 'a' * 126 + '...' + ' ' + link_to("Read more", seed_path(seed))
expect(result).to eq ('a' * 126) + '...' + ' ' + link_to("Read more", seed_path(seed))
end
end
end

View File

@@ -119,7 +119,6 @@ describe Ability do
end
end
context 'members' do
context 'ordinary member' do
it "can't manage members" do

Some files were not shown because too many files have changed in this diff Show More