coder_wally 0.0.1 → 0.0.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
  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