rspec-openhab-scripting 0.0.1-java → 0.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0469b486b84d65883d60fa79dbea29b5c5c86792a8f430d222c87bbb76b69d5
4
- data.tar.gz: 188413ff354ddec32fdfb5c4fb0823efcde0a803b684acd3370070217f3d4f1c
3
+ metadata.gz: 29dc9d000dc362c190a0bc94a93157b62d82ca884ab9294ebae673c3e83606ad
4
+ data.tar.gz: c60c6ee40ba4cc183a5e73bb97140738e3af52b10661bb4aa86f8d519f385903
5
5
  SHA512:
6
- metadata.gz: fe7991e666341f3a035ea7bbb59d575affd17da44503eb90209b30a05df2f1802620696e8fc8701afe1f0abfcd64e5e8250415f463e5934a2e82ac15234cba83
7
- data.tar.gz: 44d8592c747ac3d179b71a7bf05b35fa8e5b061969b7309f6b793df44135ff781d2d476a776e4f1431e214744188386e32aa875512f016589af62838f7709100
6
+ metadata.gz: d5d10546a4617918135c998db4e26d51a03519ac0ab48e41367c4da6064b2e771986af4aad1e5f2dcc757e152fa3a7791494517f58bd9de76faba22a6035395c
7
+ data.tar.gz: d7eafd0592fe84c0dfd8753a783cf9639eeb28cd803a80237a15ec70e49f23afe00934ff65a63691b8c50d1ad07b2aff1f3085ea890f4b8f042436dbb50f1924
@@ -22,7 +22,7 @@ module OpenHAB
22
22
  end
23
23
 
24
24
  def items
25
- @faraday.get("items").body
25
+ @faraday.get("items", metadata: ".*").body
26
26
  end
27
27
 
28
28
  def item(name)
@@ -15,10 +15,37 @@ module OpenHAB
15
15
  levels.each { |level| const_set(level, ch.qos.logback.classic.Level.const_get(level)) }
16
16
 
17
17
  extend Forwardable
18
- delegate %i[level level=] => :@sl4fj_logger
18
+ delegate %i[level] => :@sl4fj_logger
19
+
20
+ def level=(level)
21
+ if level.is_a?(String) || level.is_a?(Symbol)
22
+ level = ch.qos.logback.classic.Level.const_get(level.to_s.upcase, false)
23
+ end
24
+ @sl4fj_logger.level = level
25
+ end
26
+ end
27
+ end
28
+
29
+ module Log
30
+ class << self
31
+ def root
32
+ logger(org.slf4j.Logger::ROOT_LOGGER_NAME)
33
+ end
34
+
35
+ def events
36
+ logger("openhab.event")
37
+ end
38
+
39
+ def logger(object)
40
+ logger_name = case object
41
+ when String then object
42
+ else logger_name(object)
43
+ end
44
+ @loggers[logger_name] ||= Core::Logger.new(logger_name)
45
+ end
19
46
  end
20
47
  end
21
48
  end
22
49
 
23
- root_logger = org.slf4j.LoggerFactory.get_logger(org.slf4j.Logger::ROOT_LOGGER_NAME)
24
- root_logger.level = OpenHAB::Core::Logger::INFO
50
+ OpenHAB::Log.root.level = :info
51
+ OpenHAB::Log.events.level = :warn
@@ -129,12 +129,15 @@ module OpenHAB
129
129
  ep = org.openhab.core.internal.events.OSGiEventPublisher.new(ea)
130
130
 
131
131
  # the registries!
132
+ ss = VolatileStorageService.new
132
133
  mr = org.openhab.core.internal.items.MetadataRegistryImpl.new
133
134
  OpenHAB::Core::OSGI.register_service("org.openhab.core.items.MetadataRegistry", mr)
135
+ mr.managed_provider = mmp = org.openhab.core.internal.items.ManagedMetadataProviderImpl.new(ss)
136
+ mr.add_provider(mmp)
134
137
  ir = org.openhab.core.internal.items.ItemRegistryImpl.new(mr)
135
- ss = VolatileStorageService.new
136
138
  ir.managed_provider = mip = org.openhab.core.items.ManagedItemProvider.new(ss, nil)
137
139
  ir.add_provider(mip)
140
+ ir.event_publisher = ep
138
141
  tr = org.openhab.core.thing.internal.ThingRegistryImpl.new
139
142
  mtr = org.openhab.core.automation.internal.type.ModuleTypeRegistryImpl.new
140
143
  rr = org.openhab.core.automation.internal.RuleRegistryImpl.new
@@ -221,7 +224,12 @@ module OpenHAB
221
224
  re.add_module_handler_factory(cmhf)
222
225
  re.add_module_handler_factory(scmhf)
223
226
  re.add_module_handler_factory(spmhf)
224
- re.onReadyMarkerAdded(nil)
227
+ re.on_ready_marker_added(nil)
228
+
229
+ # enable event logging
230
+ el = org.openhab.core.io.monitor.internal.EventLogger.new(rs)
231
+ em.add_event_subscriber(el)
232
+ el.on_ready_marker_added(nil)
225
233
  end
226
234
  end
227
235
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module DSL
5
+ module Rules
6
+ class RuleConfig
7
+ # override on_start to never work
8
+ def on_start?
9
+ false
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module OpenHAB
5
+ module Items
6
+ module_function
7
+
8
+ # rubocop:disable Style/GlobalVars
9
+ def populate_items_from_api(api)
10
+ all_items = api.items
11
+ all_items.each do |item_json|
12
+ type, _dimension = item_json["type"].split(":")
13
+ if type == "Group"
14
+ if item_json["groupType"]
15
+ type, _dimension = item_json["groupType"].split(":")
16
+ klass = ::OpenHAB::DSL::Items.const_get(:"#{type}Item")
17
+ base_item = klass.new(item_json["name"])
18
+ end
19
+ # TODO: create group function
20
+ item = GroupItem.new(item_json["name"], base_item)
21
+ else
22
+ klass = ::OpenHAB::DSL::Items.const_get(:"#{type}Item")
23
+ item = klass.new(item_json["name"])
24
+ end
25
+
26
+ item.label = item_json["label"]
27
+ item_json["tags"].each do |tag|
28
+ item.add_tag(tag)
29
+ end
30
+ item_json["metadata"]&.each do |key, config|
31
+ item.meta[key] = config["value"], config["config"]
32
+ end
33
+
34
+ $ir.add(item)
35
+ end
36
+ all_items.each do |item_json| # rubocop:disable Style/CombinableLoops
37
+ item_json["groupNames"].each do |group_name|
38
+ next unless (group = $ir.get(group_name))
39
+
40
+ group.add_member($ir.get(item_json["name"]))
41
+ end
42
+ end
43
+ end
44
+ # rubocop:enable Style/GlobalVars
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.before(:each) do
5
+ $ir.for_each do |_provider, item| # rubocop:disable Style/GlobalVars
6
+ item.state = NULL # don't use update, to avoid triggering any rules
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module OpenHAB
5
+ module Trigger
6
+ def trigger_rule(rule_name, event = nil)
7
+ @rules ||= ::OpenHAB::DSL::Rules::Rule.script_rules.each_with_object({}) { |r, obj| obj[r.name] = r }
8
+
9
+ @rules.fetch(rule_name).execute(nil, { "event" => event })
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ RSpec.configure do |config|
16
+ config.include RSpec::OpenHAB::Trigger
17
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module OpenHAB
5
- VERSION = "0.0.1"
5
+ VERSION = "0.0.4"
6
6
  end
7
7
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module OpenHAB
5
+ module Wait
6
+ def wait_for_rules
7
+ loop do
8
+ sleep(0.1)
9
+ break if java.lang.Thread.all_stack_traces.keys.all? do |t|
10
+ !t.name.match?(/^OH-rule-/) ||
11
+ [java.lang.Thread::State::WAITING, java.lang.Thread::State::TIMED_WAITING].include?(t.state)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ RSpec.configure do |config|
20
+ config.include RSpec::OpenHAB::Wait
21
+ end
@@ -38,6 +38,7 @@ maven_require do
38
38
  require "jar org.openhab.core.bundles, org.openhab.core.automation, #{openhab_version}"
39
39
  require "jar org.openhab.core.bundles, org.openhab.core.automation.module.script, #{openhab_version}"
40
40
  require "jar org.openhab.core.bundles, org.openhab.core.automation.module.script.rulesupport, #{openhab_version}"
41
+ require "jar org.openhab.core.bundles, org.openhab.core.io.monitor, #{openhab_version}"
41
42
  require "jar org.openhab.core.bundles, org.openhab.core.model.core, #{openhab_version}"
42
43
  require "jar org.openhab.core.bundles, org.openhab.core.model.script, #{openhab_version}"
43
44
  require "jar org.openhab.core.bundles, org.openhab.core.semantics, #{openhab_version}"
@@ -68,40 +69,14 @@ require "rspec/openhab/core/cron_scheduler"
68
69
  OpenHAB::DSL.send(:remove_const, :Timer)
69
70
  require_relative "rspec/openhab/dsl/timers/timer"
70
71
 
71
- # rubocop:disable Style/GlobalVars
72
-
73
- # populate item registry
74
- all_items = api.items
75
- all_items.each do |item_json|
76
- type, _dimension = item_json["type"].split(":")
77
- if type == "Group"
78
- if item_json["groupType"]
79
- type, _dimension = item_json["groupType"].split(":")
80
- klass = OpenHAB::DSL::Items.const_get(:"#{type}Item")
81
- base_item = klass.new(item_json["name"])
82
- end
83
- # TODO: create group function
84
- item = GroupItem.new(item_json["name"], base_item)
85
- else
86
- klass = OpenHAB::DSL::Items.const_get(:"#{type}Item")
87
- item = klass.new(item_json["name"])
88
- end
89
-
90
- item.label = item_json["label"]
91
- item_json["tags"].each do |tag|
92
- item.add_tag(tag)
93
- end
94
- $ir.add(item)
95
- end
96
- all_items.each do |item_json| # rubocop:disable Style/CombinableLoops
97
- item_json["groupNames"].each do |group_name|
98
- next unless (group = $ir.get(group_name))
99
-
100
- group.add_member($ir.get(item_json["name"]))
101
- end
102
- end
72
+ # RSpec additions
73
+ require "rspec/openhab/dsl/rules/rspec"
74
+ require "rspec/openhab/state"
75
+ require "rspec/openhab/trigger"
76
+ require "rspec/openhab/wait"
77
+ require "rspec/openhab/items"
103
78
 
104
- # rubocop:enable Style/GlobalVars
79
+ RSpec::OpenHAB::Items.populate_items_from_api(api)
105
80
 
106
81
  # load rules files
107
82
  OPENHAB_AUTOMATION_PATH = "#{org.openhab.core.OpenHAB.config_folder}/automation/jsr223/ruby/personal"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.4
5
5
  platform: java
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-30 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -167,8 +167,13 @@ files:
167
167
  - lib/rspec/openhab/core/osgi.rb
168
168
  - lib/rspec/openhab/core/script_handling.rb
169
169
  - lib/rspec/openhab/dsl/imports.rb
170
+ - lib/rspec/openhab/dsl/rules/rspec.rb
170
171
  - lib/rspec/openhab/dsl/timers/timer.rb
172
+ - lib/rspec/openhab/items.rb
173
+ - lib/rspec/openhab/state.rb
174
+ - lib/rspec/openhab/trigger.rb
171
175
  - lib/rspec/openhab/version.rb
176
+ - lib/rspec/openhab/wait.rb
172
177
  - vendor/gems/jar-dependencies-1.0.0/lib/jar-dependencies.rb
173
178
  - vendor/gems/jar-dependencies-1.0.0/lib/jar_dependencies.rb
174
179
  - vendor/gems/jar-dependencies-1.0.0/lib/jar_install_post_install_hook.rb