Skip to content

Commit

Permalink
add /styles route
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewshafer committed May 6, 2013
1 parent 320c379 commit dfc19ee
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## v0.1.0 (unreleased)
* Add params method to beers. Allows passing additional parameters in an additional way.
* Add params method to beer. Allows passing additional parameters in an additional way.
* Add styles method & class. Allows querying of the /styles route

## v0.0.1
* Support for querying a beer
Expand Down
21 changes: 21 additions & 0 deletions lib/tankard/api/styles.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require 'hashie'
require 'tankard/api/request/get'
require 'tankard/api/utils/finders'

module Tankard
module Api
class Styles
include ::Enumerable
include Tankard::Api::Request::Get
include Tankard::Api::Utils::Finders

def initialize(request)
@request = request
end

def each(&block)
find_on_single_page("styles", @request, nil, block)
end
end
end
end
5 changes: 5 additions & 0 deletions lib/tankard/client.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
require 'tankard/request'
require 'tankard/api/beer'
require 'tankard/api/beers'
require 'tankard/api/styles'

module Tankard
class Client
Expand All @@ -20,5 +21,9 @@ def beer(options={})
def beers(options={})
Tankard::Api::Beers.new(@tankard_request, options)
end

def styles
Tankard::Api::Styles.new(@tankard_request)
end
end
end
26 changes: 26 additions & 0 deletions spec/tankard/api/styles_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require 'spec_helper'

describe Tankard::Api::Styles do

let(:styles) { Tankard::Api::Styles.new(@request) }

before do
@request = mock("request")
end

describe "when making a request" do

context "and no data is returned" do

it "raises a Tankard::Error::InvalidResponse error" do
@request.stub(:get).with("styles", nil).and_return({})
expect { styles.collect { |x| x} }.to raise_error(Tankard::Error::InvalidResponse)
end
end

it "returns the data portion of the request" do
@request.stub(:get).with("styles", nil).and_return({"data" => ["test1", "test2"]})
expect(styles.collect { |x| x}).to eql(["test1", "test2"])
end
end
end
11 changes: 11 additions & 0 deletions spec/tankard/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,15 @@
end
end
end

describe "#styles" do

context "when called" do

it "does not reuse an existing beer object" do
styles = client.styles
expect(styles.object_id != client.styles.object_id).to be_true
end
end
end
end

0 comments on commit dfc19ee

Please sign in to comment.