From f02242267017a1c64db5915d3054b5e96a6e220f Mon Sep 17 00:00:00 2001 From: "Ronald A. Richardson" Date: Thu, 28 May 2026 10:16:09 +0800 Subject: [PATCH] fix: preserve selected geography type on rate fees --- addon/models/service-rate-fee.js | 6 ++++- tests/unit/models/service-rate-fee-test.js | 28 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/addon/models/service-rate-fee.js b/addon/models/service-rate-fee.js index 6ce8d89..7d630b1 100644 --- a/addon/models/service-rate-fee.js +++ b/addon/models/service-rate-fee.js @@ -73,7 +73,11 @@ export default class ServiceRateFeeModel extends Model { return formatDate(this.created_at, 'dd, MMM'); } - @computed('is_fallback', 'zone_uuid', 'service_area_uuid', 'zone.id', 'service_area.id') get geography_type() { + @computed('selected_geography_type', 'is_fallback', 'zone_uuid', 'service_area_uuid', 'zone.id', 'service_area.id') get geography_type() { + if (this.selected_geography_type) { + return this.selected_geography_type; + } + if (this.is_fallback) { return 'fallback'; } diff --git a/tests/unit/models/service-rate-fee-test.js b/tests/unit/models/service-rate-fee-test.js index 981fe0d..a21ecda 100644 --- a/tests/unit/models/service-rate-fee-test.js +++ b/tests/unit/models/service-rate-fee-test.js @@ -11,4 +11,32 @@ module('Unit | Model | service rate fee', function (hooks) { let model = store.createRecord('service-rate-fee', {}); assert.ok(model); }); + + test('geography type prefers transient selected geography type', function (assert) { + let store = this.owner.lookup('service:store'); + let model = store.createRecord('service-rate-fee', { + service_area_uuid: 'service_area_1', + }); + + model.set('selected_geography_type', 'zone'); + + assert.strictEqual(model.geography_type, 'zone'); + }); + + test('geography type derives from saved relationships when no transient type is selected', function (assert) { + let store = this.owner.lookup('service:store'); + let zoneRule = store.createRecord('service-rate-fee', { + zone_uuid: 'zone_1', + }); + let serviceAreaRule = store.createRecord('service-rate-fee', { + service_area_uuid: 'service_area_1', + }); + let fallbackRule = store.createRecord('service-rate-fee', { + is_fallback: true, + }); + + assert.strictEqual(zoneRule.geography_type, 'zone'); + assert.strictEqual(serviceAreaRule.geography_type, 'service_area'); + assert.strictEqual(fallbackRule.geography_type, 'fallback'); + }); });