snafu 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|