mrw-uppercut 0.0.1.pre1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+
4
+ describe Uppercut::Conversation do
5
+ before(:each) do
6
+ @conv = Uppercut::Conversation.new('test@foo.com', nil)
7
+ end
8
+
9
+ describe :contact do
10
+ it "should have a contact method" do
11
+ @conv.should.respond_to?(:contact)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,121 @@
1
+ Object.send(:remove_const, :Jabber)
2
+ class Jabber
3
+ class Client
4
+ def initialize(user)
5
+ @user = user
6
+ end
7
+
8
+ def connect
9
+ @connected = true
10
+ end
11
+
12
+ def auth(pw)
13
+ @pw = pw
14
+ end
15
+
16
+ def is_connected?
17
+ @connected
18
+ end
19
+
20
+ def close
21
+ @connected = nil
22
+ end
23
+
24
+ attr_reader :sent
25
+ def send(msg)
26
+ @sent ||= []
27
+ @sent << msg
28
+ end
29
+
30
+ attr_reader :on_message
31
+ def add_message_callback(&block)
32
+ @on_message = block
33
+ end
34
+
35
+
36
+
37
+ # TESTING HELPER METHODS
38
+
39
+ def receive_message(from, body, type=:chat)
40
+ msg = Message.new(nil)
41
+ msg.type = type
42
+ msg.body = body
43
+ msg.from = from
44
+ @on_message[msg]
45
+ end
46
+ end
47
+
48
+ class Presence
49
+ attr_accessor :from, :type, :show, :status
50
+
51
+ def initialize(a, b)
52
+ end
53
+ end
54
+
55
+ class Message
56
+ attr_accessor :type, :body, :from
57
+ def initialize(to)
58
+ @to = to
59
+ end
60
+ end
61
+
62
+ class Roster
63
+ class Helper
64
+ class RosterItem
65
+ attr_accessor :subscription
66
+ end
67
+
68
+ def initialize(client)
69
+ @client = client
70
+ end
71
+
72
+ def accept_subscription(a)
73
+ end
74
+
75
+ def add(a)
76
+ end
77
+
78
+ attr_reader :on_subscription_request
79
+ def add_subscription_request_callback(&block)
80
+ @on_subscription_request = block
81
+ end
82
+
83
+ def add_presence_callback(&block)
84
+ @on_presence = block
85
+ end
86
+
87
+ def add_subscription_callback(&block)
88
+ @on_subscription = block
89
+ end
90
+
91
+ # TESTING HELPER METHODS
92
+
93
+ def receive_presence(item, old_presence, new_presence)
94
+ @on_presence[item, old_presence, new_presence]
95
+ end
96
+
97
+ def receive_subscription(item, presence)
98
+ @on_subscription[item, presence]
99
+ end
100
+
101
+ def receive_subscription_request(item, presence)
102
+ @on_subscription_request[item, presence]
103
+ end
104
+ end
105
+ end
106
+
107
+ class JID
108
+ def self.fake_jid
109
+ new 'foo', 'bar.com', 'baz'
110
+ end
111
+
112
+ def initialize(node, domain, res)
113
+ @node, @domain, @res = node, domain, res
114
+ end
115
+
116
+ def bare
117
+ self.class.new @node, @domain, nil
118
+ end
119
+ end
120
+ end
121
+
@@ -0,0 +1,85 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe Uppercut::Notifier do
4
+ before :each do
5
+ @notifier = TestNotifier.new('test@foo.com', 'pw', :connect => false)
6
+ end
7
+
8
+ describe :new do
9
+ it "connects by default" do
10
+ notifier = Uppercut::Notifier.new('test@foo', 'pw')
11
+ notifier.should be_connected
12
+ end
13
+
14
+ it "does not connect by default with :connect = false" do
15
+ notifier = Uppercut::Notifier.new('test@foo', 'pw', :connect => false)
16
+ notifier.should_not be_connected
17
+ end
18
+
19
+ it "populates @pw and @user" do
20
+ notifier = Uppercut::Notifier.new('test@foo', 'pw')
21
+ notifier.instance_eval { @pw }.should == 'pw'
22
+ notifier.instance_eval { @user }.should == 'test@foo'
23
+ end
24
+ end
25
+
26
+ describe :connect do
27
+ it "does not try to connect if already connected" do
28
+ @notifier.connect
29
+ old_client = @notifier.client
30
+
31
+ @notifier.connect
32
+ (@notifier.client == old_client).should == true
33
+ end
34
+
35
+ it "connects if disconnected" do
36
+ @notifier.should_not be_connected
37
+
38
+ old_client = @notifier.client
39
+
40
+ @notifier.connect
41
+ (@notifier.client == old_client).should_not == true
42
+ end
43
+
44
+ it "sends a Presence notification" do
45
+ @notifier.connect
46
+ @notifier.client.sent.first.class.should == Jabber::Presence
47
+ end
48
+ end
49
+
50
+ describe :disconnect do
51
+ it "does not try to disconnect if not connected" do
52
+ @notifier.client.should be_nil
53
+ @notifier.instance_eval { @client = :foo }
54
+
55
+ @notifier.disconnect
56
+ @notifier.client.should == :foo
57
+ end
58
+
59
+ it "sets @client to nil" do
60
+ @notifier.connect
61
+ @notifier.client.should_not be_nil
62
+
63
+ @notifier.disconnect
64
+ @notifier.client.should be_nil
65
+ end
66
+ end
67
+
68
+ describe :reconnect do
69
+ it "calls disconnect then connect" do
70
+ @notifier.should_receive(:disconnect).once.ordered
71
+ @notifier.should_receive(:connect).once.ordered
72
+
73
+ @notifier.reconnect
74
+ end
75
+ end
76
+
77
+ describe :connected? do
78
+ it "returns true if client#is_connected? is true" do
79
+ @notifier.connect
80
+ @notifier.client.instance_eval { @connected = true }
81
+ @notifier.should be_connected
82
+ end
83
+ end
84
+
85
+ end
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'set'
4
+
5
+ $: << File.dirname(__FILE__)
6
+ $: << File.join(File.dirname(__FILE__), '../lib')
7
+
8
+ # Loads uppercut and jabber
9
+ require 'uppercut'
10
+
11
+ # Unloads jabber, replacing it with a stub
12
+ require 'jabber_stub'
13
+
14
+ class TestAgent < Uppercut::Agent
15
+ command 'hi' do |c, args|
16
+ c.instance_eval { @base.instance_eval { @called_hi = true } }
17
+ c.send 'called hi'
18
+ end
19
+
20
+ command /^hi/ do |c, args|
21
+ c.instance_eval { @base.instance_eval { @called_hi_regex = true } }
22
+ c.send 'called hi regex'
23
+ end
24
+
25
+ command 'hello' do |c|
26
+ c.instance_eval { @base.instance_eval { @called_hello = true } }
27
+ c.send 'called hello'
28
+ end
29
+
30
+ command /^hello i am (.*), your (.*)/ do |c, name, relation|
31
+ c.instance_eval { @base.instance_eval { @called_hello_regex = "#{name} is a my #{relation}" } }
32
+ c.send 'called hello regex'
33
+ end
34
+
35
+ Uppercut::Agent::VALID_CALLBACKS.each do |cb|
36
+ on(cb) do |c, presence|
37
+ c.instance_eval { @base.instance_eval { @last_callback = cb.to_sym } }
38
+ end
39
+ end
40
+
41
+ command 'salve' do
42
+ instance_eval { @base.instance_eval { @called_salve = true } }
43
+ send 'called salve'
44
+ end
45
+ end
46
+
47
+ class FrenchTestAgent < Uppercut::Agent
48
+ command 'salut' do |c, args|
49
+ c.instance_eval { @base.instance_eval { @called_salut = true } }
50
+ c.send 'called salut'
51
+ end
52
+ end
53
+
54
+ class TestNotifier < Uppercut::Notifier
55
+ notifier :foo do |m, data|
56
+ m.to = 'foo@bar.com'
57
+ m.send 'Foo happened!'
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mrw-uppercut
3
+ version: !ruby/object:Gem::Version
4
+ hash: -1876988188
5
+ prerelease: true
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ - pre1
11
+ version: 0.0.1.pre1
12
+ platform: ruby
13
+ authors:
14
+ - Tyler McMullen
15
+ - Others
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2008-12-27 00:00:00 +00:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: xmpp4r
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 3
32
+ segments:
33
+ - 0
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: |
38
+ A DSL for writing agents and notifiers for Jabber.
39
+ This is a modified version incorporating changes from
40
+ https://github.com/yolk/uppercut.
41
+
42
+ email:
43
+ executables: []
44
+
45
+ extensions: []
46
+
47
+ extra_rdoc_files: []
48
+
49
+ files:
50
+ - README.textile
51
+ - VERSION.yml
52
+ - lib/uppercut/agent.rb
53
+ - lib/uppercut/base.rb
54
+ - lib/uppercut/conversation.rb
55
+ - lib/uppercut/message.rb
56
+ - lib/uppercut/notifier.rb
57
+ - lib/uppercut.rb
58
+ - spec/agent_spec.rb
59
+ - spec/conversation_spec.rb
60
+ - spec/jabber_stub.rb
61
+ - spec/notifier_spec.rb
62
+ - spec/spec_helper.rb
63
+ - examples/basic_agent.rb
64
+ - examples/personal.rb
65
+ has_rdoc: true
66
+ homepage: http://github.com/tyler/uppercut
67
+ licenses: []
68
+
69
+ post_install_message:
70
+ rdoc_options: []
71
+
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ requirements: []
93
+
94
+ rubyforge_project:
95
+ rubygems_version: 1.3.7
96
+ signing_key:
97
+ specification_version: 2
98
+ summary: A DSL for writing agents and notifiers for Jabber.
99
+ test_files: []
100
+