pushover 0.5.0 → 0.5.1

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.
@@ -0,0 +1,11 @@
1
+ bundler_args: --without development
2
+
3
+ rvm:
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - rbx-19mode
7
+
8
+ branches:
9
+ only:
10
+ - master
11
+ - development
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
- gem "pry"
6
+ gem "pry"
7
7
  gem "pry-debugger"
8
8
  gem "redcarpet"
9
9
  gem "guard"
@@ -11,14 +11,18 @@ group :development do
11
11
  gem "guard-rspec"
12
12
  gem "guard-yard"
13
13
  gem "guard-shell"
14
- gem 'libnotify', :require => false
15
- gem 'growl', :require => false
16
- gem 'rb-inotify', :require => false
14
+ gem 'libnotify', :require => false
15
+ gem 'growl', :require => false
16
+ gem 'rb-inotify', :require => false
17
17
  gem 'rb-fsevent', :require => false
18
18
  gem 'rb-fchange', :require => false
19
19
  end
20
20
 
21
21
  group :test do
22
- gem "rspec"
23
- gem "rake"
22
+ gem "rspec"
23
+ gem "rake"
24
+ gem "webmock"
25
+ gem 'simplecov', :require => false
26
+ gem 'simplecov-rcov', :require => false
24
27
  end
28
+
data/Guardfile CHANGED
@@ -1,6 +1,4 @@
1
1
  #!/usr/bin/ruby
2
- # A sample Guardfile
3
- # More info at https://github.com/guard/guard#readme
4
2
 
5
3
  guard :bundler do
6
4
  watch 'Gemfile'
data/README.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  This gem provides a CLI and an API interface to http://pushover.net.
4
4
 
5
+ #### Build Status
6
+ <table border="0">
7
+ <tr>
8
+ <td>master</td>
9
+ <td><a href=http://travis-ci.org/erniebrodeur/pushover?branch=master><img src="https://secure.travis-ci.org/erniebrodeur/pushover.png?branch=master"/></h> </td>
10
+ </tr>
11
+ <tr>
12
+ <td>development</td>
13
+ <td><a href=http://travis-ci.org/erniebrodeur/pushover?branch=development><img src="https://secure.travis-ci.org/erniebrodeur/pushover.png?branch=development"/></h> </td>
14
+ </tr>
15
+ </table>
16
+
5
17
  ## Installation
6
18
 
7
19
  To install:
@@ -54,9 +54,9 @@ module Pushover
54
54
 
55
55
  # List available parameters and values in those params
56
56
  def parameters
57
- @values = {}
58
- keys.each { |k| @values.merge! k => get_var("@#{k}") }
59
- @values
57
+ h = {}
58
+ keys.each { |k| h[k.to_sym] = Pushover.instance_variable_get("@#{k}") }
59
+ return h
60
60
  end
61
61
  alias_method :params, :parameters
62
62
 
@@ -65,16 +65,16 @@ module Pushover
65
65
  parameters.values.all?
66
66
  end
67
67
 
68
+ # Clear all the currently set parameters
69
+ def clear
70
+ keys.each do |k|
71
+ Pushover.instance_variable_set("@#{k}", nil)
72
+ end
73
+ end
74
+
68
75
  # A [Array] of keys available in Pushover.
69
76
  def keys
70
77
  keys ||= [:token, :user, :message, :title, :priority, :device]
71
78
  end
72
-
73
- private
74
-
75
- # Helper to clean up recursive method in #parameters
76
- def get_var(var)
77
- self.instance_variable_get(var)
78
- end
79
-
80
79
  end
80
+
@@ -14,11 +14,7 @@ module Pushover
14
14
  @name = name
15
15
  @api_key = api_key
16
16
  Bini.config[:applications] = {} if !Bini.config[:applications]
17
- if name
18
- Bini.config[:applications][name] = api_key
19
- else
20
- Bini.config[:applications][api_key] = api_key
21
- end
17
+ Bini.config[:applications][name] = api_key
22
18
  end
23
19
  end
24
20
 
@@ -28,7 +24,7 @@ module Pushover
28
24
  # @param [String] word the search token, can be an apikey or appname.
29
25
  # @return [String] return the apikey (if it can find one) or the word itself.
30
26
  def find(word)
31
- return Bini.config[:applications][word] if Bini.config[:applications][word]
27
+ return Bini.config[:applications][word] if Bini.config[:applications] && Bini.config[:applications][word]
32
28
  word
33
29
  end
34
30
 
@@ -46,23 +42,25 @@ module Pushover
46
42
  end
47
43
  # Return the current app selected, or the first one saved.
48
44
  def current_app
49
- return @current_app if @current_app
50
-
51
45
  # did something get supplied on the cli? try to find it.
52
- if Options[:appkey]
53
- @current_app = find Options[:appkey]
46
+ if Bini::Options[:apikey]
47
+ @current_app = find Bini::Options[:apikey]
54
48
  end
55
49
 
56
50
  # no? do we have anything we can return?
57
51
  if !@current_app
58
- @current_app = find Bini.config[:applications].first[0]
52
+ @current_app = find Bini.config[:applications].first[0] if Bini.config[:applications]
59
53
  end
60
54
  @current_app
61
55
  end
62
56
 
57
+ def current_app=(app)
58
+ @current_app = app
59
+ end
60
+
63
61
  # Will return true if we can find an application either via the cli or save file.
64
62
  def current_app?
65
- return true if current_app
63
+ return true if @current_app
66
64
  return nil
67
65
  end
68
66
  end
@@ -25,7 +25,7 @@ module Pushover
25
25
  # @param [String] word the search token, can be an apikey or appname.
26
26
  # @return [String] return the apikey (if it can find one) or the word itself.
27
27
  def find(word)
28
- return Bini.config[:users][word] if Bini.config[:users][word]
28
+ return Bini.config[:users][word] if Bini.config[:users] && Bini.config[:users][word]
29
29
  word
30
30
  end
31
31
 
@@ -44,23 +44,26 @@ module Pushover
44
44
 
45
45
  # Return the current user selected, or the first one saved.
46
46
  def current_user
47
- return @current_user if @current_user
48
-
49
47
  # did something get supplied on the cli? try to find it.
50
- if Options[:user]
51
- @current_user = find Options[:user]
48
+ if Bini::Options[:token]
49
+ @current_user = find Bini::Options[:token]
52
50
  end
53
51
 
54
52
  # no? do we have anything we can return?
55
53
  if !@current_user
56
- @current_user = find Bini.config[:users].first[0]
54
+ @current_user = find Bini.config[:users].first[0] if Bini.config[:users]
57
55
  end
58
56
  @current_user
59
57
  end
60
58
 
59
+ # Set the current_user to whatever you want it to be.
60
+ def current_user=(user)
61
+ @current_user = user
62
+ end
63
+
61
64
  # Will return true if it can find a user either via the cli or save file.
62
65
  def current_user?
63
- return true if current_user
66
+ return true if @current_user
64
67
  return nil
65
68
  end
66
69
  end
@@ -1,4 +1,4 @@
1
1
  module Pushover
2
2
  # The current version of Pushover.
3
- VERSION = "0.5.0"
3
+ VERSION = "0.5.1"
4
4
  end
@@ -1,42 +1,4 @@
1
1
  # describe "CLI Interface" do
2
- # # the save file to be used.
3
- # SaveFile = 'spec/test_config'
4
- # # the exact string to execute the test version of pushover.
5
- # Exec = "bundle exec bin/pushover"
6
- # ExecConfig = Exec + " -c #{SaveFile}"
7
- # describe "Can select the config file" do
8
- # it "short form (-c)" do
9
- # output = `#{ExecConfig}`
10
- # output.include? "Selecting config file: #{SaveFile}"
11
- # end
12
2
 
13
- # it "long form (--config_file)" do
14
- # output = `#{Exec} -c #{SaveFile}`
15
- # output.include? "Selecting config file: #{SaveFile}"
16
- # end
17
- # end
18
- # describe "Saving" do
19
- # it "Application." do
20
- # output = `#{ExecConfig} --app 'test_app_api_key' --save-app test_app`
21
- # output.include?("Save successful").should be_true
22
- # end
23
- # it "User." do
24
- # output = `#{ExecConfig} --user 'test_user_key' --save-app test_user`
25
- # output.include?("Save successful").should be_true
26
- # end
27
- # end
28
- # describe "Sending a message" do
29
- # it "With no saved info."
30
- # context "With saved information" do
31
- # it "With a saved user"
32
- # it "With a saved app"
33
- # it "With both"
34
- # end
35
- # describe "Title" do
36
- # it "can send with a title"
37
- # it "can send without a title"
38
- # end
39
- # end
40
- # it "provides the proper version number"
41
3
  # end
42
4
 
@@ -1,11 +1,10 @@
1
- require 'pushover'
2
-
3
- include Pushover
1
+ require 'spec_helper'
4
2
 
5
3
  describe "application" do
6
4
  before(:each) do
7
5
  Bini.config.file = "tmp/test.save"
8
6
  Bini.config.clear
7
+ App.current_app = nil
9
8
  end
10
9
 
11
10
  it "can add a application to the Config[:application] hash." do
@@ -15,12 +14,41 @@ describe "application" do
15
14
 
16
15
  it "can remove a application from the hash." do
17
16
  App.add "foo", "bar"
18
- App.remove "foo"
19
- Bini.config[:applications]["foo"].should be_nil
20
- end
17
+ App.remove "foo"
18
+ Bini.config[:applications]["foo"].should be_nil
19
+ end
21
20
 
22
- it "can find the apikey from the name" do
23
- App.add "foo", "bar"
24
- App.find("foo").should eq("bar")
21
+ describe "#find" do
22
+ it "can find the apikey from the name" do
23
+ App.add "foo", "bar"
24
+ App.find("foo").should eq("bar")
25
+ end
26
+ it "If it can't find the apikey, it will still try whatever was passed" do
27
+ App.find("tryme").should eq "tryme"
28
+ end
29
+ end
30
+
31
+ describe "#current_app" do
32
+ it "will look on the cli first" do
33
+ Bini::Options[:apikey] = 'anapikey'
34
+ App.current_app.should eq "anapikey"
35
+ end
36
+ it "will grab the first app in the config as a last resort" do
37
+ App.add "foo", "bar2"
38
+ Bini.config.save
39
+ Bini::Options[:apikey] = nil
40
+ App.current_app.should eq "bar2"
41
+ end
42
+ end
43
+
44
+ describe "#current_app?" do
45
+ it "Will return true if we have a current_app" do
46
+ Bini::Options[:apikey] = 'somethingsilly'
47
+ App.current_app.should eq 'somethingsilly'
48
+ end
49
+ it "Will return nil otherwise" do
50
+ App.current_app?.should be_nil
51
+ end
25
52
  end
26
53
  end
54
+
@@ -1,5 +1,48 @@
1
- require 'pushover'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Pushover" do
4
- it "can send a notification"
4
+ before :each do
5
+ App.current_app = nil
6
+ User.current_user = nil
7
+ Pushover.clear
8
+ end
9
+
10
+ describe "#clear" do
11
+ it "will erase all the attributes in Pushover" do
12
+ Pushover.send("#{keys.first}=", "something")
13
+ Pushover.clear
14
+ parameters.each {|k,v| v.should be_nil}
15
+ end
16
+ end
17
+
18
+ describe "#parameters?" do
19
+ it 'will return true only if every key is set to something.' do
20
+ keys.each {|k| Pushover.send("#{k}=", 'ladeda')}
21
+ parameters?.should eq true
22
+ end
23
+ it 'will return false otherwise.' do
24
+ Pushover.send("#{keys.first}=", "something")
25
+ parameters?.should eq false
26
+ end
27
+ end
28
+
29
+ describe "#configure" do
30
+ Pushover.keys.each do |key|
31
+ it "#{key} can be configured via .configure" do
32
+ r = "acdfef"
33
+ Pushover.configure do |c|
34
+ c.instance_variable_set "@#{key}", r
35
+ end
36
+ Pushover.send(key).should eq r
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#notification" do
42
+ it "can send a notification" do
43
+ setup_webmocks
44
+ resp = Pushover.notification message:'a message', token:'good_token', user:'good_user'
45
+ resp.code.should eq "200"
46
+ end
47
+ end
5
48
  end
@@ -1,28 +1,53 @@
1
- require 'pushover'
2
-
3
- include Pushover
1
+ require 'spec_helper'
4
2
 
5
3
  describe "user" do
6
4
  before(:each) do
7
5
  Bini.config.file = "tmp/test.save"
8
6
  Bini.config.clear
7
+ User.current_user = nil
9
8
  end
10
9
 
11
- it "can add a user to the Config[:application] hash." do
10
+ it "can add a user to the Config[:users] hash." do
12
11
  User.add "foo", "bar"
13
12
  Bini.config[:users]["foo"].should eq("bar")
14
13
  end
15
14
 
16
15
  it "can remove a user from the hash." do
17
16
  User.add "foo", "bar"
18
- User.remove "foo"
19
- Bini.config[:users]["foo"].should be_nil
20
- end
17
+ User.remove "foo"
18
+ Bini.config[:users]["foo"].should be_nil
19
+ end
21
20
 
22
- it "can find the token from the name" do
23
- User.add "foo", "bar"
24
- User.find("foo").should eq("bar")
21
+ describe "#find" do
22
+ it "can find the token from the name" do
23
+ User.add "foo", "bar"
24
+ User.find("foo").should eq("bar")
25
+ end
26
+ it "If it can't find the token, it will still try whatever was passed" do
27
+ User.find("tryme").should eq "tryme"
28
+ end
25
29
  end
26
- end
27
30
 
31
+ describe "#current_user" do
32
+ it "will look on the cli first" do
33
+ Bini::Options[:token] = 'atoken'
34
+ User.current_user.should eq "atoken"
35
+ end
36
+ it "will grab the first user in the config as a last resort" do
37
+ User.add "foo", "bar2"
38
+ Bini.config.save
39
+ Bini::Options[:token] = nil
40
+ User.current_user.should eq "bar2"
41
+ end
42
+ end
28
43
 
44
+ describe "#current_user?" do
45
+ it "Will return true if we have a current_user" do
46
+ Bini::Options[:token] = 'somethingsilly'
47
+ User.current_user.should eq 'somethingsilly'
48
+ end
49
+ it "Will return nil otherwise" do
50
+ User.current_user?.should be_nil
51
+ end
52
+ end
53
+ end
@@ -1,17 +1,41 @@
1
- # This file was generated by the `rspec --init` command. Conventionally, all
2
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
- # Require this file using `require "spec_helper"` to ensure that it is only
4
- # loaded once.
5
- #
6
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
1
+ if ENV["COVERAGE"] == 'true'
2
+ require 'simplecov'
3
+ require 'simplecov-rcov'
4
+
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
+ SimpleCov::Formatter::HTMLFormatter,
7
+ SimpleCov::Formatter::RcovFormatter
8
+ ]
9
+ SimpleCov.start do
10
+ add_filter "/spec/"
11
+ end
12
+ end
13
+ require 'webmock/rspec'
14
+
15
+ require 'pushover'
16
+
17
+ include Pushover
18
+
7
19
  RSpec.configure do |config|
8
20
  config.treat_symbols_as_metadata_keys_with_true_values = true
9
21
  config.run_all_when_everything_filtered = true
10
22
  config.filter_run :focus
11
-
12
- # Run specs in random order to surface order dependencies. If you find an
13
- # order dependency and want to debug it, you can fix the order by providing
14
- # the seed, which is printed after each run.
15
- # --seed 1234
16
23
  config.order = 'random'
17
24
  end
25
+
26
+ def setup_webmocks
27
+ WebMock.reset!
28
+ good_result = '{"status":1}'
29
+ bad_token = '{"token":"invalid","errors":["application token is invalid"],"status":0}'
30
+ bad_user = '{"user":"invalid","errors":["user identifier is invalid"],"status":0}'
31
+
32
+ stub_http_request(:post, "https://api.pushover.net/1/messages.json").to_return(:status => 200,
33
+ :headers => {}, :body => good_result).with(:body => hash_including({token:'good_token', user:'good_user'}))
34
+ stub_http_request(:post, "https://api.pushover.net/1/messages.json").to_return(:status => 200,
35
+ :headers => {}, :body => bad_token).with(:body => hash_including({token:'bad_token', user:'good_user'}))
36
+ stub_http_request(:post, "https://api.pushover.net/1/messages.json").to_return(:status => 200,
37
+ :headers => {}, :body => bad_user).with(:body => hash_including({token:'good_token', user:'bad_user'}))
38
+ end
39
+
40
+
41
+
@@ -1,3 +1,8 @@
1
+ 0.5.1:
2
+ * SimpleCov and 100% test coverage
3
+ * Webmock based testing for Pushover#notification.
4
+ * Added intergration to http://travis-ci.org
5
+
1
6
  0.5.0:
2
7
  * Switched the order of App and it's derivatives so that it's name, api_key to make it more human readable.
3
8
  * Ditto for User.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-11 00:00:00.000000000 Z
12
+ date: 2012-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yajl-ruby
@@ -52,16 +52,15 @@ extensions: []
52
52
  extra_rdoc_files:
53
53
  - README.md
54
54
  - whatsnew.md
55
- - dev_notes.md
56
55
  files:
57
56
  - .gitignore
57
+ - .travis.yml
58
58
  - Gemfile
59
59
  - Guardfile
60
60
  - LICENSE
61
61
  - README.md
62
62
  - Rakefile
63
63
  - bin/pushover
64
- - dev_notes.md
65
64
  - lib/pushover.rb
66
65
  - lib/pushover/app.rb
67
66
  - lib/pushover/user.rb
@@ -1 +0,0 @@
1
- * the file spec/test_config is ignored intentionally, you can load your personal pushover details into this file for running specs successfully.