Skip to content

Commit e812c20

Browse files
add: tests verify behavior mutating a related record from a checked-out record
1 parent 3ec0359 commit e812c20

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

tests/warp-drive__schema-record/tests/reads/basic-fields-test.ts

+23
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ interface User {
1919
netWorth: number;
2020
coolometer: number;
2121
rank: number;
22+
bestFriend?: User;
2223
}
2324

2425
module('Reads | basic fields', function (hooks) {
@@ -192,4 +193,26 @@ module('Reads | basic fields', function (hooks) {
192193
assert.strictEqual(resource.attributes?.coolometer, '100.000', 'resource cache value for coolometer is correct');
193194
assert.strictEqual(resource.attributes?.rank, '0', 'resource cache value for rank is correct');
194195
});
196+
197+
test('user record is immutable without calling checkout', function (assert) {
198+
const store = this.owner.lookup('service:store') as Store;
199+
const { schema } = store;
200+
registerDerivations(schema);
201+
202+
schema.registerResource(
203+
withDefaults({
204+
type: 'user',
205+
fields: [
206+
{ name: 'name', kind: 'field' },
207+
],
208+
})
209+
);
210+
211+
const record = store.createRecord('user', { name: 'Rey Skybarker' }) as User;
212+
213+
assert.ok(record, 'record is created');
214+
assert.throws(() => {
215+
record.name = 'Rey Skywalker';
216+
}, /Error: Cannot set name on user because the record is not editable/);
217+
});
195218
});

0 commit comments

Comments
 (0)