require "spec_helper" describe Gratitude::Statistics do describe "default attributes" do it "includes httparty methods" do expect(Gratitude::Statistics).to include(HTTParty) end it "sets the base uri equal to gittip's payday api endpoint" do expect(Gratitude::Statistics.base_uri) .to eq("https://www.gittip.com/about/stats.json") end end describe "instance methods" do before { VCR.insert_cassette "statistics" } after { VCR.eject_cassette } let(:stats) { Gratitude::Statistics.current } it "responds to #repsonse" do expect(stats).to respond_to(:response) end describe "#average_tip_amount" do it "returns the correct average tip amount" do expect(stats.average_tip_amount).to eq(1.2348237280979524) end it "returns a float" do expect(stats.average_tip_amount.class).to be(Float) end it "returns the same value as its alias: #average_tip" do expect(stats.average_tip_amount).to eq(stats.average_tip) end end describe "#average_number_of_tippees" do it "returns the correct average number of tippees" do expect(stats.average_number_of_tippees).to eq(3) end it "returns a fixnum" do expect(stats.average_number_of_tippees.class).to be(Fixnum) end it "returns the same value as its alias: #average_tippees" do expect(stats.average_number_of_tippees).to eq(stats.average_tippees) end end describe "#amount_in_escrow" do it "returns the correct amount in escrow" do expect(stats.amount_in_escrow).to eq(50441.17) end it "returns a float" do expect(stats.amount_in_escrow.class).to be(Float) end it "returns the same value as its alias: #escrow" do expect(stats.amount_in_escrow).to eq(stats.escrow) end end describe "#last_thursday" do it "returns the correct value for last thursday" do expect(stats.last_thursday).to eq("last Thursday") end it "returns a string" do expect(stats.last_thursday.class).to be(String) end end describe "#number_of_achs" do it "returns the correct number of ach credits" do expect(stats.number_of_ach_credits).to eq(299) end it "returns a fixnum" do expect(stats.number_of_ach_credits.class).to be(Fixnum) end it "returns the same value as its alias: #nach" do expect(stats.number_of_ach_credits).to eq(stats.nach) end it "returns the same value as its alias: #number_of_achs" do expect(stats.number_of_ach_credits).to eq(stats.number_of_achs) end end describe "#number_of_active_users" do it "returns the correct number of active users" do expect(stats.number_of_active_users).to eq(1719) end it "returns a fixnum" do expect(stats.number_of_active_users.class).to be(Fixnum) end it "returns the same value as its alias: #nactive" do expect(stats.number_of_active_users).to eq(stats.nactive) end end describe "#number_of_credit_cards" do it "returns the correct number of credit cards on file" do expect(stats.number_of_credit_cards).to eq(1496) end it "returns a fixnum" do expect(stats.number_of_credit_cards.class).to be(Fixnum) end it "returns the same value as its alias: #ncc" do expect(stats.number_of_credit_cards).to eq(stats.ncc) end end describe "#number_of_givers" do it "returns the correct number of givers" do expect(stats.number_of_givers).to eq(1113) end it "returns a fixnum" do expect(stats.number_of_givers.class).to be(Fixnum) end it "returns the same value as its alias: #ngivers" do expect(stats.number_of_givers).to eq(stats.ngivers) end end describe "#number_who_give_and_receive" do it "returns the correct number of users who both give and receive" do expect(stats.number_who_give_and_receive).to eq(301) end it "returns a fixnum" do expect(stats.number_who_give_and_receive.class).to be(Fixnum) end it "returns the same value as its alias: #noverlap" do expect(stats.number_who_give_and_receive).to eq(stats.noverlap) end end describe "#number_of_receivers" do it "returns the correct number of receivers" do expect(stats.number_of_receivers).to eq(907) end it "returns a fixnum" do expect(stats.number_of_receivers.class).to be(Fixnum) end it "returns the same value as its alias: #nreceivers" do expect(stats.number_of_receivers).to eq(stats.nreceivers) end end describe "#other_people" do it "returns the correct value for #other_people" do expect(stats.other_people).to eq("three other people") end it "returns a string" do expect(stats.other_people.class).to be(String) end end describe "#percentage_of_users_with_credit_cards" do it "returns the correct value for #percentage_of_users_with_credit_cards" do expect(stats.percentage_of_users_with_credit_cards).to eq("7.6") end it "returns a string" do expect(stats.percentage_of_users_with_credit_cards.class).to be(String) end it "returns the same value as its alias: #pcc" do expect(stats.percentage_of_users_with_credit_cards).to eq(stats.pcc) end end describe "#punctuation" do it "returns the correct value for #punctuation" do expect(stats.punctuation).to eq(".") end it "returns a string" do expect(stats.punctuation.class).to be(String) end it "returns the same value as its alias: #pcc" do expect(stats.punctuation).to eq(stats.punc) end end describe "#statements" do it "returns an array" do expect(stats.statements.class).to be(Array) end it "contain the currect number of elements in the array" do expect(stats.statements.size).to eq(16) end it "has a hash for each element in the array" do expect(stats.statements.first.class).to be(Hash) end it "has statement as a key in each hash element" do expect(stats.statements.first.has_key?("statement")).to be(true) end it "has username as a key in each hash element" do expect(stats.statements.first.has_key?("username")).to be(true) end end describe "#this_thursday" do it "returns the correct value for this thursday" do expect(stats.this_thursday).to eq("this Thursday") end it "returns a string" do expect(stats.this_thursday.class).to be(String) end end describe "#tip_distribution_json" do it "returns a hash" do expect(stats.tip_distribution_json.class).to be(Hash) end end describe "#number_of_tips" do it "returns the correct number of tips" do expect(stats.number_of_tips).to eq(4710) end it "returns a fixnum" do expect(stats.number_of_tips.class).to be(Fixnum) end it "returns the same value as its alias: #tip_n" do expect(stats.number_of_tips).to eq(stats.tip_n) end end describe "#value_of_total_backed_tips" do it "returns the correct value of total backed tips" do expect(stats.value_of_total_backed_tips).to eq(5849.36) end it "returns a float" do expect(stats.value_of_total_backed_tips.class).to be(Float) end it "returns the same value as its alias: #total_backed_tips" do expect(stats.value_of_total_backed_tips).to eq(stats.total_backed_tips) end end describe "#transfer_volume" do it "returns the correct transfer volume" do expect(stats.transfer_volume).to eq(5464.38) end it "returns a float" do expect(stats.transfer_volume.class).to be(Float) end end end end