Followup: Update Jira, Zentao, IssueTracker data instance integration models
Followup from !168953 (comment 2160012439)
We added instance integration models for all of the existing integrations in !168953 (closed)
However, it was discovered while adding tests that 3 integrations have associations which require integration_id
foreign key set, which causes tests to fail:
- Jira
- IssueTrackerData / Redmine
- ZentaoTrackerData
ActiveRecord::InvalidForeignKey:
PG::ForeignKeyViolation: ERROR: insert or update on table "jira_tracker_data" violates foreign key constraint "fk_c98abcd54c"
DETAIL: Key (integration_id)=(114) is not present in table "integrations".
1) Integrations::Instance::Redmine successfully persists the record
Failure/Error: connection.public_send(...)
ActiveRecord::InvalidForeignKey:
PG::ForeignKeyViolation: ERROR: insert or update on table "issue_tracker_data" violates foreign key constraint "fk_33921c0ee1"
DETAIL: Key (integration_id)=(170) is not present in table "integrations".
2) Integrations::Instance::Zentao behaves like instance integration successfully persists the record
Failure/Error: connection.public_send(...)
ActiveRecord::InvalidForeignKey:
PG::ForeignKeyViolation: ERROR: insert or update on table "zentao_tracker_data" violates foreign key constraint "fk_rails_84efda7be0"
DETAIL: Key (integration_id)=(199) is not present in table "integrations".
Update these models in order to support instance integrations.
Proposed solution
- Add
instance_integration_id
foreign key to the 3 tables above - Update instance integration models above to have something like
has_one :issue_tracker_data, autosave: true, inverse_of: :integration, foreign_key: :instance_integration_id, class_name: 'Integrations::Instance::IssueTrackerData'
has_one :jira_tracker_data, autosave: true, inverse_of: :integration, foreign_key: :instance_integration_id, class_name: 'Integrations::Instance::JiraTrackerData'
has_one :zentao_tracker_data, autosave: true, inverse_of: :integration, foreign_key: :instance_integration_id, class_name: 'Integrations::Instance::ZentaoTrackerData'