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
<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
<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
=======
@ -66,6 +63,7 @@ Contributors
* Pierre Verkest <pverkest@anybox.fr>
* Christophe Combelles <ccomb@anybox.fr>
* Simon André <sandre@anybox.fr>
* Jairo Llopis <jairo.llopis@tecnativa.com>
Maintainer
----------

8
web_duplicate_visibility/__openerp__.py

@ -4,16 +4,16 @@
{
"name": "web duplicate visibility",
"summary": "Manage the duplicate button visibiliy",
"version": "9.0.1.0.0",
"version": "9.0.1.0.1",
"category": "web",
"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",
"application": False,
"installable": True,
"depends": [
"base",
"web",
],
"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',
['web.data', 'web.FormView'],
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 () {
return [{ id: 1, a: 'foo', b: 'bar', c: 'baz' }];
});
@ -45,38 +47,32 @@ odoo.define_section('web_duplicate_visibility',
return obj.text.trim() == "Duplicate";
}
);
strictEqual(
assert.strictEqual(
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',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form>', 1);
});
compare('<form>', 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"',
function(assert, data, FormView){
assertDuplicate(data, FormView, '<form duplicate="1">', 1);
});
compare('<form duplicate="1">', 1));
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"',
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"',
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
: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
===========
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
=======
@ -63,6 +66,7 @@ Contributors
* Jonathan Nemry <jonathan.nemry@acsone.eu>
* Laetitia Gangloff <laetitia.gangloff@acsone.eu>
* Pierre Verkest <pverkest@anybox.fr>
* Jairo Llopis <jairo.llopis@tecnativa.com>
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
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',
'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)",
"website": "http://www.acsone.eu",
'category': 'Technical Settings',

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

@ -1,5 +1,5 @@
"use strict";
(function(){
"use strict";
var instance = openerp;
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'}};
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