foreign_office 0.16.2 → 0.16.3

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
  SHA1:
3
- metadata.gz: 9c6e3c9ceacb6bf37e6a7c2b590b0f3057d1851f
4
- data.tar.gz: 9b291b3e4b58496af545267d1b03b156ac69f232
3
+ metadata.gz: 9dcd8f2b90d4074f1ca898d3c1e15119e2524dd1
4
+ data.tar.gz: 7cc327155c63a6b0a081e9a43e596a56bad97feb
5
5
  SHA512:
6
- metadata.gz: 1160326d1a4c1e3d9c7ac7535992c307590d3fb13962ac0c83075351a02adb579813001786f07f88274f2d29bce9fb3cd11737f8791cbe4fdb90e5024b6eb084
7
- data.tar.gz: 5de38982be1a33749ea591b941d2f778214a23f2c9a1fec99bb043bec8a7a1f641b517b0fda98f5a7572e72797ed633a86d4bd07d1fe2715f6f97a9840f647c6
6
+ metadata.gz: 79fb12070d6bf97c9c6d2fa31531790459e1cc8ac79d00762da6706b4786edf146e6cfcc3d0ffc60d96c2eb5be1020b9ed9d521930423b1864a0a30e88ecca9a
7
+ data.tar.gz: 3d197949fcfd7ae17cd27a605364f48a0d63325d881651140a5ce91ccfd1b8f67a2ae6487d281ebb39d9f19d60352f499a0756a866492ef0daf76e4e05ac6609
@@ -40,9 +40,14 @@ class ForeignOffice::Busses::PubnubBus < ForeignOffice::Busses::GenericBus
40
40
  end
41
41
 
42
42
  def self.publish(message)
43
- message.symbolize_keys!
43
+ channel = message[:channel]
44
+
45
+ if browser_tab_id = message[:browser_tab_id]
46
+ channel += "@#{browser_tab_id}"
47
+ end
48
+
44
49
  self.connection.publish(
45
- channel: message[:channel],
50
+ channel: channel,
46
51
  message: message,
47
52
  http_sync: true
48
53
  ) do |envelope|
@@ -35,6 +35,11 @@ class ForeignOffice::Busses::PusherBus < ForeignOffice::Busses::GenericBus
35
35
  def self.publish(message)
36
36
  message.symbolize_keys!
37
37
  channel = sanitize_channel(message[:channel])
38
+
39
+ if browser_tab_id = message[:browser_tab_id]
40
+ channel += "@#{browser_tab_id}"
41
+ end
42
+
38
43
  self.connection.trigger(
39
44
  channel,
40
45
  'publish',
@@ -2,8 +2,10 @@ module ForeignOffice
2
2
  module ForeignOfficeHelper
3
3
  def listener_attrs(resource, key, reveal_hide: false, endpoint: nil, download: nil,
4
4
  trigger: nil, delete: nil, href_target: nil, create_modal: nil, mask_me: nil,
5
- exclude_value: nil)
6
- data_attrs = "data-listener=true data-channel=#{resource.class.name}#{resource.id}"
5
+ exclude_value: nil, browser_tab_id: nil )
6
+ channel = "#{resource.class.name}#{resource.id}"
7
+ channel += "@#{browser_tab_id}" if browser_tab_id
8
+ data_attrs = "data-listener=true data-channel=#{channel}"
7
9
  if delete
8
10
  data_attrs += " data-delete-key=#{key}"
9
11
  else
@@ -27,7 +29,8 @@ module ForeignOffice
27
29
 
28
30
  def listener_attrs_raw(channel, key, reveal_hide: false, endpoint: nil, download: nil,
29
31
  trigger: nil, delete: nil, href_target: nil, create_modal: nil, mask_me: nil,
30
- exclude_value: nil)
32
+ exclude_value: nil, browser_tab_id: nil)
33
+ channel += "@#{browser_tab_id}" if browser_tab_id
31
34
  data_attrs = "data-listener=true data-channel=#{channel}"
32
35
  if delete
33
36
  data_attrs += " data-delete-key=#{key}"
@@ -47,8 +50,10 @@ module ForeignOffice
47
50
 
48
51
  def listener_hash(resource, key, reveal_hide: false, endpoint: nil, download: nil,
49
52
  trigger: nil, delete: nil, href_target: nil, create_modal: nil, mask_me: nil,
50
- exclude_value: nil)
51
- hash = {listener: true, channel: resource.class.name + resource.id.to_s}
53
+ exclude_value: nil, browser_tab_id: nil)
54
+ channel = resource.class.name + resource.id
55
+ channel += "@#{browser_tab_id}" if browser_tab_id
56
+ hash = {listener: true, channel: channel}
52
57
  if delete
53
58
  hash[:delete_key] = key
54
59
  else
@@ -67,7 +72,8 @@ module ForeignOffice
67
72
 
68
73
  def listener_hash_raw(channel, key, reveal_hide: false, endpoint: nil, download: nil,
69
74
  trigger: nil, delete: nil, href_target: nil, create_modal: nil, mask_me: nil,
70
- exclude_value: nil)
75
+ exclude_value: nil, browser_tab_id: nil)
76
+ channel += "@#{browser_tab_id}" if browser_tab_id
71
77
  hash = {listener: true, channel: channel}
72
78
  if delete
73
79
  hash[:delete_key] = key
@@ -1,3 +1,3 @@
1
1
  module ForeignOffice
2
- VERSION = "0.16.2"
2
+ VERSION = "0.16.3"
3
3
  end
@@ -2,12 +2,10 @@ require 'test_helper'
2
2
 
3
3
  class ForeignOfficeTest < MiniTest::Unit::TestCase
4
4
  describe "ForeignOffice" do
5
- before do
6
- @bus = Minitest::Mock.new
7
- ForeignOffice.bus = @bus
8
- end
9
5
  describe "caches messages when asked" do
10
6
  before do
7
+ @bus = Minitest::Mock.new
8
+ ForeignOffice.bus = @bus
11
9
  ForeignOffice.cache_messages
12
10
  end
13
11
  it "caches multiple messages" do
@@ -30,6 +28,10 @@ class ForeignOfficeTest < MiniTest::Unit::TestCase
30
28
  end
31
29
  end
32
30
  describe "doesn't have to cache" do
31
+ before do
32
+ @bus = Minitest::Mock.new
33
+ ForeignOffice.bus = @bus
34
+ end
33
35
  it "publishes messages directly when not caching" do
34
36
  ForeignOffice.publish_directly
35
37
  @bus.expect :publish, nil, [{channel: 'TestMe', object: {this: 'is a test'}}]
@@ -38,6 +40,10 @@ class ForeignOfficeTest < MiniTest::Unit::TestCase
38
40
  end
39
41
  end
40
42
  describe "offers custom publishing" do
43
+ before do
44
+ @bus = Minitest::Mock.new
45
+ ForeignOffice.bus = @bus
46
+ end
41
47
  it "publishes with a custom method if provided" do
42
48
  ForeignOffice.publish_directly
43
49
  @bus.expect :custom_publish, nil, [{channel: 'TestMe', object: {this: 'is a test'}}]
@@ -47,5 +53,58 @@ class ForeignOfficeTest < MiniTest::Unit::TestCase
47
53
  ForeignOffice.unset_publish_method
48
54
  end
49
55
  end
56
+ describe "passing browser tab id to pusher" do
57
+ before do
58
+ ForeignOffice.unset_publish_method
59
+ ForeignOffice.publish_directly
60
+ end
61
+
62
+ it "publishes with browser id appended" do
63
+ ForeignOffice.config({bus: {klass: ForeignOffice::Busses::PusherBus}})
64
+ resp = ForeignOffice.publish({channel: "TestMe", object: {this: 'is a test'}, browser_tab_id: 'tab-id-123'})
65
+ resp[:channel].must_equal("TestMe@tab-id-123")
66
+ end
67
+
68
+ it "published without browser id appended" do
69
+ ForeignOffice.config({bus: {klass: ForeignOffice::Busses::PusherBus}})
70
+ resp = ForeignOffice.publish({channel: "TestMe", object: {this: 'is a test'}})
71
+ resp[:channel].must_equal("TestMe")
72
+ end
73
+ end
74
+ describe "passing browser tab id to pubnub" do
75
+ before do
76
+ ForeignOffice.unset_publish_method
77
+ ForeignOffice.publish_directly
78
+ end
79
+
80
+ it "published with browser id appended" do
81
+ ForeignOffice.config(
82
+ {
83
+ bus: {
84
+ klass: ForeignOffice::Busses::PubnubBus,
85
+ publish_key: "1234",
86
+ subscribe_key: '5678',
87
+ secret_key: '91011'
88
+ }
89
+ }
90
+ )
91
+ resp = ForeignOffice.publish({channel: "TestMe", object: {this: 'is a test'}, browser_tab_id: 'tab-id-123'})
92
+ resp[:channel].must_equal "TestMe@tab-id-123"
93
+ end
94
+ it "published without browser id appended" do
95
+ ForeignOffice.config(
96
+ {
97
+ bus: {
98
+ klass: ForeignOffice::Busses::PubnubBus,
99
+ publish_key: "1234",
100
+ subscribe_key: '5678',
101
+ secret_key: '91011'
102
+ }
103
+ }
104
+ )
105
+ resp = ForeignOffice.publish({channel: "TestMe", object: {this: 'is a test'}})
106
+ resp[:channel].must_equal "TestMe"
107
+ end
108
+ end
50
109
  end
51
110
  end
@@ -0,0 +1,15 @@
1
+ class Pubnub
2
+ def initialize(hash)
3
+ @publish_key = hash[:publish_key]
4
+ @subscribe_key = hash[:subscribe_key]
5
+ @secret_key = hash[:secret_key]
6
+ @ssl = true
7
+ end
8
+
9
+ def publish(message)
10
+ return {
11
+ channel: message[:channel],
12
+ message: message[:message]
13
+ }
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ class Pusher
2
+ def self.encrypted=(bool)
3
+ @encrypt = bool
4
+ end
5
+
6
+ def self.encrypted
7
+ @encrypt
8
+ end
9
+
10
+ def self.trigger(channel, command, message)
11
+ return {
12
+ channel: channel,
13
+ command: command,
14
+ message: message,
15
+ }
16
+ end
17
+ end
data/test/test_helper.rb CHANGED
@@ -12,6 +12,7 @@ Rails.backtrace_cleaner.remove_silencers!
12
12
  # Load support files
13
13
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
14
 
15
+ Dir[Rails.root.join("test/support/*.rb")].each {|f| require f}
15
16
  # Load fixtures from the engine
16
17
  if ActiveSupport::TestCase.method_defined?(:fixture_path=)
17
18
  ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreign_office
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.16.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
@@ -136,6 +136,8 @@ files:
136
136
  - test/dummy/public/500.html
137
137
  - test/dummy/public/favicon.ico
138
138
  - test/foreign_office_test.rb
139
+ - test/support/pubnub.rb
140
+ - test/support/pusher.rb
139
141
  - test/test_helper.rb
140
142
  homepage: http://edraut.github.io/foreign-office
141
143
  licenses:
@@ -200,4 +202,6 @@ test_files:
200
202
  - test/dummy/Rakefile
201
203
  - test/dummy/README.rdoc
202
204
  - test/foreign_office_test.rb
205
+ - test/support/pubnub.rb
206
+ - test/support/pusher.rb
203
207
  - test/test_helper.rb