spec/storenvy_spec.rb in storenvy-0.0.2 vs spec/storenvy_spec.rb in storenvy-0.1.0

- old
+ new

@@ -1,11 +1,11 @@ require 'helper' describe Storenvy do it "will delegate Storenvy.new to client " do - client = Storenvy.new + client = Storenvy.new('tonkapark') client.should be_an_instance_of Storenvy::Client end end @@ -15,54 +15,220 @@ before do stub_request(:get, "tonkapark.storenvy.com/store.json"). to_return(:body=>fixture("store.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + stub_request(:get, /tonkapark.storenvy.com\/products.json\?page=(|1)/). + to_return(:body=>fixture("products.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + + stub_request(:get, /tonkapark.storenvy.com\/products.json\?page=2/). + to_return(:body=>fixture("products_page_2.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + + stub_request(:get, /tonkapark.storenvy.com\/products\/(\d*).json/). + to_return(:body=>fixture("product.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + + stub_request(:get, /tonkapark.storenvy.com\/collections.json/). + to_return(:body=>fixture("collections.json"), :headers => {:content_type => "application/json; charset=utf-8"}) + + stub_request(:get, /tonkapark.storenvy.com\/collections\/(\d*).json/). + to_return(:body=>fixture("collection.json"), :headers => {:content_type => "application/json; charset=utf-8"}) end describe "client" do - before(:each) do - @client = Storenvy::Client.new - end - - it "is properly classed" do - @client.should be_an_instance_of Storenvy::Client + + it "properly classed" do + client = Storenvy::Client.new('tonkapark') + client.should be_an_instance_of Storenvy::Client end it "can fetch" do store = Storenvy::Client.fetch("http://tonkapark.storenvy.com/store.json") a_request(:get, "tonkapark.storenvy.com/store.json").should have_been_made end + + it "can list" do + store = Storenvy::Client.list("http://tonkapark.storenvy.com/products.json") + a_request(:get, "tonkapark.storenvy.com/products.json?page=").should have_been_made + end + context "account and host" do + it "initializes with subdomain" do + client = Storenvy::Client.new('tonkapark') + client.account.should == 'tonkapark' + client.host.should == 'tonkapark.storenvy.com' + end + + it "initializes with partial url" do + client = Storenvy::Client.new('tonkapark.storenvy.com') + client.account.should == 'tonkapark' + client.host.should == 'tonkapark.storenvy.com' + end + + it "initializes with full url" do + client = Storenvy::Client.new('http://tonkapark.storenvy.com') + client.account.should == 'tonkapark' + client.host.should == 'tonkapark.storenvy.com' + end + + it "initializes with secure url" do + client = Storenvy::Client.new('https://tonkapark.storenvy.com') + client.account.should == 'tonkapark' + client.host.should == 'tonkapark.storenvy.com' + end + + end + + end describe ".store" do before do - @client = Storenvy::Client.new + @client = Storenvy::Client.new("tonkapark") end it "with no options makes 1 http call" do - store = @client.store("tonkapark") + store = @client.store a_request(:get, "tonkapark.storenvy.com/store.json").should have_been_made end context "will be a valid hash" do - before{@store = @client.store("tonkapark")} + before{@store = @client.store} it {@store.should be_a Hash} it "should have a url" do @store.url.should be_an String @store.url.should eq("http://tonkapark.storenvy.com") end it {@store.url.should be_a String} - it {@store.avatar.should be_a String} + it {@store.should respond_to :avatar} it {@store.subdomain.should be_a String} end end + + describe ".products" do + before do + @client = Storenvy::Client.new("tonkapark") + end + + it "with no options should make one call" do + products = @client.products() + a_request(:get, "tonkapark.storenvy.com/products.json?page=1").should have_been_made + end + + it "should get specific page" do + products = @client.products(page = 2) + a_request(:get, "tonkapark.storenvy.com/products.json?page=2").should have_been_made + end + + context "will be a valid result" do + before do + @products = @client.products + @product = @products.first + end + + it {@products.should be_an Array} + + + it {@product.id.should be_an Integer} + it {@product.name.should be_a String} + it {@product.should respond_to :description} + it {@product.should respond_to :short_url } + it {@product.should respond_to :price} + it {@product.should respond_to :status} + it {@product.should respond_to :marketplace_category } + it {@product.should respond_to :photos} + it {@product.should respond_to :variants} + + end + + end + + describe ".product" do + before do + @client = Storenvy::Client.new("tonkapark") + @product = @client.product(468688) + end + + it "should make one http call" do + a_request(:get, "tonkapark.storenvy.com/products/468688.json").should have_been_made + end + + + context "will be a valid result" do + + it {@product.should be_a Hash} + + + it {@product.id.should be_an Integer} + it {@product.name.should be_a String} + it {@product.should respond_to :description} + it {@product.should respond_to :short_url } + it {@product.should respond_to :price} + it {@product.should respond_to :status} + it {@product.should respond_to :marketplace_category } + it {@product.should respond_to :photos} + it {@product.should respond_to :variants} + + end + + end + + + describe ".collections" do + before do + @client = Storenvy::Client.new("tonkapark") + end + + it "with no options should make one call" do + products = @client.collections + a_request(:get, "tonkapark.storenvy.com/collections.json").should have_been_made + end + + context "will be a valid result" do + before do + @collections = @client.collections + @collection = @collections.first + end + + it {@collections.should be_an Array} + + + it {@collection.id.should be_an Integer} + it {@collection.name.should be_a String} + it {@collection.should respond_to :products} + it {@collection.products.should be_an Array} + + end + + end + + describe ".collection" do + before do + @client = Storenvy::Client.new("tonkapark") + @collection = @client.collection(86385) + end + + it "with no options should make one call" do + a_request(:get, "tonkapark.storenvy.com/collections/86385.json").should have_been_made + end + + context "will be a valid result" do + + it {@collection.should be_a Hash} + + it {@collection.id.should be_an Integer} + it {@collection.name.should be_a String} + it {@collection.should respond_to :products} + it {@collection.products.should be_an Array} + + end + + end + end