ga_example_gem 0.0.2 → 0.0.3

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.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # GaExampleGem
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/ga_example_gem.png)](http://badge.fury.io/rb/ga_example_gem)
4
+
3
5
  [![Coverage Status](https://coveralls.io/repos/tibbon/ga-example-gem/badge.png)](https://coveralls.io/r/tibbon/ga-example-gem)
4
6
 
5
7
  [![Build Status](https://travis-ci.org/tibbon/ga-example-gem.png?branch=master)](https://travis-ci.org/tibbon/ga-example-gem)
@@ -29,6 +31,7 @@ Setup a new instance:
29
31
  ```ruby
30
32
  client = GaExampleGem.configure do |config|
31
33
  config.api_key = "your_api_key"
34
+ config.oauth_key = "foo"
32
35
  end
33
36
  ```
34
37
 
@@ -3,8 +3,12 @@ require 'ga_example_gem/client'
3
3
 
4
4
  # This is our GaExampleGem namespace
5
5
  # for our gem
6
+
6
7
  module GaExampleGem
7
- class << self
8
+ # This is weird.
9
+ # These are now class methods.
10
+ # So you no longer have to call def self.method_missing
11
+ class << self
8
12
  # Alias for GaExampleGem::Client.new
9
13
  def new
10
14
  @client ||= GaExampleGem::Client.new
@@ -14,6 +18,7 @@ module GaExampleGem
14
18
  # This is a weird trick that allows for calling
15
19
  # on methods without calling .new first
16
20
  def method_missing(method, *args, &block)
21
+ # Normally this raises an error
17
22
  return super unless new.respond_to?(method)
18
23
  new.send(method, *args, &block)
19
24
  end
@@ -24,5 +29,12 @@ module GaExampleGem
24
29
  def respond_to?(method, include_private=false)
25
30
  new.respond_to?(method, include_private) || super(method, include_private)
26
31
  end
32
+
33
+ # The logic for above
34
+ # 1) Call a method, GaExampleGem.configure
35
+ # 2) Run .method_missing, because we don't have that method
36
+ # 3) Name of method is 'configure'
37
+ # 4) Does a new instance of the client respond to configure?
38
+ # 5) If yes, create a new client and run the method 'configure'
27
39
  end
28
40
  end
@@ -18,7 +18,9 @@ module GaExampleGem
18
18
  # This method gets the JSON for a single XKCD comic
19
19
  # by number
20
20
  def get_xkcd(number)
21
- JSON.parse self.class.get("http://xkcd-unofficial-api.herokuapp.com/xkcd?num=#{number}")
21
+ # This works too
22
+ # JSON.parse self.class.get("http://xkcd-unofficial-api.herokuapp.com/xkcd?num=#{number}")
23
+ JSON.parse HTTParty.get("http://xkcd-unofficial-api.herokuapp.com/xkcd?num=#{number}")
22
24
  end
23
25
  end
24
26
  end
@@ -8,7 +8,8 @@ module GaExampleGem
8
8
  # This is our API key. We aren't really using it
9
9
  # anywhere, but you could imagine using it
10
10
  # with HTTP requests
11
- attr_accessor :api_key
11
+ # This is tricky, this adds these attr_accessors to the CLASS
12
+ attr_accessor :api_key, :oauth_key
12
13
 
13
14
  # This yields a block that can be iterated on
14
15
  # Its useful for being able to set values to the
@@ -3,5 +3,5 @@ module GaExampleGem
3
3
  # This sets the version of our gem
4
4
  # Its a bit complex, but check out Semantic Versionining
5
5
  # http://semver.org/
6
- VERSION = "0.0.2"
6
+ VERSION = "0.0.3"
7
7
  end
@@ -10,13 +10,20 @@ describe GaExampleGem::Client do
10
10
 
11
11
  describe '#get_xkcd' do
12
12
  before do
13
+ # Intercept an HTTP request that looks like this,
14
+ # and return a specific JSON file instead for the body
13
15
  stub_request(:get, 'http://xkcd-unofficial-api.herokuapp.com/xkcd?num=1').
14
16
  to_return(body: fixture('single_xkcd.json'))
15
17
  end
16
18
 
17
19
  it "fetchs a single xkcd webcomic" do
20
+ # Make the request
18
21
  comic = @client.get_xkcd(1)
22
+
23
+ # Expect that you made a request
19
24
  expect(a_request(:get, 'http://xkcd-unofficial-api.herokuapp.com/xkcd?num=1')).to have_been_made
25
+
26
+ # Check the results of the JSON file/body of HTTP request that we intercepted
20
27
  expect(comic.first["title"]).to eq "Barrel - Part 1"
21
28
  end
22
29
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
+ # Do these first
1
2
  require 'simplecov'
3
+ # Coveralls only reports when Travis runs the tests
2
4
  require 'coveralls'
3
5
 
4
6
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
@@ -7,11 +9,15 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
9
  ]
8
10
  SimpleCov.start
9
11
 
12
+ # Require my gem itself
10
13
  require 'ga_example_gem'
14
+
15
+ # Require testing dependencies
11
16
  require 'rspec'
12
17
  require 'webmock/rspec'
13
18
  require 'json'
14
19
 
20
+ # This is where you put additional rSpec configuration
15
21
  RSpec.configure do |config|
16
22
  config.order = 'random'
17
23
  config.expect_with :rspec do |c|
@@ -19,10 +25,12 @@ RSpec.configure do |config|
19
25
  end
20
26
  end
21
27
 
28
+ # Helper methods for accessing fixture path
22
29
  def fixture_path
23
30
  File.expand_path('../fixtures', __FILE__)
24
31
  end
25
32
 
33
+ # Helper method for accessing a real file in the fixture path
26
34
  def fixture(file)
27
35
  File.new(fixture_path + '/' + file)
28
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ga_example_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: