coder_wally 0.0.1 → 0.0.2

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: a0cc6f71cd7ebdb7989ee3f363a1cf871f070565
4
- data.tar.gz: 23c6832b989478b13f1572694a252d8a3fdd3df6
3
+ metadata.gz: 23d832d7527f374d52bccca30faa69afa004004e
4
+ data.tar.gz: d24fb436ad305fc990a02efaa0dc90ffae4d6e35
5
5
  SHA512:
6
- metadata.gz: cd5b6339bc5013357cae651d10f61c7a471e621cab3327752f166a02931bfa7391b489444007756c799749d512c3ec3fa75445b14c923aed553bf3cba724e8df
7
- data.tar.gz: 87fb963abbe714f276050dfb33c037275c80d47d4cb273ea1b15b426d747e2d48017acaf07cfcd9f36f04fae71329d17f14b1f328e55b05ff5e97c0dfecef567
6
+ metadata.gz: 3cd99a77064e7c69c6025b6d55a5df2e27617384d07af0baab9d31cdf1e11dc85c4ea11064f8a4b62adcdde82aabf87715638c8149cb7ca5d545e8a919189d60
7
+ data.tar.gz: 23a0b5e971adaa61893ae325e049edc02f8a5aa6687f2bc308061e8d73a7db42c341cdcccbd24369cf20cfa8aa6576a6316a661f9ab7518dad00633dbfd61bb6
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.idea/
2
+ /.c9/
2
3
  /.bundle/
3
4
  /.yardoc
4
5
  /Gemfile.lock
data/bin/coder_wally CHANGED
File without changes
data/coder_wally.gemspec CHANGED
@@ -20,4 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "webmock", "~>1.20.4"
23
24
  end
@@ -1,4 +1,4 @@
1
1
  module CoderWally
2
2
  # The current version of HowIStart.
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
data/lib/coder_wally.rb CHANGED
@@ -1,7 +1,29 @@
1
1
  require "coder_wally/version"
2
2
 
3
+ require "open-uri"
4
+ require "json"
5
+
3
6
  # All code in the gem is namespaced under this module.
4
7
  module CoderWally
5
8
  # The URL of API we'll use.
6
- Url = "https://coderwall.com/{username}.json"
9
+ Url = "https://coderwall.com/%s.json"
10
+
11
+ class Badge
12
+ attr_reader :name, :badge, :description, :created
13
+
14
+ def initialize(hashed_badge)
15
+ @name = hashed_badge.fetch("name")
16
+ @badge = hashed_badge.fetch("badge")
17
+ @description = hashed_badge.fetch("description")
18
+ @created = hashed_badge.fetch("created")
19
+ end
20
+ end
21
+
22
+ def CoderWally.get_badges_for username
23
+ raise(ArgumentError, "Plesae provide a username") if username.empty?
24
+ url = URI.parse(Url % username)
25
+ response = JSON.load(open(url))
26
+
27
+ response["badges"].map { |badge| Badge.new(badge) }
28
+ end
7
29
  end
@@ -1,9 +1,49 @@
1
1
  require "minitest/autorun"
2
2
 
3
3
  require "coder_wally"
4
+ require "webmock/minitest"
4
5
 
5
6
  describe "Coder Wally" do
6
7
  it "has a default api url" do
7
- "https://coderwall.com/{username}.json".must_equal CoderWally::Url
8
+ "https://coderwall.com/%s.json".must_equal CoderWally::Url
9
+ end
10
+
11
+ describe "user badges" do
12
+ describe "valid user" do
13
+ before do
14
+ success_response = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/200.json")).read
15
+ stub_request(:get, "https://coderwall.com/me.json").
16
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
17
+ to_return(:status => 200, :body => success_response, :headers => {})
18
+ end
19
+
20
+ it "returns a hash of badges" do
21
+ badges = CoderWally.get_badges_for('me')
22
+
23
+ badges.count.must_equal 11
24
+ badges.first.name.must_equal "Lab"
25
+ badges.first.badge.must_equal "https://d3levm2kxut31z.cloudfront.net/assets/badges/labrador-1eb0fc532826e5a7c5487855f9880627.png"
26
+ badges.first.description.must_equal "Have at least one original repo where C# is the dominant language"
27
+ badges.first.created.must_equal "2014-07-10T23:36:47Z"
28
+ end
29
+ end
30
+ describe "invalid user" do
31
+ it "throws an exception when no user is passed in" do
32
+ err = ->{ CoderWally.get_badges_for }.must_raise ArgumentError
33
+ err.message.must_match /wrong number/
34
+ end
35
+
36
+ it "throws an exception when empty string is passed in" do
37
+ err = ->{ CoderWally.get_badges_for "" }.must_raise ArgumentError
38
+ err.message.must_match /Plesae provide a username/
39
+ end
40
+
41
+ # before do
42
+ # not_found_response = open(File.expand_path(File.dirname(__FILE__) + "/./fixtures/404.json")).read
43
+ # stub_request(:get, "https://coderwall.com/me.json").
44
+ # with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>'Ruby'}).
45
+ # to_return(:status => 404, :body => not_found_response, :headers => {})
46
+ # end
47
+ end
8
48
  end
9
49
  end
@@ -0,0 +1,66 @@
1
+ {
2
+ "username": "gregstewart",
3
+ "name": "Greg Stewart",
4
+ "location": "London, UK",
5
+ "endorsements": 0,
6
+ "team": null,
7
+ "accounts": {
8
+ "github": "gregstewart"
9
+ },
10
+ "badges": [{
11
+ "name": "Lab",
12
+ "description": "Have at least one original repo where C# is the dominant language",
13
+ "created": "2014-07-10T23:36:47Z",
14
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/labrador-1eb0fc532826e5a7c5487855f9880627.png"
15
+ }, {
16
+ "name": "Altruist",
17
+ "description": "Increase developer well-being by sharing at least 20 open source projects",
18
+ "created": "2013-02-25T08:15:02Z",
19
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/altrustic-806442d9d15f1f1fedd0eed9a31db473.png"
20
+ }, {
21
+ "name": "Mongoose 3",
22
+ "description": "Have at least three original repos where Ruby is the dominant language",
23
+ "created": "2013-02-19T12:08:30Z",
24
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/mongoose3-d82b572f18d88192fe201813f6411e41.png"
25
+ }, {
26
+ "name": "Forked",
27
+ "description": "Have a project valued enough to be forked by someone else",
28
+ "created": "2013-01-08T23:58:12Z",
29
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/forked1-50bad70cadd51c6093a79e122a1daa88.png"
30
+ }, {
31
+ "name": "Charity",
32
+ "description": "Fork and commit to someone's open source project in need",
33
+ "created": "2012-06-06T06:06:46Z",
34
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/charity-b7c8758441a70e8378d6332ec15ef292.png"
35
+ }, {
36
+ "name": "Honey Badger 3",
37
+ "description": "Have at least three Node.js specific repos",
38
+ "created": "2012-03-03T08:27:49Z",
39
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/honeybadger3-9d5e00c3c53dd52401790948c4a38ae5.png"
40
+ }, {
41
+ "name": "Cub",
42
+ "description": "Have at least one original jQuery or Prototype open source repo",
43
+ "created": "2011-07-25T13:50:36Z",
44
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/cub-6143c7182031dd155b74978e96849005.png"
45
+ }, {
46
+ "name": "Honey Badger",
47
+ "description": "Have at least one original Node.js-specific repo",
48
+ "created": "2011-07-25T06:40:34Z",
49
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/honeybadger-9bc1ac6b2fd2226faa6fcf38d3ef075e.png"
50
+ }, {
51
+ "name": "Mongoose",
52
+ "description": "Have at least one original repo where Ruby is the dominant language",
53
+ "created": "2011-07-21T08:21:42Z",
54
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/mongoose-2a7c6d45a98e18a7f3229c1f7ece6b9e.png"
55
+ }, {
56
+ "name": "Nephila Komaci",
57
+ "description": "Have at least one original repos where PHP is the dominant language",
58
+ "created": "2011-06-19T07:26:22Z",
59
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/nephilakomaci-f5a692e53b6f1d087e30b0cf1a7d79ff.png"
60
+ }, {
61
+ "name": "Walrus",
62
+ "description": "The walrus is no stranger to variety. Use at least 4 different languages throughout all your repos",
63
+ "created": "2011-06-19T07:26:22Z",
64
+ "badge": "https://d3levm2kxut31z.cloudfront.net/assets/badges/walrus-61456fc5e49a5a46d6c25a3beca60b5e.png"
65
+ }]
66
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title></title>
5
+ </head>
6
+ <body>
7
+
8
+ </body>
9
+ </html>
File without changes
@@ -0,0 +1 @@
1
+ require 'webmock/minitest'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coder_wally
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Stewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-21 00:00:00.000000000 Z
11
+ date: 2015-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webmock
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.20.4
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.20.4
41
55
  description: A simple gem to fetch user badges from Coder Wall
42
56
  email:
43
57
  - gregs@tcias.co.uk
@@ -56,6 +70,11 @@ files:
56
70
  - lib/coder_wally.rb
57
71
  - lib/coder_wally/version.rb
58
72
  - test/coder_wally_test.rb
73
+ - test/fixtures/200.json
74
+ - test/fixtures/404.json
75
+ - test/fixtures/bad.json
76
+ - test/fixtures/empty.json
77
+ - test/test_helper.rb
59
78
  homepage: https://github.com/gregstewart/coder_wally
60
79
  licenses:
61
80
  - MIT
@@ -82,3 +101,8 @@ specification_version: 4
82
101
  summary: A simple gem to fetch user badges from Coder Wall
83
102
  test_files:
84
103
  - test/coder_wally_test.rb
104
+ - test/fixtures/200.json
105
+ - test/fixtures/404.json
106
+ - test/fixtures/bad.json
107
+ - test/fixtures/empty.json
108
+ - test/test_helper.rb