Ad
  • Custom User Avatar

    in this kata we mutate object, so if we will replace primitives with object/array, we will lost their data.

    for example,

    const obj = {a: ['x', 'y']}
    deepAssignment(obj, 'a[0].b', 1), obj.a[0]
    
    obj.a[0] // we can expect 'x', but get {b: 1}
    

    And in fact we should not assign props to primitives, and it looks like deepAssignment should throw an exeption, that this path is invalid or something like that.

  • Custom User Avatar

    Thanks for pointing this out.

    I can add a test to clarify that the string type should be converted, based on getter access? Or rather, what do you think would make more sense, and make the kata more useful?

  • Custom User Avatar

    My solution - if a primitive value found in chain - replace it with object/array

  • Custom User Avatar

    Yes, I just looked at the last test case and that's pretty much it.

    I think we need some author clarification :)

  • Custom User Avatar

    I've got a problem with final case.

    Input object is something like { ..., ddd: [ 'ddd[0]', ... ], ...}
    Input path is kinda ddd[0].asdfe.ddd[2]...

    When we resolve path like this, we go to the array ddd, take the first element (which is ddd[0]) and then we need to assign asdfe to the string ddd[0], but it would not work for primitive values like String.

    So test fails because we can't read .ddd in asdfe, because it's undefined in string.

    It can be assumed, that this test means that we need to go up and use the parent Array for values like this, but it's not clear and there is nothing about in description.

    We need to fix the last test or update the description with better clarification, because this behavior is implicit