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.
42 lines
1.2 KiB
JavaScript
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"
|
|
);
|
|
});
|
|
});
|