This change introduces polymorphic comments, allowing you to comment on Photos, Plantings, Harvests, and Activities, in addition to Posts.
Key changes include:
- **Comment Model:**
- Made `Comment.commentable` a polymorphic association.
- Added a data migration to move existing post comments to the new structure.
- Updated notification creation logic for polymorphic commentables.
- **CommentsController:**
- Refactored to handle various commentable types using a `find_commentable` method.
- **Ability Model:**
- Updated permissions for comment creation, editing (author/admin), and deletion (author/commentable owner/admin).
- **Routes:**
- Added nested comment routes for Photos, Plantings, Harvests, Activities, and Posts using a `commentable` concern with shallow routes.
- **Views:**
- Created generic partials for comment forms (`_form.html.haml`) and display (`_comment.html.haml`, `_comments.html.haml`).
- Integrated these partials into the show pages of all commentable types.
- Updated `comments/new` and `comments/edit` views to be generic.
- Relevant parent controller `show` actions now eager-load comments.
- **Testing:**
- Added extensive model, controller (using shared examples), and feature tests to cover the new polymorphic comment functionality, including permissions and UI interactions for all commentable types.
- Updated and created factories as needed.
This fulfills the issue requirements for adding comments to multiple resource types with appropriate permissions.
* Split feature tests off to own area
* Split up feature specs
* Split up feature specs
* Split up feature specs
* Split up pipeline
* Split up pipeline
* Split up pipeline
* Split up pipeline
* Split further
* Improve stability slightly
* Skip tagged flaky
* Split mroe
* Improve reliability of test
* Improve reliability of test
* Extra asserts
* Increase reliability by asserting the current path is right
* Comment out unreliable area
* Ability to like activities
* Ability to like activities
* Add likeable everywhere
* Refactor
* Remove extra newline
* Typo
* Use classes, not IDs
* Explicitly wait for ajax
* Fix tests
* Move likes under owner
* Add separation
* Move harvest likes near actions
* Rearrange harvests
* Render likes under owner
* Make harvest consistent with other views
* Move planting detail into header
* Move detail into header
* Move detail into header
* Revert
* Fix header
* Move likes into jumotrons
* Fix name
* Change all actions to be after likes and a span
* Cleanup
* Cleanup
* Cleanup
* Cleanup
* i18n and accessibility
* Fix name
* Temporarily make ack into a div
* Update app/views/photos/_actions.html.haml
* Avoid showing when there are 0 things
* Styling
* Styling
* Collapse stats by default on small screens
* Add ARIA skip links
* Refactoring out of partial, and use CSS to set order on mobile
* Remove partial
* Update expectations
* Fix visual appearance on Ban button on your own profile for admins
* Typo
* Stale expectation
* Upgrade boostrap
* Remove deprecated bootstrap toggles
* Migrate other details
* Avoid accidentally including bootstrap twice
* Avoid accidentally including bootstrap twice
* Avoid accidentally including bootstrap twice
* Fix spec
* Fix spec, where the size of the screen has gone to a partial breakpoint/you can't click on your own name in tablet view
* Fix spec
* Cleanup
* Cleanup
* Register mime type
* Add rough first pass
* Index predictions, and add links
* Trailing space
* Fix implementation
* Fix names, make public
* Fix names, make public
* Fix
* Fix tyyos
* Add date
* If there are no predictions, keep growing
* Add a todo
* Fix factories
* Specs
* Add dep
* Add tests around accessibility
* Add examples in a few places
* Try to fix screenshots
* Remove redundant role
* Adjust rules, colors, etc so tests pass
* Update app/assets/stylesheets/overrides.scss
* Wrap in label
* Omit rule, which is failing with a false positive
* Update index.haml
* Update _blurb.html.haml
* Fix todo
* Rubcop
* Rubocop
* Rubocop
* Rename harvests_routing_spec.rb to harvests_controller_routing_spec.rb
Making codeclimate happier
* Rename for CodeFactor: updates_routing_spec.rb to posts_controller_updates_routing_spec.rb
For codefactor
* Rename for CodeFactor: follows_routing_spec.rb to follows_controller_routing_spec.rb
* Rename for CodeFactor: forums_routing_spec.rb to forums_controller_routing_spec.rb
* Rename spec/routing/roles_routing_spec.rb to spec/routing/admin/roles_controller_routing_spec.rb
* Rename authentications_routing_spec.rb to authentications_controller_routing_spec.rb
* Rename for CodeFactor: plantings_routing_spec.rb to plantings_controller_routing_spec.rb
* Rename for CodeFactor: scientific_names_routing_spec.rb to scientific_names_controller_routing_spec.rb
* Rename for CodeFactor: seeds_routing_spec.rb to seeds_controller_routing_spec.rb
* Rename for CodeFactor: comments_routing_spec.rb to comments_controller_routing_spec.rb
* Rename for CodeFactor: garden_types_routing_spec.rb to garden_types_controller_routing_spec.rb
* Rename for CodeFactor: admin_routing_spec.rb to admin_controller_routing_spec.rb
* Rename for CodeFactor: gardens_routing_spec.rb to gardens_controller_routing_spec.rb
* Rename for CodeFactor: photos_routing_spec.rb to photos_controller_routing_spec.rb
* Rename for CodeFactor: plant_parts_routing_spec.rb to plant_parts_controller_routing_spec.rb
* Rename for CodeFactor: crops_routing_spec.rb to crops_controller_routing_spec.rb
* [CodeFactor] Apply fixes
* Rename
* Code factor bot
---------
Co-authored-by: Cesy <cesy.avon@gmail.com>
Co-authored-by: codefactor-io <support@codefactor.io>