adopted-ember-addons / validated-changeset

Buffering changes to form data
MIT License
36 stars 27 forks source link

Object.keys(property) returns an empty array on an object property that has not been mutated #191

Open elgordino opened 1 year ago

elgordino commented 1 year ago

Given this code

let objectToWrap = {
    objectProperty: {
        foo: 'bar',
    },
};

let changeset = Changeset(objectToWrap);

let keys = Object.keys(changeset.objectProperty);

I would expect keys to be ['foo'] but it returns an empty array.

I believe the issue lies here: https://github.com/validated-changeset/validated-changeset/blob/c1c95b729aae80fd30b30b691202a94c974a3309/src/utils/object-tree-node.ts#L56

It always returns ownKeys from node.changes even if no changes have been made.

I have created a repro here, but it's just the code above https://github.com/elgordino/validated-changeset-repro

I've raised a PR with tests. Not sure if the overall approach is the best way forward, but it works :)