( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ HEX
HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux mail.thebrand.ai 6.8.0-107-generic #107-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 13 19:51:50 UTC 2026 x86_64
User: www-data (33)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/tmpr/../tmpr/../tmpr/../tmpr/..//node_modules/dot-object/test/move.js
'use strict'

require('should')
var Dot = require('../index')

describe('Move test:', function () {
  it('Should be able to move properties', function () {
    var link = {
      id: '527423a65e380f0000588e47',
      source: '526dd5c6b4c4aa8770000001',
      target: '527402d6b15d1800008755cf',
      out: 'github',
      in: 'in'
    }

    var expected = {
      id: '527423a65e380f0000588e47',
      source: { id: '526dd5c6b4c4aa8770000001', port: 'github' },
      target: { id: '527402d6b15d1800008755cf', port: 'in' }
    }

    Dot.move('source', 'source.id', link)
    Dot.move('out', 'source.port', link)
    Dot.move('target', 'target.id', link)
    Dot.move('in', 'target.port', link)

    link.should.eql(expected)
  })

  it('Undefined properties should be ignored', function () {
    var link = {
      source: '526dd5c6b4c4aa8770000001',
      target: '527402d6b15d1800008755cf',
      out: 'github',
      in: 'in'
    }

    var expected = {
      source: { id: '526dd5c6b4c4aa8770000001' },
      target: { port: 'in' },
      out: 'github'
    }

    Dot.move('source', 'source.id', link)
    Dot.move('out.er.nope', 'source.port', link)
    Dot.move('target.bla.di.bla', 'target.id', link)
    Dot.move('in', 'target.port', link)

    link.should.eql(expected)
  })

  it('Should process modifiers', function () {
    var link = {
      source: 'one',
      target: 'two'
    }

    var expected = {
      source: { id: 'ONE' },
      target: { port: 'TWO' }
    }

    function up (val) { return val.toUpperCase() }

    Dot.move('source', 'source.id', link, up)
    Dot.move('target', 'target.port', link, up)

    link.should.eql(expected)
  })
})