summaryrefslogtreecommitdiff
path: root/addons/hr_org_chart/static/tests
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/hr_org_chart/static/tests
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/hr_org_chart/static/tests')
-rw-r--r--addons/hr_org_chart/static/tests/hr_org_chart_tests.js197
1 files changed, 197 insertions, 0 deletions
diff --git a/addons/hr_org_chart/static/tests/hr_org_chart_tests.js b/addons/hr_org_chart/static/tests/hr_org_chart_tests.js
new file mode 100644
index 00000000..d8de512d
--- /dev/null
+++ b/addons/hr_org_chart/static/tests/hr_org_chart_tests.js
@@ -0,0 +1,197 @@
+odoo.define('hr_org_chart.tests', function (require) {
+"use strict";
+
+var FormView = require('web.FormView');
+var testUtils = require("web.test_utils");
+
+var createView = testUtils.createView;
+
+QUnit.module('hr_org_chart', {
+ before: function () {
+ this.data = {
+ hr_employee: {
+ fields: {
+ child_ids: {string: "one2many Subordinates field", type: "one2many", relation: 'hr_employee'},
+ },
+ records: [{
+ id: 1,
+ child_ids: [],
+ }]
+ }
+ };
+ },
+}, function () {
+ QUnit.test("hr org chart: empty render", async function (assert) {
+ assert.expect(2);
+
+ var form = await createView({
+ View: FormView,
+ model: 'hr_employee',
+ data: this.data,
+ arch:
+ '<form>' +
+ '<field name="child_ids" widget="hr_org_chart"/>' +
+ '</form>',
+ res_id: 1,
+ mockRPC: function (route, args) {
+ if (route === '/hr/get_org_chart') {
+ assert.ok('employee_id' in args, "it should have 'employee_id' as argument");
+ return Promise.resolve({
+ children: [],
+ managers: [],
+ managers_more: false,
+ });
+ } else if (route === '/hr/get_redirect_model') {
+ return Promise.resolve('hr.employee');
+ }
+ return this._super(route, args);
+ }
+ });
+ assert.strictEqual(form.$('[name="child_ids"]').children().length, 1,
+ "the chart should have 1 child");
+ form.destroy();
+ });
+ QUnit.test("hr org chart: render without data", async function (assert) {
+ assert.expect(2);
+
+ var form = await createView({
+ View: FormView,
+ model: 'hr_employee',
+ data: this.data,
+ arch:
+ '<form>' +
+ '<field name="child_ids" widget="hr_org_chart"/>' +
+ '</form>',
+ res_id: 1,
+ mockRPC: function (route, args) {
+ if (route === '/hr/get_org_chart') {
+ assert.ok('employee_id' in args, "it should have 'employee_id' as argument");
+ return Promise.resolve({}); // return no data
+ }
+ return this._super(route, args);
+ }
+ });
+ assert.strictEqual(form.$('[name="child_ids"]').children().length, 1,
+ "the chart should have 1 child");
+ form.destroy();
+ });
+ QUnit.test("hr org chart: basic render", async function (assert) {
+ assert.expect(3);
+
+ var form = await createView({
+ View: FormView,
+ model: 'hr_employee',
+ data: this.data,
+ arch:
+ '<form>' +
+ '<sheet>' +
+ '<div id="o_employee_container"><div id="o_employee_main">' +
+ '<div id="o_employee_right">' +
+ '<field name="child_ids" widget="hr_org_chart"/>' +
+ '</div>' +
+ '</div></div>' +
+ '</sheet>' +
+ '</form>',
+ res_id: 1,
+ mockRPC: function (route, args) {
+ if (route === '/hr/get_org_chart') {
+ assert.ok('employee_id' in args, "it should have 'employee_id' as argument");
+ return Promise.resolve({
+ children: [{
+ direct_sub_count: 0,
+ indirect_sub_count: 0,
+ job_id: 2,
+ job_name: 'Sub-Gooroo',
+ link: 'fake_link',
+ name: 'Michael Hawkins',
+ id: 2,
+ }],
+ managers: [],
+ managers_more: false,
+ self: {
+ direct_sub_count: 1,
+ id: 1,
+ indirect_sub_count: 1,
+ job_id: 1,
+ job_name: 'Gooroo',
+ link: 'fake_link',
+ name: 'Antoine Langlais',
+ }
+ });
+ } else if (route === '/hr/get_redirect_model') {
+ return Promise.resolve('hr.employee');
+ }
+ return this._super(route, args);
+ }
+ });
+ assert.containsOnce(form, '.o_org_chart_entry_sub',
+ "the chart should have 1 subordinate");
+ assert.containsOnce(form, '.o_org_chart_entry_self',
+ "the current employee should only be displayed once in the chart");
+ form.destroy();
+ });
+ QUnit.test("hr org chart: basic manager render", async function (assert) {
+ assert.expect(4);
+
+ var form = await createView({
+ View: FormView,
+ model: 'hr_employee',
+ data: this.data,
+ arch:
+ '<form>' +
+ '<sheet>' +
+ '<div id="o_employee_container"><div id="o_employee_main">' +
+ '<div id="o_employee_right">' +
+ '<field name="child_ids" widget="hr_org_chart"/>' +
+ '</div>' +
+ '</div></div>' +
+ '</sheet>' +
+ '</form>',
+ res_id: 1,
+ mockRPC: function (route, args) {
+ if (route === '/hr/get_org_chart') {
+ assert.ok('employee_id' in args, "should have 'employee_id' as argument");
+ return Promise.resolve({
+ children: [{
+ direct_sub_count: 0,
+ indirect_sub_count: 0,
+ job_id: 2,
+ job_name: 'Sub-Gooroo',
+ link: 'fake_link',
+ name: 'Michael Hawkins',
+ id: 2,
+ }],
+ managers: [{
+ direct_sub_count: 1,
+ id: 1,
+ indirect_sub_count: 2,
+ job_id: 1,
+ job_name: 'Chief Gooroo',
+ link: 'fake_link',
+ name: 'Antoine Langlais',
+ }],
+ managers_more: false,
+ self: {
+ direct_sub_count: 1,
+ id: 1,
+ indirect_sub_count: 1,
+ job_id: 3,
+ job_name: 'Gooroo',
+ link: 'fake_link',
+ name: 'John Smith',
+ }
+ });
+ } else if (route === '/hr/get_redirect_model') {
+ return Promise.resolve('hr.employee');
+ }
+ return this._super(route, args);
+ }
+ });
+ assert.containsOnce(form, '.o_org_chart_group_up .o_org_chart_entry_manager', "the chart should have 1 manager");
+ assert.containsOnce(form, '.o_org_chart_group_down .o_org_chart_entry_sub', "the chart should have 1 subordinate");
+ assert.containsOnce(form, '.o_org_chart_entry_self', "the chart should have only once the current employee");
+ form.destroy();
+ });
+});
+
+});