Tracks is a GTD™ web application, built with Ruby on Rails https://www.getontracks.org/
Find a file
Claude 9b0428638c
Fix polymorphic tagging and add test script
This commit fixes the tag loading issue and adds comprehensive testing.

## Bug Fix: Polymorphic Tag Loading

Fixed issue with many-to-many tag relationships not working correctly with
polymorphic associations. The problem was that GORM doesn't support using
`many2many` with polymorphic relationships directly.

**Changes:**
- Modified `internal/models/todo.go`: Changed Tags field to use `gorm:"-"`
  to skip GORM handling
- Modified `internal/models/recurring_todo.go`: Same fix for recurring todos
- Modified `internal/services/todo_service.go`: Added `loadTodoTags()` helper
  function to manually load tags through the taggings join table

**How it works now:**
1. Tags are no longer automatically loaded by GORM
2. Manual loading via JOIN query: `tags JOIN taggings ON tag_id WHERE taggable_id AND taggable_type`
3. Called after loading todos in both `GetTodo()` and `GetTodos()`

## Testing

Added `test_api.sh` - comprehensive integration test script that tests:
1. Health check
2. User registration
3. Authentication
4. Context creation
5. Project creation
6. Todo creation with tags
7. Listing todos with filters
8. Completing todos
9. Project statistics

All tests pass successfully!

## Files Changed

- `internal/models/todo.go`: Fix tag relationship
- `internal/models/recurring_todo.go`: Fix tag relationship
- `internal/services/todo_service.go`: Add manual tag loading
- `test_api.sh`: New integration test script
- `go.sum`: Updated with exact dependency versions
2025-11-05 10:59:26 +00:00
.github Dependabot Ruby version 2025-06-29 14:51:18 +03:00
app Add Traditional Chinese (Taiwan) localization support 2025-09-05 16:19:23 +08:00
bin Change to a new JS preprocessor, change from MySQL to MariaDB and fix polling 2025-06-29 21:27:27 +03:00
cmd/tracks Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
config Add Traditional Chinese (Taiwan) localization support 2025-09-05 16:19:23 +08:00
db Update schema.rb for Postgres support 2024-07-19 14:00:19 +03:00
doc Release 2.7.1 2024-07-25 23:54:52 +03:00
internal Fix polymorphic tagging and add test script 2025-11-05 10:59:26 +00:00
lib Upgrade to RoR 7.0 2025-06-28 16:25:52 +03:00
log update gitignore rules to match rails 3.2.8 defaults 2012-09-27 10:37:36 -04:00
public Error message fixes for CSV import. Add the necessary directory to Docker image. 2022-02-09 11:28:05 +02:00
script Change to a new JS preprocessor, change from MySQL to MariaDB and fix polling 2025-06-29 21:27:27 +03:00
test Update the date formatting syntax 2025-06-29 13:25:14 +03:00
test-envs Use MariaDB instead of MySQL also in tests 2025-06-30 00:49:34 +03:00
vendor/assets Drop vendored SWFObject. Included in swf_fu. 2017-02-12 15:16:05 -05:00
.codeclimate.yml Rubocop still doesn't support Ruby > 2.5, so let's disable that. 2024-06-06 00:31:07 +03:00
.dockerignore Replace the version-specific Dockerfiles with one staged Dockerfile 2024-07-18 21:09:04 +03:00
.env.example Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
.gitignore Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
.rubocop.yml Relax the Rubocop limits a bit to make CodeClimate more useful 2022-02-22 23:23:14 +02:00
.ruby-version Dependabot Ruby version 2025-06-29 14:51:18 +03:00
.yardopts Yardoc - show private and protected methods in api doc 2011-10-24 21:40:18 +02:00
config.ru Revert to stock config.ru 2015-03-08 20:50:27 -04:00
CONTRIBUTING.md Document coding style and adding tests 2022-09-07 15:09:41 +03:00
COPYING Add GPLv2 license text 2013-01-26 12:59:25 -05:00
docker-compose.yml Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
docker-entrypoint.sh Hopefully the final fixes based on fresh installs with both Docker install methods 2020-07-20 00:58:45 +03:00
Dockerfile Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
Gemfile Bump rubocop from 1.78.0 to 1.81.1 2025-09-29 00:01:45 +00:00
Gemfile.lock Bump rubocop from 1.81.6 to 1.81.7 2025-11-03 00:01:34 +00:00
go.mod Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
go.sum Fix polymorphic tagging and add test script 2025-11-05 10:59:26 +00:00
mkdocs.yml Specify pages for MkDocs 2014-10-02 11:15:13 -04:00
Rakefile Bring a few details in line with Rails 4.1 2014-06-19 12:33:38 -04:00
README.md Remove the IRC channel for now 2024-07-25 23:59:05 +03:00
README_GOLANG.md Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
SECURITY.md Merge pull request #2491 from TracksApp/release_2.5.1 2020-09-24 13:03:55 +03:00
test_api.sh Fix polymorphic tagging and add test script 2025-11-05 10:59:26 +00:00

Tracks: a GTD™ compatible web application built with Ruby on Rails

Build Status Code Climate Translation status CII Best Practices

About

Full instructions for both new installations and upgrades from older installations of Tracks can be found in the wiki.

As always, make sure that you take sensible precautions and back up all your data frequently, taking particular care when you are upgrading.

Enjoy being productive!

Contributors and consulting

If you are thinking about contributing towards the development of Tracks, please read /CONTRIBUTING.md for general information. Also you can find some information on development, testing and contributing on the wiki.