Browse Source

Merge pull request #460 from Tecnativa/9.0-web_readonly_bypass-fix_tests

[9.0][web_duplicate_visibility][web_readonly_bypass] Fix Travis.
pull/346/merge
Pedro M. Baeza 8 years ago
committed by GitHub
parent
commit
2cba2a331c
  1. 6
      web_duplicate_visibility/README.rst
  2. 8
      web_duplicate_visibility/__openerp__.py
  3. 38
      web_duplicate_visibility/static/test/duplicate_visibility.js
  4. 5
      web_duplicate_visibility/tests/__init__.py
  5. 14
      web_duplicate_visibility/tests/test_js.py
  6. 18
      web_readonly_bypass/README.rst
  7. 6
      web_readonly_bypass/__openerp__.py
  8. 2
      web_readonly_bypass/static/src/js/readonly_bypass.js
  9. 329
      web_readonly_bypass/static/test/web_readonly_bypass.js
  10. 5
      web_readonly_bypass/tests/__init__.py
  11. 14
      web_readonly_bypass/tests/test_js.py

6
web_duplicate_visibility/README.rst

@ -46,10 +46,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues Bugs are tracked on `GitHub Issues
<https://github.com/OCA/web/issues>`_. In case of trouble, please <https://github.com/OCA/web/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first, check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed `feedback
<https://github.com/OCA/web/issues/new?body=module:%20web_duplicate_visibility%0
Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20
behavior**%0A%0A**Expected%20behavior**>`_.
help us smashing it by providing a detailed and welcomed feedback.
Credits Credits
======= =======
@ -66,6 +63,7 @@ Contributors
* Pierre Verkest <pverkest@anybox.fr> * Pierre Verkest <pverkest@anybox.fr>
* Christophe Combelles <ccomb@anybox.fr> * Christophe Combelles <ccomb@anybox.fr>
* Simon André <sandre@anybox.fr> * Simon André <sandre@anybox.fr>
* Jairo Llopis <jairo.llopis@tecnativa.com>
Maintainer Maintainer
---------- ----------

8
web_duplicate_visibility/__openerp__.py

@ -4,16 +4,16 @@
{ {
"name": "web duplicate visibility", "name": "web duplicate visibility",
"summary": "Manage the duplicate button visibiliy", "summary": "Manage the duplicate button visibiliy",
"version": "9.0.1.0.0",
"version": "9.0.1.0.1",
"category": "web", "category": "web",
"website": "https://odoo-community.org/", "website": "https://odoo-community.org/",
"author": "Pierre Verkest <pverkest@anybox.fr>,"
" Odoo Community Association (OCA)",
"author": "Pierre Verkest <pverkest@anybox.fr>, "
"Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3", "license": "AGPL-3",
"application": False, "application": False,
"installable": True, "installable": True,
"depends": [ "depends": [
"base",
"web", "web",
], ],
"data": [ "data": [

38
web_duplicate_visibility/static/test/duplicate_visibility.js

@ -1,9 +1,11 @@
"use strict";
/* Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define_section('web_duplicate_visibility', odoo.define_section('web_duplicate_visibility',
['web.data', 'web.FormView'], ['web.data', 'web.FormView'],
function(test, mock){ function(test, mock){
"use strict";
function assertDuplicate(data, FormView, form_tag, visible){
function assertDuplicate(assert, data, FormView, form_tag, visible) {
mock.add('test.model:read', function () { mock.add('test.model:read', function () {
return [{ id: 1, a: 'foo', b: 'bar', c: 'baz' }]; return [{ id: 1, a: 'foo', b: 'bar', c: 'baz' }];
}); });
@ -45,38 +47,32 @@ odoo.define_section('web_duplicate_visibility',
return obj.text.trim() == "Duplicate"; return obj.text.trim() == "Duplicate";
} }
); );
strictEqual(
assert.strictEqual(
actions.length, visible, "duplicate state is not as expected" actions.length, visible, "duplicate state is not as expected"
); );
}; };
function compare(form_tag, visible) {
return function (assert, data, FormView) {
return assertDuplicate(assert, data, FormView, form_tag, visible);
}
}
test('Duplicate button visible when nothing set', test('Duplicate button visible when nothing set',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form>', 1);
});
compare('<form>', 1));
test('Duplicate button visible when create="1"', test('Duplicate button visible when create="1"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form create="1">', 1);
});
compare('<form create="1">', 1));
test('Duplicate button visible when duplicate="1"', test('Duplicate button visible when duplicate="1"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form duplicate="1">', 1);
});
compare('<form duplicate="1">', 1));
test('Duplicate button not displayed when create="0"', test('Duplicate button not displayed when create="0"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form create="0">', 0);
});
compare('<form create="0">', 0));
test('Duplicate button not displayed when create="1" duplicate="0"', test('Duplicate button not displayed when create="1" duplicate="0"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form create="1" duplicate="0">', 0);
});
compare('<form create="1" duplicate="0">', 0));
test('Duplicate button not displayed when duplicate="0"', test('Duplicate button not displayed when duplicate="0"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form duplicate="0">', 0);
});
compare('<form duplicate="0">', 0));
}); });

5
web_duplicate_visibility/tests/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_js

14
web_duplicate_visibility/tests/test_js.py

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.tests import HttpCase
class TestJS(HttpCase):
def test_js(self):
self.phantom_js(
"/web/tests?module=web_duplicate_visibility",
"",
login="admin",
)

18
web_readonly_bypass/README.rst

@ -42,17 +42,20 @@ For further information, please visit:
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot :alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/162/8.0
:target: https://runbot.odoo-community.org/runbot/162/9.0
Known issues / Roadmap
======================
* Migrate to v9 JS API both normal code and QUnit tests.
Bug Tracker Bug Tracker
=========== ===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/web/issues/new?body=module:%20web_readonly_bypass%0Aversion:%208.0.1.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/web/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits Credits
======= =======
@ -63,6 +66,7 @@ Contributors
* Jonathan Nemry <jonathan.nemry@acsone.eu> * Jonathan Nemry <jonathan.nemry@acsone.eu>
* Laetitia Gangloff <laetitia.gangloff@acsone.eu> * Laetitia Gangloff <laetitia.gangloff@acsone.eu>
* Pierre Verkest <pverkest@anybox.fr> * Pierre Verkest <pverkest@anybox.fr>
* Jairo Llopis <jairo.llopis@tecnativa.com>
Maintainer Maintainer
---------- ----------
@ -77,4 +81,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use. promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.
To contribute to this module, please visit https://odoo-community.org.

6
web_readonly_bypass/__openerp__.py

@ -24,8 +24,10 @@
############################################################################## ##############################################################################
{ {
'name': 'Read Only ByPass', 'name': 'Read Only ByPass',
'version': '9.0.1.0.0',
"author": "ACSONE SA/NV, Odoo Community Association (OCA)",
'version': '9.0.1.0.1',
"author": "ACSONE SA/NV, "
"Tecnativa, "
"Odoo Community Association (OCA)",
"maintainer": "ACSONE SA/NV,Odoo Community Association (OCA)", "maintainer": "ACSONE SA/NV,Odoo Community Association (OCA)",
"website": "http://www.acsone.eu", "website": "http://www.acsone.eu",
'category': 'Technical Settings', 'category': 'Technical Settings',

2
web_readonly_bypass/static/src/js/readonly_bypass.js

@ -1,5 +1,5 @@
"use strict";
(function(){ (function(){
"use strict";
var instance = openerp; var instance = openerp;
var QWeb = instance.web.qweb, _t = instance.web._t; var QWeb = instance.web.qweb, _t = instance.web._t;

329
web_readonly_bypass/static/test/web_readonly_bypass.js

@ -1,166 +1,167 @@
openerp.testing.section( 'web_readonly_bypass', {},
function(test){
test('ignore_readonly', function(instance){
var data = {};
var mode_create = true;
var options = {};
var context = {};
instance.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
deepEqual(data,
{},
"Empty context and options mode create"
);
mode_create = false;
data = {};
instance.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
deepEqual(data,
{},
"Empty context and options mode write"
);
mode_create = false;
data = {};
context = {'readonly_by_pass': true};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
/* Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define_section('web_readonly_bypass', [], function(test) {
"use strict";
test('ignore_readonly', function(assert) {
var data = {};
var mode_create = true;
var options = {};
var context = {};
openerp.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
assert.deepEqual(data,
{},
"Empty context and options mode create"
);
mode_create = false;
data = {};
openerp.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
assert.deepEqual(data,
{},
"Empty context and options mode write"
);
mode_create = false;
data = {};
context = {'readonly_by_pass': true};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
'field_3': 'val-3'}};
openerp.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
assert.deepEqual(data,
{'field_1': 'va1-1', 'field_2': false, 'field_3': 'val-3'},
"all fields mode write"
);
mode_create = true;
data = {};
context = {'readonly_by_pass': true};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
'field_3': 'val-3'}};
openerp.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
assert.deepEqual(data,
{'field_1': 'va1-1', 'field_3': 'val-3'},
"all fields mode create (false value are escaped)"
);
mode_create = true;
data = {};
context = {};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
'field_3': 'val-3'}};
openerp.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
assert.deepEqual(data,
{},
"without context, default, we won't save readonly fields"
);
});
test('retrieve_readonly_by_pass_fields', function(assert) {
var context = {'readonly_by_pass': true}
var options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': 'val-2',
'field_3': 'val-3'}}; 'field_3': 'val-3'}};
instance.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
deepEqual(data,
{'field_1': 'va1-1', 'field_2': false, 'field_3': 'val-3'},
"all fields mode write"
);
mode_create = true;
data = {};
context = {'readonly_by_pass': true};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
'field_3': 'val-3'}};
instance.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
deepEqual(data,
{'field_1': 'va1-1', 'field_3': 'val-3'},
"all fields mode create (false value are escaped)"
);
mode_create = true;
data = {};
context = {};
options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': false,
'field_3': 'val-3'}};
instance.web_readonly_bypass.ignore_readonly(data, options,
mode_create, context);
deepEqual(data,
{},
"without context, default, we won't save readonly fields"
);
});
test('retrieve_readonly_by_pass_fields', function(instance){
var context = {'readonly_by_pass': true}
var options = {'readonly_fields': {'field_1': 'va1-1',
'field_2': 'val-2',
'field_3': 'val-3'}};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1', 'field_2': 'val-2', 'field_3': 'val-3'},
"All fields should be accepted!"
);
context = {'readonly_by_pass': ['field_1', 'field_3']};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1','field_3': 'val-3'},
"two field s1"
);
context = {'readonly_by_pass': ['field_1',]};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1'},
"Only field 1"
);
context = {'readonly_by_pass': []};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty context field"
);
context = null;
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Null context"
);
context = false;
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false context"
);
context = {'readonly_by_pass': true}
options = {'readonly_fields': {'field_1': 'va1-1'}};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1'},
"Only one option"
);
options = {'readonly_fields': {}};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty readonly_fields option"
);
options = {};
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty option"
);
options = null;
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"null option"
);
options = false;
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false option"
);
context = false;
deepEqual(
instance.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false option and false context"
);
});
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1', 'field_2': 'val-2', 'field_3': 'val-3'},
"All fields should be accepted!"
);
context = {'readonly_by_pass': ['field_1', 'field_3']};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1','field_3': 'val-3'},
"two field s1"
);
context = {'readonly_by_pass': ['field_1',]};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1'},
"Only field 1"
);
context = {'readonly_by_pass': []};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty context field"
);
context = null;
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Null context"
);
context = false;
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false context"
);
context = {'readonly_by_pass': true}
options = {'readonly_fields': {'field_1': 'va1-1'}};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{'field_1': 'va1-1'},
"Only one option"
);
options = {'readonly_fields': {}};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty readonly_fields option"
);
options = {};
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"Empty option"
);
options = null;
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"null option"
);
options = false;
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false option"
);
context = false;
assert.deepEqual(
openerp.web_readonly_bypass.retrieve_readonly_by_pass_fields(
options, context),
{},
"false option and false context"
);
});
}); });

5
web_readonly_bypass/tests/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_js

14
web_readonly_bypass/tests/test_js.py

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.tests import HttpCase
class TestJS(HttpCase):
def test_js(self):
self.phantom_js(
"/web/tests?module=web_readonly_bypass",
"",
login="admin",
)
Loading…
Cancel
Save