This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/unit/controllers/preferences-profile-test.js
Krzysztof Kotlarek 5c43f9a3a3
FIX: problem when [] custom field is send (#13573)
Multiselect data can be saved but when all are removed then data are not cleared

Ajax function is removing an empty array from request data. In that case, we should change `[]` to `null`.

We need that empty values to properly empty data.
2021-06-30 16:18:37 +10:00

42 lines
1.2 KiB
JavaScript

import { discourseModule } from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import EmberObject from "@ember/object";
import User from "discourse/models/user";
discourseModule("Unit | Controller | preferences/profile", function () {
test("prepare custom field data", function (assert) {
const controller = this.getController("preferences/profile", {
model: User.create({
id: 70,
second_factor_enabled: true,
is_anonymous: true,
user_fields: {
field_1: "1",
field_2: "2",
field_3: "3",
},
}),
currentUser: {
id: 1234,
},
});
controller.set("userFields", [
EmberObject.create({ value: "2", field: { id: "field_1" } }),
EmberObject.create({ value: null, field: { id: "field_2" } }),
EmberObject.create({ value: [], field: { id: "field_3" } }),
]);
controller.send("_updateUserFields");
assert.equal(
controller.model.user_fields.field_1,
"2",
"updates string value"
);
assert.equal(controller.model.user_fields.field_2, null, "updates null");
assert.equal(
controller.model.user_fields.field_3,
null,
"updates empty array as null"
);
});
});