diff --git a/ui/app/serializers/clients/config.js b/ui/app/serializers/clients/config.js index 00b84ed2e5..d001b36f1d 100644 --- a/ui/app/serializers/clients/config.js +++ b/ui/app/serializers/clients/config.js @@ -5,11 +5,17 @@ import ApplicationSerializer from '../application'; -export default ApplicationSerializer.extend({ +export default class ClientsConfigSerializer extends ApplicationSerializer { + // these attrs are readOnly + attrs = { + billingStartTimestamp: { serialize: false }, + minimumRetentionMonths: { serialize: false }, + reportingEnabled: { serialize: false }, + }; + normalizeResponse(store, primaryModelClass, payload, id, requestType) { if (!payload.data) { - // CBS TODO: Remove this if block once API is published - return this._super(store, primaryModelClass, payload, id, requestType); + return super.normalizeResponse(...arguments); } const normalizedPayload = { id: payload.id, @@ -18,11 +24,11 @@ export default ApplicationSerializer.extend({ enabled: payload.data.enabled?.includes('enable') ? 'On' : 'Off', }, }; - return this._super(store, primaryModelClass, normalizedPayload, id, requestType); - }, + return super.normalizeResponse(store, primaryModelClass, normalizedPayload, id, requestType); + } serialize() { - const json = this._super(...arguments); + const json = super.serialize(...arguments); if (json.enabled === 'On' || json.enabled === 'Off') { const oldEnabled = json.enabled; json.enabled = oldEnabled === 'On' ? 'enable' : 'disable'; @@ -33,5 +39,5 @@ export default ApplicationSerializer.extend({ } delete json.queries_available; return json; - }, -}); + } +} diff --git a/ui/tests/integration/components/clients/config-test.js b/ui/tests/integration/components/clients/config-test.js index 65e8ea3d4c..58aeac8507 100644 --- a/ui/tests/integration/components/clients/config-test.js +++ b/ui/tests/integration/components/clients/config-test.js @@ -18,7 +18,7 @@ module('Integration | Component | client count config', function (hooks) { this.router = this.owner.lookup('service:router'); this.transitionStub = sinon.stub(this.router, 'transitionTo'); const store = this.owner.lookup('service:store'); - this.createModel = (enabled = 'enable', reporting_enabled = false, minimum_retention_months = 0) => { + this.createModel = (enabled = 'enable', reporting_enabled = false, minimum_retention_months = 24) => { store.pushPayload('clients/config', { modelName: 'clients/config', id: 'foo', @@ -56,7 +56,7 @@ module('Integration | Component | client count config', function (hooks) { this.server.put('/sys/internal/counters/config', (schema, req) => { const { enabled, retention_months } = JSON.parse(req.requestBody); - const expected = { enabled: 'enable', retention_months: 5 }; + const expected = { enabled: 'enable', retention_months: 24 }; assert.deepEqual(expected, { enabled, retention_months }, 'Correct data sent in PUT request'); return {}; }); @@ -80,11 +80,11 @@ module('Integration | Component | client count config', function (hooks) { assert .dom('[data-test-inline-error-message]') .hasText( - 'Retention period must be greater than or equal to 0.', + 'Retention period must be greater than or equal to 24.', 'Validation error shows for incorrect retention period' ); - await fillIn('[data-test-input="retentionMonths"]', 5); + await fillIn('[data-test-input="retentionMonths"]', 24); await click('[data-test-clients-config-save]'); assert.dom('.modal.is-active').exists('Modal renders'); assert @@ -154,7 +154,7 @@ module('Integration | Component | client count config', function (hooks) { this.server.put('/sys/internal/counters/config', (schema, req) => { const { enabled, retention_months } = JSON.parse(req.requestBody); - const expected = { enabled: 'enable', retention_months: 5 }; + const expected = { enabled: 'enable', retention_months: 24 }; assert.deepEqual(expected, { enabled, retention_months }, 'Correct data sent in PUT request'); return {}; }); @@ -165,8 +165,7 @@ module('Integration | Component | client count config', function (hooks) {