battlenet 0.1.1 → 1.0.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.
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