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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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