battlenet 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/README.md +31 -45
  2. data/VERSION +1 -0
  3. data/battlenet.gemspec +13 -2
  4. data/lib/battlenet.rb +95 -2
  5. data/lib/battlenet/authentication.rb +21 -0
  6. data/lib/battlenet/modules/arena.rb +13 -0
  7. data/lib/battlenet/modules/auction.rb +18 -0
  8. data/lib/battlenet/modules/character.rb +12 -0
  9. data/lib/battlenet/modules/data.rb +23 -0
  10. data/lib/battlenet/modules/guild.rb +12 -0
  11. data/lib/battlenet/modules/item.rb +7 -0
  12. data/lib/battlenet/modules/realm.rb +7 -0
  13. data/spec/fixtures/cassettes/arena_fun_and_profit.yml +29 -0
  14. data/spec/fixtures/cassettes/auction_data.yml +63 -0
  15. data/spec/fixtures/cassettes/auction_files.yml +30 -0
  16. data/spec/fixtures/cassettes/character_classes.yml +33 -0
  17. data/spec/fixtures/cassettes/character_mortawa.yml +30 -0
  18. data/spec/fixtures/cassettes/character_mortawa_es.yml +48 -0
  19. data/spec/fixtures/cassettes/character_mortawa_titles.yml +32 -0
  20. data/spec/fixtures/cassettes/character_nonstandard_name.yml +30 -0
  21. data/spec/fixtures/cassettes/character_races.yml +34 -0
  22. data/spec/fixtures/cassettes/guild_perks.yml +91 -0
  23. data/spec/fixtures/cassettes/guild_rewards.yml +175 -0
  24. data/spec/fixtures/cassettes/guild_rl_bl.yml +28 -0
  25. data/spec/fixtures/cassettes/guild_rl_bl_members.yml +28 -0
  26. data/spec/fixtures/cassettes/item_classes.yml +33 -0
  27. data/spec/fixtures/cassettes/item_hooooooooooo.yml +29 -0
  28. data/spec/fixtures/cassettes/realm.yml +69 -0
  29. data/spec/integration/arena_spec.rb +14 -0
  30. data/spec/integration/auction_spec.rb +22 -0
  31. data/spec/integration/character_spec.rb +29 -0
  32. data/spec/integration/data_spec.rb +41 -0
  33. data/spec/integration/guild_spec.rb +20 -0
  34. data/spec/integration/item_spec.rb +13 -0
  35. data/spec/integration/locale_spec.rb +23 -0
  36. data/spec/integration/realm_spec.rb +15 -0
  37. data/spec/spec_helper.rb +7 -0
  38. data/spec/unit/battlenet_authentication_spec.rb +31 -0
  39. data/spec/unit/battlenet_spec.rb +158 -0
  40. metadata +151 -51
  41. data/lib/battlenet/adapter/abstract_adapter.rb +0 -11
  42. data/lib/battlenet/adapter/net_http.rb +0 -14
  43. data/lib/battlenet/adapter/typhoeus.rb +0 -13
  44. data/lib/battlenet/adapter_manager.rb +0 -51
  45. data/lib/battlenet/api.rb +0 -73
  46. data/lib/battlenet/api/realm.rb +0 -14
  47. data/lib/battlenet/version.rb +0 -3
  48. data/spec/abstract_adapter_spec.rb +0 -15
  49. data/spec/adapter_manager_spec.rb +0 -55
  50. data/spec/api_spec.rb +0 -115
@@ -1,115 +0,0 @@
1
- require 'battlenet/api'
2
-
3
- describe Battlenet::API do
4
- context "configuration management" do
5
- it "defauls to nil when getting an unset option" do
6
- subject.get_option(:a_fake_setting_i_made_up).should be_nil
7
- end
8
-
9
- it "returns a passed value if an option is not set" do
10
- subject.get_option(:a_fake_setting_i_made_up, "value").should == "value"
11
- end
12
-
13
- it "allows setting and retrieving a value" do
14
- subject.set_option(:a_fake_setting_i_made_up, "my_value")
15
- subject.get_option(:a_fake_setting_i_made_up).should == "my_value"
16
- end
17
- end
18
-
19
- context "default configuration" do
20
- it "defaults to the US region" do
21
- subject.get_option(:region).should == :us
22
- end
23
-
24
- it "defaults to indifferent hashes" do
25
- subject.get_option(:indifferent_hashes).should == true
26
- end
27
-
28
- it "defaults to the Net::HTTP library" do
29
- subject.get_option(:http_adapter).should == :net_http
30
- end
31
- end
32
-
33
- context "HTTP adapter" do
34
- it "retrieval is via the Adapter module" do
35
- adapter = subject.get_option(:http_adapter)
36
- Battlenet::AdapterManager.should_receive(:fetch).with(adapter)
37
- subject.send(:adapter)
38
- end
39
-
40
- it "caches its adapter" do
41
- mock_adapter = mock("adapter")
42
- Battlenet::AdapterManager.should_receive(:fetch).with(any_args()).and_return(mock_adapter)
43
- adapter = subject.send(:adapter)
44
- subject.set_option(:http_adapter, :fake_adapter)
45
- subject.send(:adapter).should == mock_adapter
46
- end
47
- end
48
-
49
- it "returns a base URL dependant on the region" do
50
- old_region = subject.get_option(:region)
51
- subject.set_option(:region, :eu)
52
- subject.send(:base_url).should == "http://eu.battle.net/api/wow"
53
- subject.set_option(:region, old_region)
54
- end
55
-
56
- context "#make_query_string" do
57
- it "produces an empty string with an empty hash" do
58
- str = subject.send(:make_query_string, {})
59
- str.should be_empty
60
- end
61
-
62
- it "starts with a question mark" do
63
- str = subject.send(:make_query_string, {:first => "value1", :second => "value2"})
64
- str.start_with?("?").should == true
65
- end
66
-
67
- it "parses a basic hash" do
68
- str = subject.send(:make_query_string, {:first => "value1", :second => "value2"})
69
- str.should == "?first=value1&second=value2"
70
- end
71
-
72
- it "parses a hash with array values" do
73
- str = subject.send(:make_query_string, {:first => ["value1", "value2"], :second => "value3"})
74
- str.should == "?first=value1&first=value2&second=value3"
75
- end
76
-
77
- it "escapes values" do
78
- str = subject.send(:make_query_string, {:first => ["value1", "va&lue2"], :second => "val&ue3"})
79
- str.should == "?first=value1&first=va%26lue2&second=val%26ue3"
80
- end
81
- end
82
-
83
- context "#make_api_call" do
84
- it "makes a get call with the correct URL" do
85
- subject.should_receive(:get).once.with("http://us.battle.net/api/wow/my/path").and_return([200, '{"testing": "value"}'])
86
- subject.send(:make_api_call, '/my/path')
87
- end
88
-
89
- it "adds a slash to the path if necessary" do
90
- subject.should_receive(:get).once.with("http://us.battle.net/api/wow/my/path").and_return([200, '{"testing": "value"}'])
91
- subject.send(:make_api_call, 'my/path')
92
- end
93
-
94
- it "converts the second parameter into a query string" do
95
- options = {:first => ["value1", "va&lue2"], :second => "val&ue3"}
96
- query_string = subject.send(:make_query_string, options)
97
- subject.should_receive(:get).once.with("http://us.battle.net/api/wow/my/path#{query_string}").and_return([200, '{"testing": "value"}'])
98
- subject.send(:make_api_call, 'my/path', options)
99
- end
100
-
101
- it "raises an exception on an error" do
102
- subject.adapter.should_receive(:get).and_return([404, "not found"])
103
- lambda {
104
- subject.make_api_call('my/path')
105
- }.should raise_error Battlenet::API::APIError, /404 (.*) not found/
106
- end
107
-
108
- it "returns the data as JSON" do
109
- subject.adapter.should_receive(:get).and_return([200, '{"testing": "value"}'])
110
- data = subject.make_api_call('my/path')
111
- data.should be_a Hash
112
- data["testing"].should == "value"
113
- end
114
- end
115
- end