From 5df6b6de113bd20761fe124b291fb3fffde937bd Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Corvo Date: Mon, 1 Nov 2021 16:30:54 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Refactor=20modeling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove OIDC as default value for fragment field filter. Applied default value OIDC to type field. Accomodate tests for the changes. Add a readOnly serializer test. Delete from fragment serializer not serializing readOnly, because that is a case it will never reproduce on such model. --- .../addon/generated/models/managed-groups.js | 1 + .../fragment-managed-groups-attributes.js | 1 - .../fragment-managed-groups-attributes.js | 4 +- .../unit/serializers/managed-groups-test.js | 70 +++++++++++++++++-- 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/addons/api/addon/generated/models/managed-groups.js b/addons/api/addon/generated/models/managed-groups.js index 279ee3898..4ae9e12e5 100644 --- a/addons/api/addon/generated/models/managed-groups.js +++ b/addons/api/addon/generated/models/managed-groups.js @@ -36,6 +36,7 @@ export default class GeneratedManagedGroupModel extends BaseModel { @attr('string', { description: 'The type of this ManagedGroup.', + defaultValue: () => 'OIDC', }) type; diff --git a/addons/api/addon/models/fragment-managed-groups-attributes.js b/addons/api/addon/models/fragment-managed-groups-attributes.js index cb38c2c3a..1c80275a5 100644 --- a/addons/api/addon/models/fragment-managed-groups-attributes.js +++ b/addons/api/addon/models/fragment-managed-groups-attributes.js @@ -7,7 +7,6 @@ export default class FragmentManagedGroupsAttributesModel extends Fragment { @attr('string', { description: 'The boolean expression filter to use to determine membership.', - defaultValue: () => 'OIDC', }) filter; } diff --git a/addons/api/addon/serializers/fragment-managed-groups-attributes.js b/addons/api/addon/serializers/fragment-managed-groups-attributes.js index 4d4ac0a4d..e2c750454 100644 --- a/addons/api/addon/serializers/fragment-managed-groups-attributes.js +++ b/addons/api/addon/serializers/fragment-managed-groups-attributes.js @@ -12,12 +12,10 @@ export default class FragmentManagedGroupsAttributesSerializer extends JSONSeria * @param {Object} attribute */ serializeAttribute(snapshot, json, key, attribute) { - const { type, options } = attribute; + const { type } = attribute; let value = super.serializeAttribute(...arguments); // Convert empty string to null. if (type === 'string' && json[key] === '') json[key] = null; - // Do not serialize read-only attributes. - if (options.readOnly) delete json[key]; return value; } } diff --git a/addons/api/tests/unit/serializers/managed-groups-test.js b/addons/api/tests/unit/serializers/managed-groups-test.js index a072a37a0..20a4a216c 100644 --- a/addons/api/tests/unit/serializers/managed-groups-test.js +++ b/addons/api/tests/unit/serializers/managed-groups-test.js @@ -4,7 +4,7 @@ import { setupTest } from 'ember-qunit'; module('Unit | Serializer | Managed groups', function (hooks) { setupTest(hooks); - test('it serializes correctly on create', function (assert) { + test('it serializes correctly on create with no filter provided', function (assert) { assert.expect(1); const store = this.owner.lookup('service:store'); const serializer = store.serializerFor('managed-groups'); @@ -14,7 +14,6 @@ module('Unit | Serializer | Managed groups', function (hooks) { member_ids: ['1', '2'], version: 1, auth_method_id: '1234', - type: '80', }); const snapshot = record._createSnapshot(); snapshot.adapterOptions = {}; @@ -24,9 +23,68 @@ module('Unit | Serializer | Managed groups', function (hooks) { description: 'Description', version: 1, auth_method_id: '1234', - type: '80', + type: 'OIDC', attributes: { - filter: 'OIDC', + filter: null, + }, + }); + }); + + test('it serializes correctly on create when filter provided', function (assert) { + assert.expect(1); + const store = this.owner.lookup('service:store'); + const serializer = store.serializerFor('managed-groups'); + const record = store.createRecord('managed-groups', { + name: 'Group', + description: 'Description', + member_ids: ['1', '2'], + version: 1, + auth_method_id: '1234', + type: 'OIDC', + attributes: { + filter: 'key=value', + }, + }); + const snapshot = record._createSnapshot(); + snapshot.adapterOptions = {}; + const serializedRecord = serializer.serialize(snapshot); + assert.deepEqual(serializedRecord, { + name: 'Group', + description: 'Description', + version: 1, + auth_method_id: '1234', + type: 'OIDC', + attributes: { + filter: 'key=value', + }, + }); + }); + + test('it does not serialize readOnly attributes', function (assert) { + assert.expect(1); + const store = this.owner.lookup('service:store'); + const serializer = store.serializerFor('managed-groups'); + const record = store.createRecord('managed-groups', { + name: 'Group', + description: 'Description', + version: 1, + auth_method_id: '1234', + member_ids: ['1', '2'], + created_time: Date.now(), + updated_time: Date.now(), + }); + const snapshot = record._createSnapshot(); + snapshot.adapterOptions = {}; + const serializedRecord = serializer.serialize(snapshot); + console.log(JSON.stringify(serializedRecord)); + assert.deepEqual(serializedRecord, { + name: 'Group', + description: 'Description', + version: 1, + auth_method_id: '1234', + type: 'OIDC', + attributes: { + filter: null, }, }); }); @@ -45,7 +103,7 @@ module('Unit | Serializer | Managed groups', function (hooks) { member_ids: ['1', '2'], version: 1, auth_method_id: '1234', - type: '80', + type: 'OIDC', attributes: { filter: 'key=value', }, @@ -60,7 +118,7 @@ module('Unit | Serializer | Managed groups', function (hooks) { description: 'Description for the test', version: 1, auth_method_id: '1234', - type: '80', + type: 'OIDC', attributes: { filter: 'key=value', },