HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/mergexml/test/spec/merge.spec.js
/* jshint node:true */
/* global MergeXML, describe, it, before, after, beforeEach, afterEach, expect */
'use strict';

describe('Instantiating object ', function() {
    var merger;

    it('works', function() {
        merger = new MergeXML();

        expect(merger).to.be.an('object');
    });

});

describe('Adding source', function() {
    var merger, a, b;

    it('strings works', function() {
        merger = new MergeXML();
        a = '<a/>';
        b = '<b/>';

        expect(merger.AddSource(a)).to.not.equal(false);
        expect(merger.AddSource(b)).to.not.equal(false);
    });

});

describe('Merging XML sources', function() {
    var merger, a, b;

    describe('with option join = undefined', function() {

        // TODO

    });

    describe('with option join = false', function() {

        it('succeeds if sources have a common root name', function() {
            merger = new MergeXML({
                join: false
            });
            a = '<r><a/></r>';
            b = '<r><b/></r>';
            merger.AddSource(a);
            merger.AddSource(b);
            expect(merger.Get(1).trim()).to.equal('<r><a/><b/></r>');
        });

        it('fails to merge second source if sources do not have a common root name', function() {
            merger = new MergeXML({
                join: false
            });
            a = '<a/>';
            b = '<b/>';
            merger.AddSource(a);
            merger.AddSource(b);

            expect(merger.Get(1).trim()).to.equal('<a/>');
        });

    });


    describe('with option updn = true or undefined', function() {
        var merger, a, b;

        it('merges sources by nodeName', function() {
            merger = new MergeXML({
                updn: true
            });
            a = '<a>' +
                '<c>s1</c>' +
                '<c>s3</c>' +
                '</a>';
            b = '<a>' +
                '<c>s1</c>' +
                '<b>s2</b>' +
                '<c>s4</c>' +
                '</a>';
            merger.AddSource(a);
            merger.AddSource(b);
            expect(merger.Get(1).trim()).to.equal('<a><c>s1</c><c>s4</c><b>s2</b></a>');

            merger = new MergeXML();
            merger.AddSource(a);
            merger.AddSource(b);

            expect(merger.Get(1).trim()).to.equal('<a><c>s1</c><c>s4</c><b>s2</b></a>');
        });

    });

    describe('with option updn = false', function() {
        var merger, a, b;

        it('merges sources by node position, discarding nodeName', function() {
            merger = new MergeXML({
                updn: false
            });
            a = '<a>' +
                '<c>s1</c>' +
                '<c>s3</c>' +
                '</a>';
            b = '<a>' +
                '<c>s1</c>' +
                '<b>s2</b>' +
                '<c>s4</c>' +
                '</a>';
            merger.AddSource(a);
            merger.AddSource(b);

            expect(merger.Get(1).trim()).to.equal('<a><c>s1</c><c>s2</c><c>s4</c></a>');
        });
    });

    describe('with namespaced attributes', function() {
        var merger;
        var ns = 'https://github.com/enketo/merge-xml';

        it('correctly adds namespaced attributes from second source', function() {
            merger = new MergeXML({
                join: false
            });
            a = '<a>' +
                '<c>s1</c>' +
                '</a>';
            b = '<a xmlns:enk="' + ns + '">' +
                '<c enk:custom="something">s2</c>' +
                '</a>';
            merger.AddSource(a);
            merger.AddSource(b);

            expect(merger.error.code).to.equal('');
            expect(merger.error.text).to.equal('');
            expect(merger.Get(1).trim()).to.equal('<a xmlns:enk="' + ns + '"><c enk:custom="something">s2</c></a>');
            // in IE11 and below, merger.Get(0) returns an ActiveXObject we use the internal "Query" function
            expect(merger.Query('//c').attributes[0].localName).to.equal('custom'); // fails in IE because
            expect(merger.Query('//c').attributes[0].namespaceURI).to.equal(ns);
        })

    })

    describe('with sources that have and do not have a UTF encoding declaration', function() {
        var merger;
        var a = '<?xml version="1.0"?>' +
            '<a><c>s1</c></a>';
        var b = '<?xml version="1.0" encoding="UTF-8"?>' +
            '<a><c>s2</c></a>';

        it('undeclared and UTF-8', function() {
            merger = new MergeXML({
                join: false
            });
            merger.AddSource(a);
            merger.AddSource(b);

            expect(merger.error.code).to.equal('');
            expect(merger.error.text).to.equal('');
            expect(merger.Get(1)).to.contain('<a><c>s2</c></a>');
        });

        it('UTF8 and undeclared', function() {
            merger = new MergeXML({
                join: false
            });
            merger.AddSource(b);
            merger.AddSource(a);

            expect(merger.error.code).to.equal('');
            expect(merger.error.text).to.equal('');
            expect(merger.Get(1)).to.contain('<a><c>s1</c></a>');
        });

    });

});