Merge pull request #426 from danychi/fix/serialize-group-bug

Fix bug in serializeGroup and serializeElements
This commit is contained in:
Thijs Louisse 2019-12-16 15:03:41 +01:00 committed by GitHub
commit dfe3d6834e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 2 deletions

View file

@ -210,7 +210,7 @@ export class LionFieldset extends FormRegistrarMixin(
serializedValues[name] = this.__serializeElements(element); serializedValues[name] = this.__serializeElements(element);
} else { } else {
const serializedValue = this.__serializeElement(element); const serializedValue = this.__serializeElement(element);
if (serializedValue) { if (serializedValue || serializedValue === 0) {
serializedValues[name] = serializedValue; serializedValues[name] = serializedValue;
} }
} }
@ -357,7 +357,7 @@ export class LionFieldset extends FormRegistrarMixin(
const serializedValues = []; const serializedValues = [];
elements.forEach(element => { elements.forEach(element => {
const serializedValue = this.__serializeElement(element); const serializedValue = this.__serializeElement(element);
if (serializedValue) { if (serializedValue || serializedValue === 0) {
serializedValues.push(serializedValue); serializedValues.push(serializedValue);
} }
}); });

View file

@ -596,6 +596,23 @@ describe('<lion-fieldset>', () => {
}); });
}); });
it('0 is a valid value to be serialized', async () => {
const fieldset = await fixture(html`
<${tag}>
<${childTag} name="price"></${childTag}>
</${tag}>`);
await nextFrame();
fieldset.formElements.price.modelValue = 0;
expect(fieldset.serializeGroup()).to.deep.equal({ price: 0 });
});
it('__serializeElements serializes 0 as a valid value', async () => {
const fieldset = await fixture(html`<${tag}></${tag}>`);
await nextFrame();
const elements = [{ serializedValue: 0 }];
expect(fieldset.__serializeElements(elements)).to.deep.equal([0]);
});
it('form elements which are not disabled', async () => { it('form elements which are not disabled', async () => {
const fieldset = await fixture(html`<${tag}>${inputSlots}</${tag}>`); const fieldset = await fixture(html`<${tag}>${inputSlots}</${tag}>`);
await nextFrame(); await nextFrame();