snafu 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/CHANGELOG.textile +12 -1
- data/README.textile +68 -7
- data/lib/snafu.rb +9 -2
- data/lib/snafu/achievements.rb +17 -0
- data/lib/snafu/client.rb +33 -23
- data/lib/snafu/giants.rb +35 -0
- data/lib/snafu/models.rb +4 -1
- data/lib/snafu/models/achievement.rb +24 -0
- data/lib/snafu/models/giant.rb +21 -0
- data/lib/snafu/models/glitch_time.rb +116 -0
- data/lib/snafu/models/hub.rb +5 -2
- data/lib/snafu/models/location.rb +3 -3
- data/lib/snafu/models/street.rb +13 -5
- data/lib/snafu/util.rb +12 -0
- data/lib/snafu/version.rb +1 -1
- data/snafu.gemspec +2 -2
- data/spec/snafu/achievements_spec.rb +51 -0
- data/spec/snafu/client_spec.rb +37 -15
- data/spec/snafu/giants_spec.rb +60 -0
- data/spec/snafu/locations_spec.rb +33 -32
- data/spec/snafu/models/achievement_spec.rb +31 -0
- data/spec/snafu/models/giant_spec.rb +38 -0
- data/spec/snafu/models/glitch_image_spec.rb +7 -17
- data/spec/snafu/models/glitch_time_spec.rb +176 -0
- data/spec/snafu/models/hub_spec.rb +2 -2
- data/spec/snafu/models/street_spec.rb +1 -1
- data/spec/snafu/models/util_spec.rb +22 -0
- data/spec/snafu_spec.rb +4 -3
- data/spec/spec_helper.rb +17 -16
- metadata +46 -54
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_accept_a_hash_of_POST_arguments.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if_authenticate.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if_authenticate_called_with_true.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if_called_with_authenticate.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if_called_with_authenticate_true.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_automatically_pass_in_the_oauth_token_if_called_with_true.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Client/call_should_raise_a_GlitchAPIError_if_receiving_an_unsucessful_response_from_the_Glitch_API.yml +0 -36
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_hub_should_return_a_valid_hub_if_given_a_valid_Hub_ID.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_hub_should_return_an_array_of_valid_street_information_if_given_a_valid_Hub_ID.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_hubs_should_populated_the_returned_Hub_objects_with_an_id_and_name.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_hubs_should_return_an_array_of_Hub_objects.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_hubs_should_return_an_array_of_all_hubs.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Locations/get_street_should_return_a_complete_street_if_given_a_valid_street_ID.yml +0 -40
- data/spec/fixtures/vcr_cassettes/Snafu_Models_Hub/initialize_should_populate_values_if_given_the_raw_JSON_response_from_HTTParty.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Models_Hub/initialize_should_populate_values_if_given_the_raw_response_from_Glitch.yml +0 -39
- data/spec/fixtures/vcr_cassettes/Snafu_Models_Street/initialize_should_populate_values_if_given_the_raw_JSON_response_from_HTTParty.yml +0 -40
- data/spec/fixtures/vcr_cassettes/Snafu_Models_Street_new/should_populate_values_if_given_the_raw_JSON_response_from_HTTParty.yml +0 -40
- data/spec/fixtures/vcr_cassettes/calendar_getHoldays/valid_calendar.yml +0 -39
data/lib/snafu/models/hub.rb
CHANGED
@@ -3,7 +3,7 @@ module Snafu
|
|
3
3
|
# Defines a class for Glitch Hubs, which are the various regions in the game.
|
4
4
|
#
|
5
5
|
class Hub < Location
|
6
|
-
attr_reader :streets
|
6
|
+
attr_reader :streets, :id
|
7
7
|
|
8
8
|
# Accepts either the raw JSON-formatted response from the HTTParty get request or an options
|
9
9
|
# hash.
|
@@ -15,7 +15,7 @@ module Snafu
|
|
15
15
|
@name = options["name"]
|
16
16
|
@streets = []
|
17
17
|
options["streets"].each do |street_id, street|
|
18
|
-
@streets <<
|
18
|
+
@streets << Street.new(:id => street_id, :name => street["name"])
|
19
19
|
end
|
20
20
|
else
|
21
21
|
@id = options[:id]
|
@@ -27,6 +27,9 @@ module Snafu
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
30
|
+
def to_s
|
31
|
+
"Glitch Hub - ID: #{self.id} Name: #{self.name}"
|
32
|
+
end
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
@@ -9,12 +9,12 @@ module Snafu
|
|
9
9
|
@id = options[:id].to_s
|
10
10
|
@name = options[:name]
|
11
11
|
end
|
12
|
-
def to_s
|
13
|
-
"#{self.id} - #{self.name}"
|
14
|
-
end
|
15
12
|
def id
|
16
13
|
@id.to_s
|
17
14
|
end
|
15
|
+
def to_s
|
16
|
+
"Glitch Generic Location: ID: #{self.id} - Name: #{self.name}"
|
17
|
+
end
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/snafu/models/street.rb
CHANGED
@@ -3,6 +3,7 @@ module Snafu
|
|
3
3
|
class Street < Location
|
4
4
|
attr_reader :hub, :connections, :mote, :features, :image, :active_project
|
5
5
|
alias_method :active_project?, :active_project
|
6
|
+
alias_method :tsid, :id
|
6
7
|
def initialize(options = {})
|
7
8
|
if options.class == HTTParty::Response
|
8
9
|
@id = options["tsid"]
|
@@ -19,11 +20,15 @@ module Snafu
|
|
19
20
|
)
|
20
21
|
end
|
21
22
|
@mote = Hub.new(:id => options["mote"]["id"], :name => options["mote"]["name"])
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
|
24
|
+
unless options["image"].nil?
|
25
|
+
@image = GlitchImage.new(
|
26
|
+
:url => options["image"]["url"],
|
27
|
+
:width => options["image"]["w"],
|
28
|
+
:height => options["image"]["h"]
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
27
32
|
@active_project = options["active_project"]
|
28
33
|
else
|
29
34
|
@id = options[:id]
|
@@ -36,6 +41,9 @@ module Snafu
|
|
36
41
|
@active_project = options[:active_project] || false
|
37
42
|
end
|
38
43
|
end
|
44
|
+
def to_s
|
45
|
+
"Glitch Street: #{self.id} - #{self.name}"
|
46
|
+
end
|
39
47
|
end
|
40
48
|
end
|
41
49
|
end
|
data/lib/snafu/util.rb
ADDED
data/lib/snafu/version.rb
CHANGED
data/snafu.gemspec
CHANGED
@@ -10,8 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.email = ["jeff@jkbrowning.com"]
|
11
11
|
s.homepage = "https://github.com/jbrowning/snafu"
|
12
12
|
s.summary = %q{A library for the Glitch API}
|
13
|
-
s.description = %q{Snafu is an interface to API for Glitch,
|
14
|
-
game created by Tiny Speck.}
|
13
|
+
s.description = %q{Snafu is a Ruby gem that provides an interface to the API for Glitch, a browser-based MMO created by Tiny Speck.}
|
15
14
|
|
16
15
|
s.required_ruby_version = '>= 1.9.2'
|
17
16
|
|
@@ -27,5 +26,6 @@ Gem::Specification.new do |s|
|
|
27
26
|
s.add_development_dependency 'vcr'
|
28
27
|
s.add_development_dependency 'fakeweb'
|
29
28
|
s.add_development_dependency 'rake'
|
29
|
+
s.add_development_dependency 'timecop'
|
30
30
|
s.add_runtime_dependency 'httparty', '~> 0.8'
|
31
31
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Snafu::Achievements do
|
4
|
+
before(:all) do
|
5
|
+
@snafu = Snafu.new
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:all_achievements) { @snafu.get_achievements }
|
9
|
+
|
10
|
+
describe "#get_achievements_count" do
|
11
|
+
it "should return the count of all achievements in Glitch" do
|
12
|
+
VCR.use_cassette("achievements.listAll") do
|
13
|
+
achievement_count = @snafu.call("achievements.listAll").parsed_response["total"]
|
14
|
+
@snafu.achievement_count.should eql(achievement_count)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#get_achievements" do
|
20
|
+
it "should return an array", :vcr do
|
21
|
+
all_achievements.should be_an(Array)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return an array of the same size as the total number of achievements" do
|
25
|
+
VCR.use_cassette("achievements.listAll", :record => :new_episodes) do
|
26
|
+
all_achievements = @snafu.get_achievements
|
27
|
+
achievements_count = @snafu.last_request_result["total"]
|
28
|
+
all_achievements.count.should eql(achievements_count)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should return an array of Achievement objects", :vcr do
|
33
|
+
all_achievements.each do |achievement|
|
34
|
+
achievement.should be_a(Snafu::Models::Achievement)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should return an array of fully-populated achievements" do
|
39
|
+
VCR.use_cassette("achievements.listAll") do
|
40
|
+
all_achievements.each do |achievement|
|
41
|
+
achievement.name.should_not be_nil
|
42
|
+
achievement.desc.should_not be_nil
|
43
|
+
achievement.url.should_not be_nil
|
44
|
+
achievement.image_60.should_not be_nil
|
45
|
+
achievement.image_180.should_not be_nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/spec/snafu/client_spec.rb
CHANGED
@@ -2,15 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Snafu::Client do
|
4
4
|
before(:each) do
|
5
|
-
@snafu = Snafu.new
|
5
|
+
@snafu = Snafu.new
|
6
6
|
end
|
7
7
|
|
8
|
-
describe 'call
|
8
|
+
describe '#call' do
|
9
9
|
it 'should receive a successful response from the Glitch API if given an valid method', :vcr do
|
10
|
-
|
11
|
-
|
12
|
-
result['ok'].should eql(1)
|
13
|
-
end
|
10
|
+
result = @snafu.call("calendar.getHolidays")
|
11
|
+
result['ok'].should eql(1)
|
14
12
|
end
|
15
13
|
|
16
14
|
it 'should raise a GlitchAPIError if receiving an unsucessful response from the Glitch API', :vcr do
|
@@ -24,18 +22,42 @@ describe Snafu::Client do
|
|
24
22
|
result["name"].should eql(hub_name)
|
25
23
|
end
|
26
24
|
|
27
|
-
|
28
|
-
|
25
|
+
if defined? GLITCH_OAUTH_READ_TOKEN
|
26
|
+
it "should automatically pass in the oauth token if called with authenticate", :vcr do
|
27
|
+
snafu = Snafu.new(:oauth_token => GLITCH_OAUTH_READ_TOKEN)
|
28
|
+
expect { response = snafu.call("players.stats", :authenticate => true) }.to_not raise_exception
|
29
|
+
end
|
29
30
|
end
|
30
|
-
end
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
context "authentication" do
|
33
|
+
it "should raise a GlitchAuthenticationError if trying to perform an authenticated call without an oauth token", :vcr do
|
34
|
+
snafu = Snafu.new()
|
35
|
+
expect { snafu.call("secureMethod", :authenticate => true) }.to raise_error(Snafu::GlitchAuthenticationError, /oauth token/)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should raise a GlitchAuthenticationError if calling the API with an invalid OAuth token", :vcr, :record => :all do
|
39
|
+
snafu = Snafu.new(:oauth_token => "invalid token")
|
40
|
+
expect { snafu.call("giants.getFavor", :authenticate => true) }.to raise_error(Snafu::GlitchAuthenticationError, /invalid token/i)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should raise a GlitchAuthenticationError if calling an authenticated API method without a token', :vcr do
|
44
|
+
expect { @snafu.call("giants.getFavor") }.to raise_error(Snafu::GlitchAuthenticationError)
|
45
|
+
end
|
46
|
+
|
47
|
+
if defined? GLITCH_OAUTH_READ_TOKEN
|
48
|
+
it "should raise a GlitchAuthenticationError if calling a method that requires a higher scope", :vcr do
|
49
|
+
snafu = Snafu.new(:oauth_token => GLITCH_OAUTH_IDENTITY_TOKEN)
|
50
|
+
expect { snafu.call("giants.getFavor", :authenticate => true) }.to raise_error(/insufficient scope/)
|
38
51
|
end
|
52
|
+
end
|
39
53
|
end
|
40
54
|
end
|
55
|
+
|
56
|
+
describe "#last_request_result" do
|
57
|
+
it "should return the raw contents of the last request result", :vcr do
|
58
|
+
result = @snafu.call("calendar.getHolidays")
|
59
|
+
@snafu.last_request_result.should eql(result)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
41
63
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Snafu::Giants do
|
4
|
+
before(:each) do
|
5
|
+
@snafu = Snafu.new()
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#get_giants" do
|
9
|
+
let(:giants) { @snafu.get_giants }
|
10
|
+
|
11
|
+
it "should return a non-empty array", :vcr do
|
12
|
+
giants.should be_an Array
|
13
|
+
giants.should_not be_empty
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return an array of Giant objects", :vcr do
|
17
|
+
giants.each do |element|
|
18
|
+
element.should be_a Snafu::Models::Giant
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have populate the returned Giant objects with a name", :vcr do
|
23
|
+
giants.each do |giant|
|
24
|
+
giant.name.should_not be_empty
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#get_giants_favor", :if => defined?(GLITCH_OAUTH_READ_TOKEN) do
|
30
|
+
|
31
|
+
before(:each) do
|
32
|
+
@snafu = Snafu.new(:oauth_token => GLITCH_OAUTH_READ_TOKEN)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should raise an error if there is no OAuth token set" do
|
36
|
+
snafu = Snafu.new
|
37
|
+
expect { snafu.get_giants_favor }.to raise_error(Snafu::GlitchAuthenticationError)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return a non-empty Array", :vcr do
|
41
|
+
giants_favor = @snafu.get_giants_favor
|
42
|
+
giants_favor.should be_an Array
|
43
|
+
giants_favor.should_not be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
it "should return an Array of fully-populated Giant objects", :vcr do
|
48
|
+
giants_favor = @snafu.get_giants_favor
|
49
|
+
giants_favor.each do |giant|
|
50
|
+
giant.should be_a(Snafu::Models::Giant)
|
51
|
+
giant.name.should_not be_empty
|
52
|
+
giant.cur_favor.should_not be_nil
|
53
|
+
giant.max_favor.should_not be_nil
|
54
|
+
giant.cur_daily_favor.should_not be_nil
|
55
|
+
giant.max_daily_favor.should_not be_nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -2,60 +2,61 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Snafu::Locations do
|
4
4
|
before(:each) do
|
5
|
-
@snafu = Snafu.new
|
6
|
-
@test_hub_id = 27
|
7
|
-
@test_hub_name = "Ix"
|
8
|
-
@test_street_id = "LM416LNIKVLM1"
|
9
|
-
@test_street_name = "Baby Steppes"
|
5
|
+
@snafu = Snafu.new
|
10
6
|
end
|
11
7
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
let(:test_hub) { Snafu::Models::Hub.new(:id => 27, :name => "Ix") }
|
9
|
+
let(:test_street_id) { "LM416LNIKVLM1" }
|
10
|
+
let(:test_street_name) { "Baby Steppes" }
|
11
|
+
let(:test_hub_id) { "27" }
|
12
|
+
|
13
|
+
context "#get_hubs" do
|
16
14
|
|
15
|
+
let(:hubs) { @snafu.get_hubs }
|
16
|
+
|
17
17
|
it "should return an array of all hubs", :vcr do
|
18
|
-
|
18
|
+
hubs.should_not be_empty
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should return an array of Hub objects", :vcr do
|
22
|
-
|
22
|
+
hubs.first.should be_a Snafu::Models::Hub
|
23
23
|
end
|
24
24
|
|
25
|
-
it "should
|
26
|
-
first_hub =
|
25
|
+
it "should populate the returned Hub objects with an id and name", :vcr do
|
26
|
+
first_hub = hubs.first
|
27
27
|
first_hub.id.should_not be_nil
|
28
28
|
first_hub.name.should_not be_nil
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
context "get_hub" do
|
32
|
+
context "#get_hub" do
|
33
33
|
it "should return a valid hub if given a valid Hub ID", :vcr do
|
34
|
-
hub = @snafu.get_hub(
|
35
|
-
hub.
|
34
|
+
hub = @snafu.get_hub(test_hub_id)
|
35
|
+
hub.should be_a Snafu::Models::Hub
|
36
|
+
hub.name.should eql(test_hub.name)
|
36
37
|
end
|
37
38
|
|
38
39
|
it "should return an array of valid street information if given a valid Hub ID", :vcr do
|
39
|
-
|
40
|
-
hub
|
41
|
-
|
40
|
+
hub = @snafu.get_hub(test_hub_id)
|
41
|
+
hub.streets.each do |street|
|
42
|
+
street.should be_a Snafu::Models::Street
|
43
|
+
street.id.should_not be_nil
|
44
|
+
street.name.should_not be_nil
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
45
|
-
context "get_street" do
|
46
|
-
before(:each) do
|
47
|
-
@test_street = @snafu.get_street(@test_street_id)
|
48
|
-
end
|
49
|
-
|
49
|
+
context "#get_street" do
|
50
50
|
it "should return a complete street if given a valid street ID", :vcr do
|
51
|
-
@
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
test_street = @snafu.get_street(test_street_id)
|
52
|
+
test_street.id.should_not be_nil
|
53
|
+
test_street.name.should_not be_nil
|
54
|
+
test_street.mote.should_not be_nil
|
55
|
+
test_street.active_project?.should_not be_nil
|
56
|
+
test_street.connections.should_not be_empty
|
57
|
+
test_street.image.url.should_not be_nil
|
58
|
+
test_street.image.width.should_not be_nil
|
59
|
+
test_street.image.height.should_not be_nil
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Snafu
|
4
|
+
module Models
|
5
|
+
describe Snafu::Models::Achievement do
|
6
|
+
before(:each) do
|
7
|
+
@valid_options = {
|
8
|
+
"name" => "a name",
|
9
|
+
"desc" => "a description",
|
10
|
+
"url" => "http://example.com",
|
11
|
+
"image_60" => "http://example.com/60.png",
|
12
|
+
"image_180" => "http://example.com/180.png"
|
13
|
+
}
|
14
|
+
@achievement = Achievement.new @valid_options
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should populate values if given an options hash" do
|
18
|
+
@achievement.name.should eql(@valid_options["name"])
|
19
|
+
@achievement.description.should eql(@valid_options["desc"])
|
20
|
+
@achievement.url.should eql(@valid_options["url"])
|
21
|
+
@achievement.image_60.url.should eql(@valid_options["image_60"])
|
22
|
+
@achievement.image_180.url.should eql(@valid_options["image_180"])
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should alias #description as #desc" do
|
26
|
+
@achievement.desc.should eql(@achievement.description)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Snafu
|
4
|
+
module Models
|
5
|
+
describe Snafu::Models::Giant do
|
6
|
+
|
7
|
+
GIANT_LIST = ["Alph", "Cosma", "Friendly", "Grendaline",
|
8
|
+
"Humbaba", "Lem", "Mab", "Pot", "Spriggan",
|
9
|
+
"Tii", "Zille" ]
|
10
|
+
|
11
|
+
describe "#initialize" do
|
12
|
+
let(:random_giant) { GIANT_LIST.sample }
|
13
|
+
|
14
|
+
it "should populate values if given an options hash" do
|
15
|
+
expected_name = random_giant
|
16
|
+
expected_cur_favor = rand(1000)
|
17
|
+
expected_max_favor = expected_cur_favor + 1
|
18
|
+
expected_cur_daily_favor = rand(1000)
|
19
|
+
expected_max_daily_favor = expected_cur_daily_favor + 1
|
20
|
+
|
21
|
+
giant = Giant.new(
|
22
|
+
:name => expected_name,
|
23
|
+
:cur_favor => expected_cur_favor.to_s,
|
24
|
+
:max_favor => expected_max_favor.to_s,
|
25
|
+
:cur_daily_favor => expected_cur_daily_favor.to_s,
|
26
|
+
:max_daily_favor => expected_max_daily_favor.to_s
|
27
|
+
)
|
28
|
+
|
29
|
+
giant.name.should eql(expected_name)
|
30
|
+
giant.cur_favor.should eql(expected_cur_favor)
|
31
|
+
giant.max_favor.should eql(expected_max_favor)
|
32
|
+
giant.cur_daily_favor.should eql(expected_cur_daily_favor)
|
33
|
+
giant.max_daily_favor.should eql(expected_max_daily_favor)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|