Dre4m Shell
Server IP : 127.0.0.2  /  Your IP : 18.117.10.159
Web Server : Apache/2.4.18 (Ubuntu)
System :
User : www-data ( )
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/odoo/addons/web/static/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /opt/odoo/addons/web/static/test/list-utils.js
odoo.define_section('list.events', ['web.list_common'], function (test) {

    test('Simple event triggering', function (assert, list_common) {
        var e = Object.create(list_common.Events), 
            passed = false;

        e.bind('foo', function () { passed = true; });
        e.trigger('foo');

        assert.ok(passed);
    });

    test('Bind all', function (assert, list_common) {
        var e = Object.create(list_common.Events),
            event = null;
        e.bind(null, function (ev) { event = ev; });
        e.trigger('foo');

        assert.strictEqual(event, 'foo');
    });

    test('Propagate trigger params', function (assert, list_common) {
        var e = Object.create(list_common.Events),
            p = false;

        e.bind(null, function (_, param) { p = param; });
        e.trigger('foo', true);

        assert.strictEqual(p, true);
    });

    test('Bind multiple callbacks', function (assert, list_common) {
        var e = Object.create(list_common.Events),
            count;

        e.bind('foo', function () { count++; })
         .bind('bar', function () { count++; })
         .bind(null, function () { count++; })
         .bind('foo', function () { count++; })
         .bind(null, function () { count++; })
         .bind(null, function () { count++; });

        count = 0;
        e.trigger('foo');
        assert.strictEqual(count, 5);

        count = 0;
        e.trigger('bar');
        assert.strictEqual(count, 4);

        count = 0;
        e.trigger('baz');
        assert.strictEqual(count, 3);
    });

    test('Mixin events', ['web.Class'], function (assert, list_common, Class) {
        var cls = Class.extend({
            method: function () { this.trigger('e'); }
        });
        cls.include(list_common.Events);

        var i = new cls(), 
            triggered = false;

        i.bind('e', function () { triggered = true; });
        i.method();

        assert.ok(triggered);
    });

    test('Unbind all handlers', function (assert, list_common) {
        var e = Object.create(list_common.Events),
            passed = 0;

        e.bind('foo', function () { passed++; });
        e.trigger('foo');
        assert.strictEqual(passed, 1);

        e.unbind('foo');
        e.trigger('foo');
        assert.strictEqual(passed, 1);
    });

    test('Unbind one handler', function (assert, list_common) {
        var e = Object.create(list_common.Events),
            p1 = 0,
            p2 = 0,
            h1 = function () { p1++; },
            h2 = function () { p2++; };

        e.bind('foo', h1);
        e.bind('foo', h2);
        e.trigger('foo');
        assert.strictEqual(p1, 1);
        assert.strictEqual(p2, 1);

        e.unbind('foo', h1);
        e.trigger('foo');
        assert.strictEqual(p1, 1);
        assert.strictEqual(p2, 2);
    });
});

odoo.define_section('list.records', ['web.list_common'], function (test) {

    test('Basic record initialization', function (assert, list_common) {
        var r = new list_common.Record({qux: 3});
        r.set('foo', 1);
        r.set('bar', 2);

        assert.strictEqual(r.get('foo'), 1);
        assert.strictEqual(r.get('bar'), 2);
        assert.strictEqual(r.get('qux'), 3);
    });

    test('Change all the things', function (assert, list_common) {
        var r = new list_common.Record(), 
            changed = false, 
            field;

        r.bind('change', function () { changed = true; });
        r.bind(null, function (e) { field = field || e.split(':')[1]; });
        r.set('foo', 1);

        assert.strictEqual(r.get('foo'), 1);
        assert.ok(changed);
        assert.strictEqual(field, 'foo');
    });

    test('Change single field', function (assert, list_common) {
        var r = new list_common.Record(),
            changed = 0;

        r.bind('change:foo', function () { changed++; });
        r.set('foo', 1);
        r.set('bar', 1);

        assert.strictEqual(r.get('foo'), 1);
        assert.strictEqual(r.get('bar'), 1);
        assert.strictEqual(changed, 1);
    });
});

odoo.define_section('list.Collection', ['web.list_common'], function (test) {
    test('degenerate-fetch', function (assert, list_common) {
        var c = new list_common.Collection();
        assert.strictEqual(c.length, 0);

        c.add({id: 1, value: 2});
        c.add({id: 2, value: 3});
        c.add({id: 3, value: 5});
        c.add({id: 4, value: 7});
        assert.strictEqual(c.length, 4);

        var r = c.at(2),
            r2 = c.get(1);

        assert.ok(r instanceof list_common.Record);
        assert.strictEqual(r.get('id'), 3);
        assert.strictEqual(r.get('value'), 5);

        assert.ok(r2 instanceof list_common.Record);
        assert.strictEqual(r2.get('id'), 1);
        assert.strictEqual(r2.get('value'), 2);
    });

    test('degenerate-indexed-add', function (assert, list_common) {
        var c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);

        assert.strictEqual(c.at(1).get('value'), 10);
        assert.equal(c.at(3), undefined);

        c.add({id:4, value: 55}, {at: 1});

        assert.strictEqual(c.at(1).get('value'), 55);
        assert.strictEqual(c.at(3).get('value'), 20);
    });

    test('degenerate-remove', function (assert, list_common) {
        var c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);

        var record = c.get(2);
        assert.strictEqual(c.length, 3);

        c.remove(record);
        assert.strictEqual(c.length, 2);
        assert.equal(c.get(2), undefined);
        assert.strictEqual(c.at(1).get('value'), 20);
    });

    test('degenerate-remove-bound', function (assert, list_common) {
        var changed = false,
            c = new list_common.Collection([ {id: 1, value: 5} ]);

        c.bind('change', function () { changed = true; });
        var record = c.get(1);
        c.remove(record);
        record.set('value', 42);

        assert.ok(!changed, 'removed records should not trigger events in their ' +
                     'parent collection');
    });

    test('degenerate-reset', function (assert, list_common) {
        var event,
            obj,
            c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);

        c.bind(null, function (e, instance) { event = e; obj = instance; });
        c.reset();

        assert.strictEqual(c.length, 0);
        assert.strictEqual(event, 'reset');
        assert.strictEqual(obj, c);

        c.add([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);
        c.reset([{id: 42, value: 55}]);
        
        assert.strictEqual(c.length, 1);
        assert.strictEqual(c.get(42).get('value'), 55);
    });

    test('degenerate-reset-bound', function (assert, list_common) {
        var changed = false,
            c = new list_common.Collection([ {id: 1, value: 5} ]);

        c.bind('change', function () { changed = true; });
        var record = c.get(1);
        c.reset();
        record.set('value', 42);

        assert.ok(!changed, 'removed records should not trigger events in their ' +
                     'parent collection');
    });

    test('degenerate-propagations', function (assert, list_common) {
        var values = [];
        var c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);
        c.bind('change:value', function (e, record, value) {
            values.push(value);
        });
        c.get(1).set('value', 6);
        c.get(2).set('value', 11);
        c.get(3).set('value', 21);

        assert.deepEqual(values, [6, 11, 21]);
    });

    test('BTree', function (assert, list_common) {
        var root = new list_common.Collection(),
            c = root.proxy('admin'),
            total = 0;

        c.add({id: 1, name: "Administrator", login: 'admin'});
        c.add({id: 3, name: "Demo", login: 'demo'});
        root.bind('change:wealth', function () {
            total = (root.get(1).get('wealth') || 0) + (root.get(3).get('wealth') || 0);
        });

        assert.strictEqual(total, 0);
        
        c.at(0).set('wealth', 42);
        assert.strictEqual(total, 42);
        
        c.at(1).set('wealth', 5);
        assert.strictEqual(total, 47);
    });

    test('degenerate-successor', function (assert, list_common) {
        var root = new list_common.Collection([
            {id: 1, value: 1},
            {id: 2, value: 2},
            {id: 3, value: 3},
            {id: 4, value: 5},
            {id: 5, value: 8}
        ]);

        assert.deepEqual(root.succ(root.at(2)).attributes,
                  root.at(3).attributes,
                  "should return the record at (index + 1) from the pivot");
        assert.equal(root.succ(root.at(4)), null,
              "should return null as successor to last record");
        assert.deepEqual(root.succ(root.at(4), {wraparound: true}).attributes,
                  root.at(0).attributes,
                  "should return index 0 as successor to last record if" +
                  " wraparound is set");
        assert.deepEqual(root.succ(root.at(2), {wraparound: true}).attributes,
                  root.at(3).attributes,
                  "wraparound should have no effect if not succ(last_record)");
    });

    test('successor', function (assert, list_common) {
        var root = new list_common.Collection();
        root.proxy('first').add([{id: 1, value: 1}, {id: 2, value: 2}]);
        root.proxy('second').add([{id: 3, value: 3}, {id: 4, value: 5}]);
        root.proxy('third').add([{id: 5, value: 8}, {id: 6, value: 13}]);

        assert.deepEqual(root.succ(root.get(3)).attributes,
                  root.get(4).attributes,
                  "should get successor");
        assert.equal(root.succ(root.get(4)),
              null,
              "successors do not cross collections");
        assert.deepEqual(root.succ(root.get(4), {wraparound: true}).attributes,
                  root.get(3).attributes,
                  "should wraparound within a collection");
    });

    test('degenerate-predecessor', function (assert, list_common) {
        var root = new list_common.Collection([
            {id: 1, value: 1},
            {id: 2, value: 2},
            {id: 3, value: 3},
            {id: 4, value: 5},
            {id: 5, value: 8}
        ]);

        assert.deepEqual(root.pred(root.at(2)).attributes,
                  root.at(1).attributes,
                  "should return the record at (index - 1) from the pivot");
        assert.equal(root.pred(root.at(0)), null,
              "should return null as predecessor to first record");
        assert.deepEqual(root.pred(root.at(0), {wraparound: true}).attributes,
                  root.at(4).attributes,
                  "should return last record as predecessor to first record" +
                  " if wraparound is set");
        assert.deepEqual(root.pred(root.at(1), {wraparound: true}).attributes,
                  root.at(0).attributes,
                  "wraparound should have no effect if not pred(first_record)");
    });

    test('predecessor', function (assert, list_common) {
        var root = new list_common.Collection();
        root.proxy('first').add([{id: 1, value: 1}, {id: 2, value: 2}]);
        root.proxy('second').add([{id: 3, value: 3}, {id: 4, value: 5}]);
        root.proxy('third').add([{id: 5, value: 8}, {id: 6, value: 13}]);

        assert.deepEqual(root.pred(root.get(4)).attributes,
                  root.get(3).attributes,
                  "should get predecessor");
        assert.equal(root.pred(root.get(3)),
              null,
              "predecessor do not cross collections");
        assert.deepEqual(root.pred(root.get(3), {wraparound: true}).attributes,
                  root.get(4).attributes,
                  "should wraparound within a collection");
    });

});


odoo.define_section('list.collections.higherordermethods', ['web.list_common'], function (test) {

    test('each, degenerate', function (assert, list_common) {
        var c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]), ids = [];

        c.each(function (record) {
            ids.push(record.get('id'));
        });
        assert.deepEqual(
            ids, [1, 2, 3],
            'degenerate collections should be iterated in record order');
    });

    test('each, deep', function (assert, list_common) {
        var root = new list_common.Collection(),
            ids = [];

        root.proxy('foo').add([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}]);
        root.proxy('bar').add([
            {id: 10, value: 5},
            {id: 20, value: 10},
            {id: 30, value: 20}]);
        root.each(function (record) {
            ids.push(record.get('id'));
        });

        // No contract on sub-collection iteration order (for now anyway)
        ids.sort(function (a, b) { return a - b; });
        
        assert.deepEqual(
            ids, [1, 2, 3, 10, 20, 30],
            'tree collections should be deeply iterated');
    });

    test('map, degenerate', function (assert, list_common) {
        var c = new list_common.Collection([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}
        ]);
        var ids = c.map(function (record) {
            return record.get('id');
        });

        assert.deepEqual(
            ids, [1, 2, 3],
            'degenerate collections should be iterated in record order');
    });

    test('map, deep', function (assert, list_common) {
        var root = new list_common.Collection();
        root.proxy('foo').add([
            {id: 1, value: 5},
            {id: 2, value: 10},
            {id: 3, value: 20}]);
        root.proxy('bar').add([
            {id: 10, value: 5},
            {id: 20, value: 10},
            {id: 30, value: 20}]);
        var ids = root.map(function (record) {
            return record.get('id');
        });

        // No contract on sub-collection iteration order (for now anyway)
        ids.sort(function (a, b) { return a - b; });
        assert.deepEqual(
            ids, [1, 2, 3, 10, 20, 30],
            'tree collections should be deeply iterated');
    });
});

odoo.define_section('list.collections.weirdoes', ['web.list_common'], function (test) {
    test('set-from-noid', function (assert, list_common) {
        var root = new list_common.Collection();
        root.add({v: 3});
        root.at(0).set('id', 42);
        var record = root.get(42);

        assert.equal(root.length, 1);
        assert.equal(record.get('v'), 3, "should have fetched the original record");
    });

    test('set-from-previd', function (assert, list_common) {
        var root = new list_common.Collection();
        root.add({id: 1, v: 2});
        root.get(1).set('id', 42);
        var record = root.get(42);

        assert.equal(root.length, 1);
        assert.equal(record.get('v'), 2, "should have fetched the original record");
    });

});


Anon7 - 2022
AnonSec Team