anyt 0.8.1 → 0.8.2

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: 6e638c537e69dc1a664f30c53781c04706c8e08c317badda109e877984742863
4
- data.tar.gz: 850d0dd0c56839c8c92e418516d520a044e6d6d1e835a23d73a0590541e15d48
3
+ metadata.gz: b518f7b895effeba08e97fd20a64dee5c7e0a09faff5b9df9072ae76cb9f02fa
4
+ data.tar.gz: fd4f53b7cb1601fa652e1d74d87b79081721ad2e1ed7e18dec93ca976a787a1f
5
5
  SHA512:
6
- metadata.gz: 2ea1aaea3191e20871dc74547a2bea9239202f0bc6ce1392c9a1f180e6ae0a3512b79ee40fe1c8f5cbf9076a7b53767f7c83136cd0798a127e62589094420e21
7
- data.tar.gz: df2c10e408e26b02cf60d697d675ea2716368d0f3e23b722d6b97bbd982d3159af6d787fad0e0abec7a303b1cc0a08920d90b3fe845ac4c3e657badd138ba558
6
+ metadata.gz: b8ab2923833c1a868ec9cb2e3c6532d9990c43fb95aa58cd1819bd904409e45b753be2ec8497ed23bc5c1e4a18ba6aa9802068852f8ebca08d60fc0c5b683914
7
+ data.tar.gz: f15eadfbc5f611697ad4bf25f0ec41ddc39e60f7389074a88a6e8ad6aada7de5301e10ba68e512deadb643d6e3b20c0496dbaa6f04d997086520da9c3d1083a6
data/Makefile CHANGED
@@ -2,4 +2,4 @@ lint:
2
2
  bundle exec rubocop
3
3
 
4
4
  test:
5
- bin/anyt --self-check
5
+ bin/anyt --self-check --require=etc/tests/*.rb
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ feature "Broadcast data from channel" do
4
+ channel do
5
+ def subscribed
6
+ stream_from "a"
7
+ end
8
+
9
+ def speak(msg)
10
+ ActionCable.server.broadcast "a", text: msg["msg"]
11
+ end
12
+ end
13
+
14
+ let(:client2) { build_client(ignore: %w[ping welcome]) }
15
+
16
+ before do
17
+ subscribe_request = { command: "subscribe", identifier: { channel: channel }.to_json }
18
+
19
+ client.send(subscribe_request)
20
+ client2.send(subscribe_request)
21
+
22
+ ack = {
23
+ "identifier" => { channel: channel }.to_json, "type" => "confirm_subscription"
24
+ }
25
+
26
+ assert_equal ack, client.receive
27
+ assert_equal ack, client2.receive
28
+ end
29
+
30
+ scenario %{
31
+ Multiple clients receive messages from stream
32
+ } do
33
+ perform_request = {
34
+ command: "message",
35
+ identifier: { channel: channel }.to_json,
36
+ "data" => { "action" => "speak", "msg" => "hey there!"}.to_json
37
+ }
38
+
39
+ client.send(perform_request)
40
+
41
+ msg = {
42
+ "identifier" => { channel: channel }.to_json,
43
+ "message" => {
44
+ "text" => "hey there!"
45
+ }
46
+ }
47
+
48
+ assert_equal msg, client.receive
49
+ assert_equal msg, client2.receive
50
+ end
51
+ end
@@ -3,6 +3,7 @@
3
3
  require "logger"
4
4
  require "optparse"
5
5
 
6
+ require "anyt/version"
6
7
  require "anyt/rpc"
7
8
  require "anyt/command"
8
9
  require "anyt/tests"
@@ -20,6 +21,8 @@ module Anyt
20
21
  ActionCable.server.config.logger = Rails.logger = AnyCable.logger
21
22
 
22
23
  result = 1
24
+
25
+ $stdout.puts "Starting AnyT v#{Anyt::VERSION} (pid: #{Process.pid})\n"
23
26
 
24
27
  begin
25
28
  # Load all test scenarios
@@ -92,6 +95,12 @@ module Anyt
92
95
  Anyt.config.wait_command = timeout
93
96
  end
94
97
 
98
+ cli.on("-rPATH", "--require=PATH",
99
+ "Path to additional tests (e.g. features/*.rb") do |path|
100
+ Anyt.config.tests_relative_path = path
101
+ ENV["ANYT_TESTS_RELATIVE_PATH"] = path
102
+ end
103
+
95
104
  cli.on("--debug", "Enable debug mode.") do
96
105
  AnyCable.config.debug = true
97
106
  end
@@ -7,9 +7,16 @@ module Anyt
7
7
  class Config < Anyway::Config
8
8
  attr_config :command,
9
9
  :only_tests,
10
+ :tests_relative_path,
10
11
  target_url: "ws://localhost:9292/cable",
11
12
  wait_command: 2
12
13
 
14
+ def tests_path
15
+ return unless tests_relative_path
16
+
17
+ File.expand_path(tests_relative_path, Dir.pwd)
18
+ end
19
+
13
20
  def filter_tests?
14
21
  !only_tests.nil?
15
22
  end
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "anyt"
4
+ require "anyt/client"
5
+ require_relative "ext/minitest"
6
+
3
7
  module Anyt
4
8
  # Loads and runs test cases
5
9
  module Tests
6
- require "anyt/client"
7
- require_relative "ext/minitest"
8
-
9
10
  class << self
11
+ DEFAULT_PATTERNS = [
12
+ File.expand_path("tests/**/*.rb", __dir__)
13
+ ].freeze
14
+
10
15
  # Run all loaded tests
11
16
  def run
12
17
  Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
@@ -24,15 +29,16 @@ module Anyt
24
29
  def load_tests
25
30
  return load_all_tests unless Anyt.config.filter_tests?
26
31
 
27
- pattern = File.expand_path("tests/**/*.rb", __dir__)
28
32
  skipped = []
29
33
  filter = Anyt.config.tests_filter
30
34
 
31
- Dir.glob(pattern).each do |file|
32
- if file.match?(filter)
33
- require file
34
- else
35
- skipped << file.gsub(File.join(__dir__, 'tests/'), '').gsub('_test.rb', '')
35
+ test_files_patterns.each do |pattern|
36
+ Dir.glob(pattern).each do |file|
37
+ if file.match?(filter)
38
+ require file
39
+ else
40
+ skipped << file.gsub(File.join(__dir__, 'tests/'), '').gsub('_test.rb', '')
41
+ end
36
42
  end
37
43
  end
38
44
 
@@ -41,9 +47,17 @@ module Anyt
41
47
 
42
48
  # Load all test files
43
49
  def load_all_tests
44
- pattern = File.expand_path("tests/**/*.rb", __dir__)
50
+ test_files_patterns.each do |pattern|
51
+ Dir.glob(pattern).each { |file| require file }
52
+ end
53
+ end
54
+
55
+ private
45
56
 
46
- Dir.glob(pattern).each { |file| require file }
57
+ def test_files_patterns
58
+ @test_files_patterns ||= DEFAULT_PATTERNS.dup.tap do |patterns|
59
+ patterns << Anyt.config.tests_path if Anyt.config.tests_path
60
+ end
47
61
  end
48
62
  end
49
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Anyt
4
- VERSION = "0.8.1"
4
+ VERSION = "0.8.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anyt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
@@ -254,6 +254,7 @@ files:
254
254
  - bin/console
255
255
  - bin/setup
256
256
  - circle.yml
257
+ - etc/tests/channel_broadcast_test.rb
257
258
  - lib/anyt.rb
258
259
  - lib/anyt/cli.rb
259
260
  - lib/anyt/client.rb