Remove readOnly attrs from Clients Count Config Serializer (#21391)

* octanify and add serialize false to readonly attrs

* alphabetize

* stuff

* adds back payload.data check in normalizeResponse method of clients config serializer

* test things

* fix

* clean up

* Update ui/app/serializers/clients/config.js

Co-authored-by: claire bontempo <68122737+hellobontempo@users.noreply.github.com>

---------

Co-authored-by: Jordan Reimer <zofskeez@gmail.com>
Co-authored-by: claire bontempo <68122737+hellobontempo@users.noreply.github.com>
This commit is contained in:
Angel Garbarino
2023-06-21 19:28:59 -06:00
committed by GitHub
parent 5b41148bfc
commit 4fd4a0693d
2 changed files with 20 additions and 15 deletions

View File

@@ -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;
},
});
}
}

View File

@@ -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) {
<div id="modal-wormhole"></div>
<Clients::Config @model={{this.model}} @mode="edit" />
`);
await fillIn('[data-test-input="retentionMonths"]', 5);
await fillIn('[data-test-input="retentionMonths"]', 24);
await click('[data-test-clients-config-save]');
});
});