Skip to content

Commit 1dde971

Browse files
committed
test: add a regression test for getters and setters
1 parent 0750a93 commit 1dde971

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

test/orm/base-model.spec.ts

+31
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import test from 'japa'
1313
import { DateTime } from 'luxon'
14+
import { lodash } from '@poppinss/utils'
1415
import { ApplicationContract } from '@ioc:Adonis/Core/Application'
1516
import type { HasOne, HasMany, BelongsTo } from '@ioc:Adonis/Lucid/Orm'
1617

@@ -458,6 +459,36 @@ test.group('Base Model | getter-setters', (group) => {
458459
assert.equal(user.username, 'virk')
459460
assert.equal(user.toJSON().username, 'VIRK')
460461
})
462+
463+
test.failing('implement custom merge strategies using getters and setters', (assert) => {
464+
class User extends BaseModel {
465+
private _preferences: object = {}
466+
467+
@column()
468+
public get preferences(): object {
469+
return this._preferences
470+
}
471+
472+
public set preferences(value: object) {
473+
lodash.merge(this._preferences, value)
474+
}
475+
}
476+
477+
const user = new User()
478+
user.preferences = {
479+
theme: 'dark',
480+
}
481+
482+
assert.deepEqual(user.preferences, { theme: 'dark' })
483+
user.$hydrateOriginals()
484+
485+
assert.deepEqual(user.$dirty, {})
486+
487+
user.merge({ preferences: { notifications: true } })
488+
assert.deepEqual(user.preferences, { theme: 'dark', notifications: true })
489+
490+
assert.deepEqual(user.$dirty, { preferences: { theme: 'dark', notifications: true } })
491+
})
461492
})
462493

463494
test.group('Base Model | dirty', (group) => {

0 commit comments

Comments
 (0)