@@ -142,4 +142,85 @@ describe("red/settings", function() {
142142 settings . should . not . have . property ( "c" ) ;
143143
144144 } ) ;
145+
146+ it ( 'registers node settings and exports them' , function ( ) {
147+ var userSettings = { } ;
148+ settings . init ( userSettings ) ;
149+ settings . registerNodeSettings ( "inject" , { injectColor :{ value :"red" , exportable :true } , injectSize :{ value :"100" , exportable :true } } ) ;
150+ settings . registerNodeSettings ( "mqtt" , { mqttColor :{ value :"purple" , exportable :false } , mqttSize :{ value :"50" , exportable :true } } ) ;
151+ settings . registerNodeSettings ( "http request" , { httpRequest1 :{ value :"a1" , exportable :true } } ) ;
152+ settings . registerNodeSettings ( " http--request<> " , { httpRequest2 :{ value :"a2" , exportable :true } } ) ;
153+ settings . registerNodeSettings ( "_http_request_" , { httpRequest3 :{ value :"a3" , exportable :true } } ) ;
154+ settings . registerNodeSettings ( "mQtT" , { mQtTColor :{ value :"purple" , exportable :true } } ) ;
155+ settings . registerNodeSettings ( "abc123" , { abc123 :{ value :"def456" , exportable :true } } ) ;
156+ var safeSettings = { } ;
157+ settings . exportNodeSettings ( safeSettings ) ;
158+ safeSettings [ "nodeSettings" ] . should . have . property ( "injectColor" , "red" ) ;
159+ safeSettings [ "nodeSettings" ] . should . have . property ( "injectSize" , "100" ) ;
160+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "mqttColor" ) ;
161+ safeSettings [ "nodeSettings" ] . should . have . property ( "mqttSize" , "50" ) ;
162+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequest1" , "a1" ) ;
163+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequest2" , "a2" ) ;
164+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequest3" , "a3" ) ;
165+ safeSettings [ "nodeSettings" ] . should . have . property ( "mQtTColor" , "purple" ) ;
166+ safeSettings [ "nodeSettings" ] . should . have . property ( "abc123" , "def456" ) ;
167+ } ) ;
168+
169+ it ( 'prohibits registering the property whose name do not start with type name' , function ( ) {
170+ var userSettings = { } ;
171+ settings . init ( userSettings ) ;
172+ settings . registerNodeSettings ( "inject" , { color :{ value :"red" , exportable :true } } ) ;
173+ settings . registerNodeSettings ( "_a_b_1_" , { ab1Color :{ value :"red" , exportable :true } } ) ;
174+ settings . registerNodeSettings ( "AB2" , { AB2Color :{ value :"red" , exportable :true } } ) ;
175+ settings . registerNodeSettings ( "abcDef" , { abcColor :{ value :"red" , exportable :true } } ) ;
176+ var safeSettings = { } ;
177+ settings . exportNodeSettings ( safeSettings ) ;
178+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "color" ) ;
179+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "ab1Color" , "blue" ) ;
180+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "AB2Color" ) ;
181+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "abcColor" ) ;
182+ } ) ;
183+
184+ it ( 'overwrites node settings with user settings' , function ( ) {
185+ var userSettings = {
186+ injectColor : "green" ,
187+ mqttColor : "yellow" ,
188+ c : [ 1 , 2 , 3 ]
189+ }
190+ settings . init ( userSettings ) ;
191+ settings . registerNodeSettings ( "inject" , { injectColor :{ value :"red" , exportable :true } } ) ;
192+ var safeSettings = { } ;
193+ settings . exportNodeSettings ( safeSettings ) ;
194+ safeSettings [ "nodeSettings" ] . should . have . property ( "injectColor" , "green" ) ;
195+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "mqttColor" ) ;
196+ } ) ;
197+
198+ it ( 'disables/enables node settings' , function ( ) {
199+ var userSettings = { } ;
200+ settings . init ( userSettings ) ;
201+
202+ var safeSettings = { } ;
203+ settings . registerNodeSettings ( "inject" , { injectColor :{ value :"red" , exportable :true } } ) ;
204+ settings . registerNodeSettings ( "mqtt" , { mqttColor :{ value :"purple" , exportable :true } } ) ;
205+ settings . registerNodeSettings ( "http request" , { httpRequestColor :{ value :"yellow" , exportable :true } } ) ;
206+ settings . exportNodeSettings ( safeSettings ) ;
207+ safeSettings [ "nodeSettings" ] . should . have . property ( "injectColor" , "red" ) ;
208+ safeSettings [ "nodeSettings" ] . should . have . property ( "mqttColor" , "purple" ) ;
209+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequestColor" , "yellow" ) ;
210+
211+ var types = [ "inject" , "mqtt" ] ;
212+ settings . disableNodeSettings ( types ) ;
213+ settings . exportNodeSettings ( safeSettings ) ;
214+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "injectColor" ) ;
215+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "mqttColor" ) ;
216+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequestColor" , "yellow" ) ;
217+
218+ types = [ "inject" ] ;
219+ settings . enableNodeSettings ( types ) ;
220+ settings . exportNodeSettings ( safeSettings ) ;
221+ safeSettings [ "nodeSettings" ] . should . have . property ( "injectColor" , "red" ) ;
222+ safeSettings [ "nodeSettings" ] . should . not . have . property ( "mqttColor" ) ;
223+ safeSettings [ "nodeSettings" ] . should . have . property ( "httpRequestColor" , "yellow" ) ;
224+ } ) ;
225+
145226} ) ;
0 commit comments