Skip to content

Commit e56b903

Browse files
authored
fix: set _defaultRequired = true
Page default required (#48) * Fix: Change _defaultRequired = true in ctor * Test: Fix tests for new default setting
1 parent e8a3869 commit e56b903

File tree

4 files changed

+25
-10
lines changed

4 files changed

+25
-10
lines changed

lib/pages/page.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module.exports = class Page {
1616
}
1717

1818
this._settingIds = []
19-
this._defaultRequired = true
19+
this._defaultRequired = false
2020
}
2121

2222
async section(name, closure) {
@@ -67,6 +67,11 @@ module.exports = class Page {
6767
return this
6868
}
6969

70+
/**
71+
* Automatically applies the `required: true` field to all section settings
72+
* @param {Boolean} value defaults to false
73+
* @returns {Page} instance of Page
74+
*/
7075
defaultRequired(value) {
7176
this._defaultRequired = value
7277
return this

test/pagebuilder-i18n-spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ describe('pagebuilder-i18n-spec', () => {
3333
expect(json.sections[0].settings[0].id).to.equal('contactSensor')
3434
expect(json.sections[0].settings[0].name).to.equal('Sélectionnez un capteur d\'ouverture / fermeture')
3535
expect(json.sections[0].settings[0].description).to.equal('Appuyez pour définir')
36-
expect(json.sections[0].settings[0].required).to.equal(true)
3736
expect(json.sections[0].settings[0].multiple).to.equal(false)
3837
expect(json.sections[0].settings[0].type).to.equal('DEVICE')
3938
expect(json.sections[0].settings[0].permissions[0]).to.equal('r')
@@ -44,7 +43,6 @@ describe('pagebuilder-i18n-spec', () => {
4443
expect(json.sections[1].settings[0].id).to.equal('lights')
4544
expect(json.sections[1].settings[0].name).to.equal('Sélectionnez une ou plusieurs lumières à contrôler')
4645
expect(json.sections[0].settings[0].description).to.equal('Appuyez pour définir')
47-
expect(json.sections[1].settings[0].required).to.equal(true)
4846
expect(json.sections[1].settings[0].multiple).to.equal(true)
4947
expect(json.sections[1].settings[0].type).to.equal('DEVICE')
5048
expect(json.sections[1].settings[0].permissions[0]).to.equal('r')

test/pagebuilder-spec.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe('pagebuilder', () => {
1313

1414
it('should process one section', () => {
1515
const page = new Page('mainPage')
16-
16+
page.defaultRequired(true)
1717
page.section('When this door opens and closes', section => {
1818
section.deviceSetting('contactSensor')
1919
.capabilities(['contactSensor'])
@@ -37,7 +37,7 @@ describe('pagebuilder', () => {
3737

3838
it('should process two sections', () => {
3939
const page = new Page('mainPage')
40-
40+
page.defaultRequired(true)
4141
page.section('When this door opens and closes', section => {
4242
section.deviceSetting('contactSensor')
4343
.capabilities(['contactSensor'])
@@ -82,7 +82,7 @@ describe('pagebuilder', () => {
8282

8383
it('should process unnamed section', () => {
8484
const page = new Page('mainPage')
85-
85+
page.defaultRequired(true)
8686
page.section(section => {
8787
section.deviceSetting('contactSensor')
8888
.capabilities(['contactSensor'])
@@ -125,10 +125,8 @@ describe('pagebuilder', () => {
125125

126126
it('should honor default required', () => {
127127
const page = new Page('mainPage')
128-
page.defaultRequired(false)
129-
128+
page.defaultRequired(true)
130129
page.section('When this door opens and closes', section => {
131-
section.defaultRequired(true)
132130
section.deviceSetting('contactSensor')
133131
.capabilities(['contactSensor'])
134132
.name('Select an open/close sensor')
@@ -150,7 +148,7 @@ describe('pagebuilder', () => {
150148
// Console.log(JSON.stringify(json, null, 2))
151149
expect(json.sections[0].settings[0].required).to.equal(true)
152150
expect(json.sections[0].settings[1].required).to.equal(false)
153-
expect(json.sections[1].settings[0].required).to.equal(false)
151+
expect(json.sections[1].settings[0].required).to.equal(true)
154152
})
155153

156154
it('options formats', () => {
@@ -199,4 +197,16 @@ describe('pagebuilder', () => {
199197
expect(json.sections[0].settings[0].page).to.equal('anotherPage')
200198
expect(json.sections[0].settings[0].required).to.equal(undefined)
201199
})
200+
201+
it('page defaultRequired adds required:true', () => {
202+
const page = new Page('mainPage')
203+
page.defaultRequired(true)
204+
page.section(section => {
205+
section.paragraphSetting('mainParagraph')
206+
})
207+
208+
const json = page.toJson()
209+
// Console.log(JSON.stringify(json, null, 2))
210+
expect(json.sections[0].settings[0].required).to.equal(true)
211+
})
202212
})

test/smartapp-page-spec.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ describe('smartapp-page-spec', () => {
1010
page.section('whenDoorOpensAndCloses', section => {
1111
section.deviceSetting('contactSensor')
1212
.capabilities(['contactSensor'])
13+
.required(true)
1314
})
1415

1516
page.section('turnLightsOnAndOff', section => {
1617
section.deviceSetting('lights')
1718
.capabilities(['switch'])
1819
.multiple(true)
1920
.permissions('rx')
21+
.required(true)
2022
})
2123
})
2224

0 commit comments

Comments
 (0)