diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/hr_skills/static/tests/widget_tests.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/hr_skills/static/tests/widget_tests.js')
| -rw-r--r-- | addons/hr_skills/static/tests/widget_tests.js | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/addons/hr_skills/static/tests/widget_tests.js b/addons/hr_skills/static/tests/widget_tests.js new file mode 100644 index 00000000..c8d417ec --- /dev/null +++ b/addons/hr_skills/static/tests/widget_tests.js @@ -0,0 +1,328 @@ +odoo.define('hr_skills.field_one_to_many_group_tests', function (require) { + "use strict"; + + var FormView = require('web.FormView'); + var testUtils = require('web.test_utils'); + + var createView = testUtils.createView; + + QUnit.module('skills_widgets', { + beforeEach: function () { + this.data = { + partner: { + fields: { + display_name: { string: "Displayed name", type: "char" }, + line_ids: { string: "one2many field", type: "one2many", relation: 'line', relation_field: 'trululu' }, + skill_ids: { string: "one2many field", type: "one2many", relation: 'partner_skill', relation_field: 'partner_id' }, + }, + records: [{ + id: 1, + display_name: "first record", + line_ids: [37, 38, 39], + skill_ids: [75, 76, 77] + }], + onchanges: {}, + }, + partner_skill: { + fields: { + skill_id: { string: "Name", type: "many2one", relation: 'skill'}, + skill_type_id: { string: "Type", type: "many2one", relation: 'skill_type' }, + skill_level_id: { string: "Level", type: "many2one", relation: 'skill_level' }, + level_progress: { string: "Progress", type: "int" }, + }, + records: [{ + id: 75, + skill_id: 444, + skill_type_id: 221, + skill_level_id: 112, + level_progress: 50, + }, { + id: 76, + skill_id: 445, + skill_type_id: 222, + skill_level_id: 111, + level_progress: 50, + }, { + id: 77, + skill_id: 446, + skill_type_id: 222, + skill_level_id: 111, + level_progress: 70, + }], + }, + skill: { + fields: { + name: { string: "Name", type: "char" }, + }, + records: [ + { id: 444, name: 'Python' }, + { id: 445, name: 'Piano' }, + { id: 446, name: 'Flute' }, + ] + }, + skill_level: { + fields: { + name: { string: "Name", type: "char" }, + }, + records: [ + { id: 111, name: 'L1' }, + { id: 112, name: 'Intermediate' } + ] + }, + skill_type: { + fields: { + name: { string: "Name", type: "char" }, + }, + records: [ + { id: 221, name: 'Dev' }, + { id: 222, name: 'Music' }, + ] + }, + line: { + fields: { + name: { string: "Name", type: "char" }, + line_type_id: { string: "Type", relation: 'line_type', type: "many2one" }, + description: { string: "Description", type: "text" }, + date_start: { string: "Date start", type: "date" }, + date_end: { string: "Date end", type: "date" }, + trululu: { string: "Trululu", type: "many2one", relation: 'partner' }, + display_type: { string: "display type", type: "selection"}, + }, + records: [{ + id: 37, + name: "ULB", + line_type_id: 50, + date_start: "2017-01-25", + date_end: "2019-01-25", + description: 'Hello', + trululu: 1, + display_type: 'classic', + }, { + id: 38, + name: "UCL", + line_type_id: 50, + date_start: "2013-01-25", + date_end: "2014-01-25", + description: 'World', + trululu: 1, + display_type: 'classic', + }, { + id: 39, + name: "KUL", + line_type_id: 51, + date_start: "2008-01-25", + description: 'Hi', + trululu: 1, + display_type: 'classic', + }], + onchanges: {}, + }, + line_type: { + fields: { + name: { string: "Name", type: "char" }, + }, + records: [{ + id: 50, + name: 'AAA', + }, { + id: 51, + name: 'BBB' + }], + } + }; + } + }, function () { + QUnit.test('resumé one2many field group by field render', async function (assert) { + assert.expect(16); + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="line_ids" widget="hr_resume">' + + '<tree>' + + '<field name="name"/>' + + '<field name="line_type_id"/>' + + '<field name="description"/>' + + '<field name="date_start"/>' + + '<field name="date_end"/>' + + '<field name="display_type"/>' + + '</tree>' + + '</field>' + + '</form>', + res_id: 1, + }); + var $headers = form.$('.o_resume_group_header'); + assert.strictEqual($headers.length, 2, 'There should be 2 headers'); + assert.strictEqual($headers.find('td:contains(AAA)').length, 1, "it should have line type AAA"); + assert.strictEqual($headers.find('td:contains(BBB)').length, 1, "it should have line type BBB"); + + var dataRows = form.$('.o_data_row'); + assert.strictEqual(dataRows.length, 3, 'There should be 3 data rows'); + + var $row = $(dataRows[0]); + assert.strictEqual($row.find('td:contains(01/25/2017)').length, 1, "it should have start date 01/25/2017"); + assert.strictEqual($row.find('td:contains(01/25/2019)').length, 1, "it should have end date 01/25/2019"); + assert.strictEqual($row.find('td:contains(ULB)').length, 1, "it should have line name ULB"); + assert.strictEqual($row.find('td:contains(Hello)').length, 1, "it should have line description Hello"); + + $row = $(dataRows[1]); + assert.strictEqual($row.find('td:contains(01/25/2013)').length, 1, "it should have start date 01/25/2013"); + assert.strictEqual($row.find('td:contains(01/25/2014)').length, 1, "it should have end date 01/25/2014"); + assert.strictEqual($row.find('td:contains(UCL)').length, 1, "it should have line name UCL"); + assert.strictEqual($row.find('td:contains(World)').length, 1, "it should have line description World"); + + $row = $(dataRows[2]); + assert.strictEqual($row.find('td:contains(01/25/2008)').length, 1, "it should have start date 01/25/2008"); + assert.strictEqual($row.find('td:contains(Current)').length, 1, "it should have end date Current"); + assert.strictEqual($row.find('td:contains(KUL)').length, 1, "it should have line name KUL"); + assert.strictEqual($row.find('td:contains(Hi)').length, 1, "it should have line description Hi"); + + form.destroy(); + }); + QUnit.test('resumé one2many field group by field create', async function (assert) { + assert.expect(5); + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="line_ids" widget="hr_resume">' + + '<tree>' + + '<field name="name"/>' + + '<field name="line_type_id"/>' + + '<field name="description"/>' + + '<field name="date_start"/>' + + '<field name="date_end"/>' + + '</tree>' + + '</field>' + + '</form>', + archs: { + 'line,false,form': '<form>' + + '<field name="name"/>' + + '<field name="line_type_id"/>' + + '<field name="description"/>' + + '<field name="date_start"/>' + + '<field name="date_end"/>' + + '</form>', + }, + res_id: 1, + mockRPC: function (route, args) { + var result = this._super.apply(this, arguments); + if (args.method === 'write') { + var new_line_data = args.args[1].line_ids[3][2]; + assert.strictEqual(new_line_data.date_end, '2030-01-01'); + assert.strictEqual(new_line_data.date_start, '2025-01-01'); + assert.strictEqual(new_line_data.line_type_id, 50, "it should have the line type from context"); + assert.strictEqual(new_line_data.name, 'new line'); + assert.strictEqual(new_line_data.description, 'new description'); + } + return result; + }, + }); + + await testUtils.form.clickEdit(form); + await testUtils.dom.click(form.$('.o_field_x2many_list_row_add a')[0]); + + // Fill line form (type should be set from the add button context) + await testUtils.fields.editInput($('input[name="name"]'), 'new line'); + await testUtils.fields.editInput($('textarea[name="description"]'), 'new description'); + await testUtils.fields.editSelect($('input[name="date_start"]'), '2025-01-01'); + await testUtils.fields.editSelect($('input[name="date_end"]'), '2030-01-01'); + await testUtils.modal.clickButton('Save & Close'); + + await testUtils.form.clickSave(form); + form.destroy(); + }); + QUnit.test('resumé one2many field group by field delete', async function (assert) { + assert.expect(2); + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="line_ids" widget="hr_resume">' + + '<tree>' + + '<field name="name"/>' + + '<field name="line_type_id"/>' + + '<field name="description"/>' + + '<field name="date_start"/>' + + '<field name="date_end"/>' + + '</tree>' + + '</field>' + + '</form>', + archs: { + 'line,false,form': '<form>' + + '<field name="name"/>' + + '<field name="line_type_id"/>' + + '<field name="description"/>' + + '<field name="date_start"/>' + + '<field name="date_end"/>' + + '</form>', + }, + res_id: 1, + mockRPC: function (route, args) { + var result = this._super.apply(this, arguments); + if (args.method === 'write') { + var orm_cmd = args.args[1].line_ids[2][0]; + var id = args.args[1].line_ids[2][1]; + assert.strictEqual(orm_cmd, 2, "it should delete resume line"); + assert.strictEqual(id, 37, "it should delete resume line #37"); + } + return result; + }, + }); + + await testUtils.form.clickEdit(form); + await testUtils.dom.click(form.$('.o_list_record_remove')[0]); + + await testUtils.form.clickSave(form); + form.destroy(); + }); + + QUnit.test('skills one2many field group by field render', async function (assert) { + assert.expect(13); + var form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="skill_ids" widget="hr_skills">' + + '<tree>' + + '<field name="skill_id"/>' + + '<field name="skill_type_id"/>' + + '<field name="skill_level_id"/>' + + '<field name="level_progress"/>' + + '</tree>' + + '</field>' + + '</form>', + res_id: 1, + }); + + var $headers = form.$('.o_group_header'); + assert.strictEqual($headers.length, 2, 'There should be 2 headers'); + assert.strictEqual($headers.find('td:contains(Dev)').length, 1, "it should have skill type Dev"); + assert.strictEqual($headers.find('td:contains(Music)').length, 1, "it should have skill type Music"); + + var dataRows = form.$('.o_data_row'); + assert.strictEqual(dataRows.length, 3, 'There should be 3 data rows'); + + var $row = $(dataRows[0]); + assert.strictEqual($row.find('td:contains(Python)').length, 1, "it should have skill name Python"); + assert.strictEqual($row.find('td:contains(Intermediate)').length, 1, "it should have skill name Intermediate"); + assert.strictEqual($row.find('td:contains(50)').length, 1, "it should have skill progress 50"); + + $row = $(dataRows[1]); + assert.strictEqual($row.find('td:contains(Piano)').length, 1, "it should have skill name Piano"); + assert.strictEqual($row.find('td:contains(L1)').length, 1, "it should have skill level L1"); + assert.strictEqual($row.find('td:contains(50)').length, 1, "it should have skill progress 50"); + + $row = $(dataRows[2]); + assert.strictEqual($row.find('td:contains(Flute)').length, 1, "it should have skill name Flute"); + assert.strictEqual($row.find('td:contains(L1)').length, 1, "it should have skill level L1"); + assert.strictEqual($row.find('td:contains(70)').length, 1, "it should have skill progress 70"); + + form.destroy(); + }); + }); +}); |
