marver 0.0.0 → 0.0.2

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +17 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +13 -0
  5. data/LICENSE +20 -0
  6. data/README.md +32 -0
  7. data/Rakefile +1 -0
  8. data/lib/marver.rb +35 -21
  9. data/lib/marver/builders/common_entities_builder.rb +46 -0
  10. data/lib/marver/builders/core_entities_builder.rb +34 -0
  11. data/lib/marver/client.rb +13 -0
  12. data/lib/marver/credentials.rb +23 -0
  13. data/lib/marver/data_container.rb +18 -0
  14. data/lib/marver/entities/common/image.rb +9 -0
  15. data/lib/marver/entities/common/key_date.rb +10 -0
  16. data/lib/marver/entities/common/price.rb +10 -0
  17. data/lib/marver/entities/common/text_object.rb +11 -0
  18. data/lib/marver/entities/common/url.rb +10 -0
  19. data/lib/marver/entities/core/character.rb +35 -0
  20. data/lib/marver/entities/core/comic.rb +46 -0
  21. data/lib/marver/entities/core/creator.rb +36 -0
  22. data/lib/marver/entities/core/event.rb +35 -0
  23. data/lib/marver/entities/core/serie.rb +37 -0
  24. data/lib/marver/entities/core/story.rb +36 -0
  25. data/lib/marver/entities/summaries/character_summary.rb +22 -0
  26. data/lib/marver/entities/summaries/comic_summary.rb +20 -0
  27. data/lib/marver/entities/summaries/creator_summary.rb +12 -0
  28. data/lib/marver/entities/summaries/event_summary.rb +14 -0
  29. data/lib/marver/entities/summaries/serie_summary.rb +13 -0
  30. data/lib/marver/entities/summaries/story_summary.rb +14 -0
  31. data/lib/marver/finders/character_finder.rb +24 -0
  32. data/lib/marver/helpers/string_helper.rb +36 -0
  33. data/lib/marver/rest/client.rb +22 -0
  34. data/lib/marver/rest/error.rb +13 -0
  35. data/lib/marver/rest/response.rb +18 -0
  36. data/lib/marver/version.rb +3 -0
  37. data/marver.gemspec +23 -0
  38. data/spec/fixtures/character.json +398 -0
  39. data/spec/fixtures/comic.json +243 -0
  40. data/spec/fixtures/creator.json +345 -0
  41. data/spec/fixtures/event.json +104 -0
  42. data/spec/fixtures/raw_json.json +398 -0
  43. data/spec/fixtures/serie.json +102 -0
  44. data/spec/fixtures/story.json +94 -0
  45. data/spec/marver/client_spec.rb +12 -0
  46. data/spec/marver/credentials_spec.rb +19 -0
  47. data/spec/marver/data_container_spec.rb +23 -0
  48. data/spec/marver/entities/core/character_spec.rb +76 -0
  49. data/spec/marver/entities/core/comic_spec.rb +150 -0
  50. data/spec/marver/entities/core/creator_spec.rb +83 -0
  51. data/spec/marver/entities/core/event_spec.rb +106 -0
  52. data/spec/marver/entities/core/serie_spec.rb +106 -0
  53. data/spec/marver/entities/core/story_spec.rb +70 -0
  54. data/spec/marver/entities/image_spec.rb +9 -0
  55. data/spec/marver/entities/key_date_spec.rb +17 -0
  56. data/spec/marver/entities/price_spec.rb +13 -0
  57. data/spec/marver/entities/summaries/character_summary_spec.rb +65 -0
  58. data/spec/marver/entities/summaries/comic_summary_spec.rb +64 -0
  59. data/spec/marver/entities/summaries/creator_summary_spec.rb +23 -0
  60. data/spec/marver/entities/summaries/event_summary_spec.rb +30 -0
  61. data/spec/marver/entities/summaries/serie_summary_spec.rb +26 -0
  62. data/spec/marver/entities/summaries/story_summary_spec.rb +30 -0
  63. data/spec/marver/entities/text_object_spec.rb +20 -0
  64. data/spec/marver/entities/url_spec.rb +16 -0
  65. data/spec/marver/finders/character_finder_spec.rb +27 -0
  66. data/spec/marver/rest/client_spec.rb +10 -0
  67. data/spec/marver/rest/error_spec.rb +14 -0
  68. data/spec/marver/rest/response_spec.rb +22 -0
  69. data/spec/spec_helper.rb +17 -0
  70. metadata +137 -8
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ require './lib/marver/entities/summaries/comic_summary'
3
+ require './lib/marver/credentials'
4
+
5
+ describe Marver::ComicSummary do
6
+ let(:credentials) { Marver::Credentials.new('pub_key', 'priv_key') }
7
+ let(:comic_summary) { Marver::ComicSummary.new({ "id" => "123", "resourceURI" => "http://example.net", "name" => "Hulk" }, credentials) }
8
+
9
+ it '#id' do
10
+ expect(comic_summary.id).to eq 123
11
+ end
12
+
13
+ it '#resource_uri' do
14
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
15
+ expect(comic_summary.resource_uri).to eq "http://example.net?ts=1&apikey=priv_key&hash=668dea517c974c12d8d0193cf2d8f7f7"
16
+ end
17
+
18
+ it '#type should always be nil' do
19
+ expect(comic_summary.type).to eq nil
20
+ end
21
+
22
+ it '#name' do
23
+ expect(comic_summary.name).to eq "Hulk"
24
+ end
25
+
26
+ describe '#full' do
27
+ before :each do
28
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
29
+ stub_get(comic_summary.resource_uri).to_return(:body => fixture('comic.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
30
+ @full_comic = comic_summary.full
31
+ end
32
+
33
+ it 'fetches the full view of the entity' do
34
+ expect(@full_comic.class).to eq Marver::Comic
35
+ expect(@full_comic.title).to eq "Age of X: Universe (2011) #1"
36
+ end
37
+
38
+ context 'summary objects' do
39
+ it 'has list of character summaries' do
40
+ expect(@full_comic.characters.class).to eq Array
41
+ expect(@full_comic.characters.first.class).to eq Marver::CharacterSummary
42
+ expect(@full_comic.characters.first.name).to eq "Captain America"
43
+ end
44
+
45
+ it 'has a list of stories summaries' do
46
+ expect(@full_comic.stories.class).to eq Array
47
+ expect(@full_comic.stories.first.class).to eq Marver::StorySummary
48
+ expect(@full_comic.stories.first.name).to eq "Age of X: Avengers (2011) #1"
49
+ end
50
+
51
+ it 'has a list of events summaries' do
52
+ expect(@full_comic.events.class).to eq Array
53
+ expect(@full_comic.events.first.class).to eq Marver::EventSummary
54
+ expect(@full_comic.events.first.name).to eq "Age of X"
55
+ end
56
+
57
+ it 'has a list of series summaries' do
58
+ expect(@full_comic.series.class).to eq Array
59
+ expect(@full_comic.series.first.class).to eq Marver::SerieSummary
60
+ expect(@full_comic.series.first.name).to eq "Age of X: Universe (2011)"
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,23 @@
1
+ require './lib/marver.rb'
2
+
3
+ describe Marver::CreatorSummary do
4
+ before :each do
5
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
6
+ credentials = Marver::Credentials.new('priv_key', 'pub_key')
7
+ @creator = Marver::CreatorSummary.new({
8
+ "resourceURI" => "http://gateway.marvel.com/v1/public/creators/648", "name" => "Simone Bianchi", "role" => "penciller (cover)"
9
+ }, credentials)
10
+ end
11
+
12
+ it "#name - creator's name" do
13
+ expect(@creator.name).to eq "Simone Bianchi"
14
+ end
15
+
16
+ it '#resource_uri - The canonical URL identifier for this resource.' do
17
+ expect(@creator.resource_uri).to eq "http://gateway.marvel.com/v1/public/creators/648?ts=1&apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819"
18
+ end
19
+
20
+ it '#role - the role this creator took' do
21
+ expect(@creator.role).to eq "penciller (cover)"
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require './lib/marver/entities/summaries/event_summary'
2
+ require './lib/marver/credentials'
3
+
4
+ describe Marver::EventSummary do
5
+ let(:credentials) { Marver::Credentials.new('priv_key', 'pub_key') }
6
+ let(:event_summary) { Marver::EventSummary.new({ "id" => "123", "resourceURI" => "http://example.net", "name" => "Breathing" }, credentials) }
7
+
8
+ it '#id' do
9
+ expect(event_summary.id).to eq 123
10
+ end
11
+
12
+ it '#resource_uri' do
13
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
14
+ expect(event_summary.resource_uri).to eq "http://example.net?ts=1&apikey=pub_key&hash=3d4ce88a477c7e4a5accbf6cd2c8b819"
15
+ end
16
+
17
+ it '#type should always be nil' do
18
+ expect(event_summary.type).to eq nil
19
+ end
20
+
21
+ it '#name' do
22
+ expect(event_summary.name).to eq "Breathing"
23
+ end
24
+
25
+ describe '#full' do
26
+ it 'fetches the full view of the entity' do
27
+ pending
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ require './lib/marver/entities/summaries/serie_summary'
2
+ require './lib/marver/credentials'
3
+
4
+ describe Marver::SerieSummary do
5
+ let(:credentials) { Marver::Credentials.new('pub_key', 'priv_key') }
6
+ let(:series_summary) { Marver::SerieSummary.new({ "resourceURI" => "http://example.net", "name" => "Hulk" }, credentials) }
7
+
8
+ it '#resource_uri' do
9
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
10
+ expect(series_summary.resource_uri).to eq "http://example.net?ts=1&apikey=priv_key&hash=668dea517c974c12d8d0193cf2d8f7f7"
11
+ end
12
+
13
+ it '#type should always be nil' do
14
+ expect(series_summary.type).to eq nil
15
+ end
16
+
17
+ it '#name' do
18
+ expect(series_summary.name).to eq "Hulk"
19
+ end
20
+
21
+ describe '#full' do
22
+ it 'fetches the full view of the entity' do
23
+ pending
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ require './lib/marver/entities/summaries/story_summary'
2
+ require './lib/marver/credentials'
3
+
4
+ describe Marver::StorySummary do
5
+ let(:credentials) { Marver::Credentials.new('pub_key', 'priv_key') }
6
+ let(:story_summary) { Marver::StorySummary.new({ "id" => "123", "resourceURI" => "http://example.net", "name" => "Hulk" }, credentials) }
7
+
8
+ it '#id' do
9
+ expect(story_summary.id).to eq 123
10
+ end
11
+
12
+ it '#resource_uri' do
13
+ Time.stub_chain(:now, :to_i, :to_s).and_return "1"
14
+ expect(story_summary.resource_uri).to eq "http://example.net?ts=1&apikey=priv_key&hash=668dea517c974c12d8d0193cf2d8f7f7"
15
+ end
16
+
17
+ it '#type should always be nil' do
18
+ expect(story_summary.type).to eq nil
19
+ end
20
+
21
+ it '#name' do
22
+ expect(story_summary.name).to eq "Hulk"
23
+ end
24
+
25
+ describe '#full' do
26
+ it 'fetches the full view of the entity' do
27
+ pending
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ require './lib/marver.rb'
2
+
3
+ describe Marver::TextObject do
4
+ let(:to) { Marver::TextObject.new({ "type" => "solicit text",
5
+ "language" => "LAT",
6
+ "text" => "Lorem ipsum dolor sit amet." })
7
+ }
8
+
9
+ it '#type - The string description of the text object (e.g. solicit text, preview text, etc.).' do
10
+ expect(to.type).to eq "solicit text"
11
+ end
12
+
13
+ it '#language - A language code denoting which language the text object is written in.' do
14
+ expect(to.language).to eq "LAT"
15
+ end
16
+
17
+ it '#text - The text of the text object.' do
18
+ expect(to.text).to eq "Lorem ipsum dolor sit amet."
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require './lib/marver.rb'
3
+
4
+ describe Marver::Url do
5
+ let(:json) { { "type" => "wiki", "url" => "http://marvel.com/universe/Hulk_(Bruce_Banner)?utm_campaign=apiRef&utm_source=f302f582215c3deedff86e8015f853c7" } }
6
+ let(:url) { Marver::Url.new(json) }
7
+
8
+
9
+ it '#type - description' do
10
+ expect(url.type).to eq "wiki"
11
+ end
12
+
13
+ it '#url - raw url' do
14
+ expect(url.url).to eq "http://marvel.com/universe/Hulk_(Bruce_Banner)?utm_campaign=apiRef&utm_source=f302f582215c3deedff86e8015f853c7"
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ require './lib/marver/finders/character_finder.rb'
2
+
3
+ describe Marver::CharacterFinder do
4
+ let(:credentials) { double(Marver::Credentials, class: Marver::Credentials) }
5
+ let(:finder) { Marver::CharacterFinder.new(credentials) }
6
+
7
+ it 'has credentials' do
8
+ expect(finder.credentials.class).to eq Marver::Credentials
9
+ end
10
+
11
+ it 'has a rest client' do
12
+ expect(finder.rest_client.class).to eq Marver::REST::Client
13
+ end
14
+
15
+ describe '#find' do
16
+ context 'no arguments' do
17
+ it 'returns a list of characters' do
18
+ end
19
+ end
20
+
21
+ context 'with arguments' do
22
+ it 'returns a character' do
23
+ pending
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper.rb'
2
+ require './lib/marver/rest/client.rb'
3
+
4
+ describe Marver::REST::Client do
5
+ let(:client) { Marver::REST::Client.new }
6
+
7
+ it '#endpoint' do
8
+ expect(client.endpoint).to eq "http://gateway.marvel.com/v1/public/"
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ require './lib/marver/rest/error.rb'
2
+
3
+ describe Marver::REST::Error do
4
+ let(:error) { Marver::REST::Error.new({ "code" => "404", "status" => "Not found."}) }
5
+
6
+ it '#code - the http status code of the error' do
7
+ expect(error.code).to eq 404
8
+ end
9
+
10
+ it '#status - description of the error' do
11
+ expect(error.status).to eq "Not found."
12
+ end
13
+
14
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require './lib/marver/rest/client.rb'
3
+ require './lib/marver/rest/response.rb'
4
+
5
+ describe Marver::REST::Response do
6
+
7
+ before :each do
8
+ stub_get("http://gateway.marvel.com/v1/public/characters").to_return(:body => fixture('raw_json.json'), :headers => {:content_type => 'application/json; charset=utf-8'})
9
+
10
+ client = Marver::REST::Client.new
11
+ @response = client.get_request('characters')
12
+ end
13
+
14
+ it 'has a response code ' do
15
+ expect(@response.code).to eq 200
16
+ end
17
+
18
+ it 'has a status' do
19
+ expect(@response.status).to eq "Ok"
20
+ end
21
+
22
+ end
@@ -0,0 +1,17 @@
1
+ require 'json'
2
+ require 'webmock'
3
+ require './lib/marver.rb'
4
+
5
+ include WebMock::API
6
+
7
+ def stub_get(path)
8
+ stub_request(:get, path)
9
+ end
10
+
11
+ def fixture_path
12
+ File.expand_path('../fixtures', __FILE__)
13
+ end
14
+
15
+ def fixture(file)
16
+ File.new(fixture_path + '/' + file)
17
+ end
metadata CHANGED
@@ -1,23 +1,120 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ile Eftimov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Marvel API Ruby Gem
14
- email: ileeftimov@gmail.com
11
+ date: 2014-03-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Marver, Marvel's API gem
42
+ email:
43
+ - ileeftimov@gmail.com
15
44
  executables: []
16
45
  extensions: []
17
46
  extra_rdoc_files: []
18
47
  files:
48
+ - .gitignore
49
+ - .ruby-version
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - LICENSE
53
+ - README.md
54
+ - Rakefile
19
55
  - lib/marver.rb
20
- homepage: http://rubygems.org/gems/marver
56
+ - lib/marver/builders/common_entities_builder.rb
57
+ - lib/marver/builders/core_entities_builder.rb
58
+ - lib/marver/client.rb
59
+ - lib/marver/credentials.rb
60
+ - lib/marver/data_container.rb
61
+ - lib/marver/entities/common/image.rb
62
+ - lib/marver/entities/common/key_date.rb
63
+ - lib/marver/entities/common/price.rb
64
+ - lib/marver/entities/common/text_object.rb
65
+ - lib/marver/entities/common/url.rb
66
+ - lib/marver/entities/core/character.rb
67
+ - lib/marver/entities/core/comic.rb
68
+ - lib/marver/entities/core/creator.rb
69
+ - lib/marver/entities/core/event.rb
70
+ - lib/marver/entities/core/serie.rb
71
+ - lib/marver/entities/core/story.rb
72
+ - lib/marver/entities/summaries/character_summary.rb
73
+ - lib/marver/entities/summaries/comic_summary.rb
74
+ - lib/marver/entities/summaries/creator_summary.rb
75
+ - lib/marver/entities/summaries/event_summary.rb
76
+ - lib/marver/entities/summaries/serie_summary.rb
77
+ - lib/marver/entities/summaries/story_summary.rb
78
+ - lib/marver/finders/character_finder.rb
79
+ - lib/marver/helpers/string_helper.rb
80
+ - lib/marver/rest/client.rb
81
+ - lib/marver/rest/error.rb
82
+ - lib/marver/rest/response.rb
83
+ - lib/marver/version.rb
84
+ - marver.gemspec
85
+ - spec/fixtures/character.json
86
+ - spec/fixtures/comic.json
87
+ - spec/fixtures/creator.json
88
+ - spec/fixtures/event.json
89
+ - spec/fixtures/raw_json.json
90
+ - spec/fixtures/serie.json
91
+ - spec/fixtures/story.json
92
+ - spec/marver/client_spec.rb
93
+ - spec/marver/credentials_spec.rb
94
+ - spec/marver/data_container_spec.rb
95
+ - spec/marver/entities/core/character_spec.rb
96
+ - spec/marver/entities/core/comic_spec.rb
97
+ - spec/marver/entities/core/creator_spec.rb
98
+ - spec/marver/entities/core/event_spec.rb
99
+ - spec/marver/entities/core/serie_spec.rb
100
+ - spec/marver/entities/core/story_spec.rb
101
+ - spec/marver/entities/image_spec.rb
102
+ - spec/marver/entities/key_date_spec.rb
103
+ - spec/marver/entities/price_spec.rb
104
+ - spec/marver/entities/summaries/character_summary_spec.rb
105
+ - spec/marver/entities/summaries/comic_summary_spec.rb
106
+ - spec/marver/entities/summaries/creator_summary_spec.rb
107
+ - spec/marver/entities/summaries/event_summary_spec.rb
108
+ - spec/marver/entities/summaries/serie_summary_spec.rb
109
+ - spec/marver/entities/summaries/story_summary_spec.rb
110
+ - spec/marver/entities/text_object_spec.rb
111
+ - spec/marver/entities/url_spec.rb
112
+ - spec/marver/finders/character_finder_spec.rb
113
+ - spec/marver/rest/client_spec.rb
114
+ - spec/marver/rest/error_spec.rb
115
+ - spec/marver/rest/response_spec.rb
116
+ - spec/spec_helper.rb
117
+ homepage: ''
21
118
  licenses:
22
119
  - MIT
23
120
  metadata: {}
@@ -40,5 +137,37 @@ rubyforge_project:
40
137
  rubygems_version: 2.0.14
41
138
  signing_key:
42
139
  specification_version: 4
43
- summary: Marver
44
- test_files: []
140
+ summary: Marver, Marvel's API gem
141
+ test_files:
142
+ - spec/fixtures/character.json
143
+ - spec/fixtures/comic.json
144
+ - spec/fixtures/creator.json
145
+ - spec/fixtures/event.json
146
+ - spec/fixtures/raw_json.json
147
+ - spec/fixtures/serie.json
148
+ - spec/fixtures/story.json
149
+ - spec/marver/client_spec.rb
150
+ - spec/marver/credentials_spec.rb
151
+ - spec/marver/data_container_spec.rb
152
+ - spec/marver/entities/core/character_spec.rb
153
+ - spec/marver/entities/core/comic_spec.rb
154
+ - spec/marver/entities/core/creator_spec.rb
155
+ - spec/marver/entities/core/event_spec.rb
156
+ - spec/marver/entities/core/serie_spec.rb
157
+ - spec/marver/entities/core/story_spec.rb
158
+ - spec/marver/entities/image_spec.rb
159
+ - spec/marver/entities/key_date_spec.rb
160
+ - spec/marver/entities/price_spec.rb
161
+ - spec/marver/entities/summaries/character_summary_spec.rb
162
+ - spec/marver/entities/summaries/comic_summary_spec.rb
163
+ - spec/marver/entities/summaries/creator_summary_spec.rb
164
+ - spec/marver/entities/summaries/event_summary_spec.rb
165
+ - spec/marver/entities/summaries/serie_summary_spec.rb
166
+ - spec/marver/entities/summaries/story_summary_spec.rb
167
+ - spec/marver/entities/text_object_spec.rb
168
+ - spec/marver/entities/url_spec.rb
169
+ - spec/marver/finders/character_finder_spec.rb
170
+ - spec/marver/rest/client_spec.rb
171
+ - spec/marver/rest/error_spec.rb
172
+ - spec/marver/rest/response_spec.rb
173
+ - spec/spec_helper.rb