From dfc19eeaf457b431be2281e46278ad14db18006e Mon Sep 17 00:00:00 2001 From: Matthew Shafer Date: Mon, 6 May 2013 01:19:34 -0700 Subject: [PATCH] add /styles route --- CHANGELOG.md | 1 + lib/tankard/api/styles.rb | 21 +++++++++++++++++++++ lib/tankard/client.rb | 5 +++++ spec/tankard/api/styles_spec.rb | 26 ++++++++++++++++++++++++++ spec/tankard/client_spec.rb | 11 +++++++++++ 5 files changed, 64 insertions(+) create mode 100644 lib/tankard/api/styles.rb create mode 100644 spec/tankard/api/styles_spec.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index 9492f1f..8c46ded 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/lib/tankard/api/styles.rb b/lib/tankard/api/styles.rb new file mode 100644 index 0000000..a87026f --- /dev/null +++ b/lib/tankard/api/styles.rb @@ -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 \ No newline at end of file diff --git a/lib/tankard/client.rb b/lib/tankard/client.rb index 7c240e5..61635f0 100644 --- a/lib/tankard/client.rb +++ b/lib/tankard/client.rb @@ -1,6 +1,7 @@ require 'tankard/request' require 'tankard/api/beer' require 'tankard/api/beers' +require 'tankard/api/styles' module Tankard class Client @@ -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 \ No newline at end of file diff --git a/spec/tankard/api/styles_spec.rb b/spec/tankard/api/styles_spec.rb new file mode 100644 index 0000000..2c2a9d6 --- /dev/null +++ b/spec/tankard/api/styles_spec.rb @@ -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 \ No newline at end of file diff --git a/spec/tankard/client_spec.rb b/spec/tankard/client_spec.rb index 8259d83..25c0030 100644 --- a/spec/tankard/client_spec.rb +++ b/spec/tankard/client_spec.rb @@ -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 \ No newline at end of file