From b8c8eaa02fbb7312d026e1fc519f80384d1cebe9 Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Thu, 18 Jan 2018 14:23:09 +0100 Subject: [PATCH] [FIX] web: error image when no kanban image Introduce back part of `formatBinary` that was reverted with 7813a8e7. When an image is unset, the value was `false` which would end up with a bin_size of `NaN Bytes` which would end up displaying an error image with source `data:image/png;base64,NaN Bytes`. This commit get back a previous behavior so the bin_size when the attachment does not exist is an empty string (so: ''). opw-805542 closes #22348 --- .../web/static/src/js/fields/field_utils.js | 5 +++- addons/web/static/tests/views/kanban_tests.js | 29 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/fields/field_utils.js b/addons/web/static/src/js/fields/field_utils.js index 5ac180b1de1..5a11f1b0ba8 100644 --- a/addons/web/static/src/js/fields/field_utils.js +++ b/addons/web/static/src/js/fields/field_utils.js @@ -30,7 +30,7 @@ var _t = core._t; /** * Convert binary to bin_size * - * @param {string} value base64 representation of the binary (might be already a bin_size!) + * @param {string} [value] base64 representation of the binary (might be already a bin_size!) * @param {Object} [field] * a description of the field (note: this parameter is ignored) * @param {Object} [options] additional options (note: this parameter is ignored) @@ -38,6 +38,9 @@ var _t = core._t; * @returns {string} bin_size (which is human-readable) */ function formatBinary(value, field, options) { + if (!value) { + return ''; + } return utils.binaryToBinsize(value); } diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 9e6d6e9e30f..8d39a5ec21e 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -33,9 +33,10 @@ QUnit.module('Views', { state: { string: "State", type: "selection", selection: [["abc", "ABC"], ["def", "DEF"], ["ghi", "GHI"]]}, date: {string: "Date Field", type: 'date'}, datetime: {string: "Datetime Field", type: 'datetime'}, + image: {string: "Image", type: "binary"}, }, records: [ - {id: 1, bar: true, foo: "yop", int_field: 10, qux: 0.4, product_id: 3, state: "abc", category_ids: []}, + {id: 1, bar: true, foo: "yop", int_field: 10, qux: 0.4, product_id: 3, state: "abc", category_ids: [], 'image': 'R0lGODlhAQABAAD/ACwAAAAAAQABAAACAA=='}, {id: 2, bar: true, foo: "blip", int_field: 9, qux: 13, product_id: 5, state: "def", category_ids: [6]}, {id: 3, bar: true, foo: "gnap", int_field: 17, qux: -3, product_id: 3, state: "ghi", category_ids: [7]}, {id: 4, bar: false, foo: "blip", int_field: -4, qux: 9, product_id: 5, state: "ghi", category_ids: []}, @@ -2339,6 +2340,32 @@ QUnit.module('Views', { "quick create should have been added in the first column"); } }); + + QUnit.test('test displaying image', function (assert) { + assert.expect(2); + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '' + + '' + + '
' + + '' + + '
' + + '
', + }); + + var imageOnRecord = kanban.$('img[src*="/web/image"][src*="&id=1"]'); + assert.strictEqual(imageOnRecord.length, 1, "partner with image display image"); + + var placeholders = kanban.$('img[src$="/web/static/src/img/placeholder.png"]'); + assert.strictEqual(placeholders.length, this.data.partner.records.length - 1, + "partner with image should displaiy"); + + kanban.destroy(); + }); }); });