zeit 0.0.1pre

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 ADDED
@@ -0,0 +1,24 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+ *.gem
21
+ .bundle
22
+
23
+ ## PROJECT::SPECIFIC
24
+ report.html
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ script: rake test
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode
6
+ - jruby-head
7
+ - rbx-19mode
8
+ - ruby-head
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: jruby-head
12
+ - rvm: rbx-19mode
13
+ - rvm: ruby-head
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in zeit.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,54 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ zeit (0.0.1pre)
5
+ faraday
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ coderay (1.0.8)
11
+ diff-lcs (1.1.3)
12
+ fakeweb (1.3.0)
13
+ faraday (0.8.4)
14
+ multipart-post (~> 1.1)
15
+ guard (1.5.4)
16
+ listen (>= 0.4.2)
17
+ lumberjack (>= 1.0.2)
18
+ pry (>= 0.9.10)
19
+ thor (>= 0.14.6)
20
+ guard-rspec (2.1.2)
21
+ guard (>= 1.1)
22
+ rspec (~> 2.11)
23
+ listen (0.6.0)
24
+ lumberjack (1.0.2)
25
+ method_source (0.8.1)
26
+ multipart-post (1.1.5)
27
+ pry (0.9.10)
28
+ coderay (~> 1.0.5)
29
+ method_source (~> 0.8)
30
+ slop (~> 3.3.1)
31
+ rb-fsevent (0.9.2)
32
+ rspec (2.12.0)
33
+ rspec-core (~> 2.12.0)
34
+ rspec-expectations (~> 2.12.0)
35
+ rspec-mocks (~> 2.12.0)
36
+ rspec-core (2.12.0)
37
+ rspec-expectations (2.12.0)
38
+ diff-lcs (~> 1.1.3)
39
+ rspec-mocks (2.12.0)
40
+ slop (3.3.3)
41
+ thor (0.16.0)
42
+ vcr (2.3.0)
43
+
44
+ PLATFORMS
45
+ ruby
46
+
47
+ DEPENDENCIES
48
+ bundler (~> 1.0)
49
+ fakeweb (~> 1.3.0)
50
+ guard-rspec (~> 2.1.2)
51
+ rb-fsevent
52
+ rspec (~> 2.12.0)
53
+ vcr (~> 2.3.0)
54
+ zeit!
data/Guardfile ADDED
@@ -0,0 +1,24 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
11
+ watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
12
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch('config/routes.rb') { "spec/routing" }
15
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
16
+
17
+ # Capybara features specs
18
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
19
+
20
+ # Turnip features and steps
21
+ watch(%r{^spec/acceptance/(.+)\.feature$})
22
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
23
+ end
24
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Roland Moriz
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Zeit
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'zeit'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install zeit
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core/rake_task'
4
+ desc 'Run RSpec'
5
+ RSpec::Core::RakeTask.new do |spec|
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ spec.rspec_opts = ['--color', '--format nested']
8
+ end
9
+
10
+ task :test => :spec
11
+ task :default => :test
data/lib/zeit/api.rb ADDED
@@ -0,0 +1,29 @@
1
+ module Zeit
2
+ class API
3
+
4
+ def initialize(params = {})
5
+ @api_key = params[:api_key]
6
+ @base_url = params[:base_url] || 'http://api.zeit.de:80/'
7
+
8
+ connection
9
+ end
10
+
11
+ def connection
12
+ @connection ||= Faraday.new(url: @base_url) do |faraday|
13
+ #faraday.request :url_encoded
14
+ faraday.use Zeit::AuthenticationMiddleware, @api_key
15
+ faraday.response :logger
16
+ faraday.adapter Faraday.default_adapter
17
+ end
18
+ end
19
+
20
+ def author
21
+ Zeit::Resources::Author.new connection
22
+ end
23
+
24
+ def client
25
+ Zeit::Resources::Client.new connection
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ module Zeit
2
+ class AuthenticationMiddleware < Faraday::Middleware
3
+ KEY = "X-Authorization".freeze
4
+
5
+ # Public
6
+ def self.key(key)
7
+ key
8
+ end
9
+
10
+ # Internal
11
+ def initialize(app, key)
12
+ @header_value = key
13
+ super(app)
14
+ end
15
+
16
+ # Public
17
+ def call(env)
18
+ unless env[:request_headers][KEY]
19
+ env[:request_headers][KEY] = @header_value
20
+ end
21
+ @app.call(env)
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,7 @@
1
+ module Zeit
2
+ module Resources
3
+ class Author < Base
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Zeit
2
+ module Resources
3
+ class Base
4
+ attr_accessor :query
5
+ attr_accessor :fields
6
+ attr_accessor :limit
7
+ attr_accessor :offset
8
+
9
+ def initialize(connection)
10
+ @connection = connection
11
+ @fields = []
12
+ end
13
+ end
14
+
15
+ def get
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ module Zeit
2
+ module Resources
3
+ class Client < Base
4
+ def client
5
+ raw_client
6
+ end
7
+
8
+ def raw_client
9
+ @connection.get '/client' do |request|
10
+ end
11
+ end
12
+
13
+ alias_method :get, :client
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ module Zeit
2
+ module Resources
3
+ class Content < Base
4
+
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,8 @@
1
+ module Zeit
2
+ module Resources
3
+ class Department < Base
4
+
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,8 @@
1
+ module Zeit
2
+ module Resources
3
+ class Keyword < Base
4
+
5
+ end
6
+ end
7
+ end
8
+
@@ -0,0 +1,7 @@
1
+ module Zeit
2
+ module Resources
3
+ class Product < Base
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zeit
2
+ module Resources
3
+ class Series < Base
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Zeit
2
+ VERSION = "0.0.1pre"
3
+ end
data/lib/zeit.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'faraday'
2
+
3
+ require 'zeit/version'
4
+ require 'zeit/resources/base'
5
+ require 'zeit/resources/author'
6
+ require 'zeit/resources/client'
7
+ require 'zeit/resources/content'
8
+ require 'zeit/resources/department'
9
+ require 'zeit/resources/keyword'
10
+ require 'zeit/resources/product'
11
+ require 'zeit/resources/series'
12
+ require 'zeit/authentication_middleware'
13
+ require 'zeit/api'
14
+
15
+ module Zeit
16
+ end
data/spec/api_spec.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::API' do
5
+ describe '.inititalize' do
6
+ it 'should be able to initialized with an api_key' do
7
+ zeit = Zeit::API.new api_key: 'something'
8
+ zeit.should be_instance_of(Zeit::API)
9
+ end
10
+
11
+ it 'should initialize a faraday connection object' do
12
+ zeit = Zeit::API.new api_key: 'something'
13
+ zeit.connection.should be_instance_of(Faraday::Connection)
14
+ end
15
+ end
16
+
17
+ describe '.author' do
18
+ subject { Zeit::API.new api_key: 'something' }
19
+ its(:author) { should be_instance_of(Zeit::Resources::Author) }
20
+ end
21
+
22
+ describe '.client' do
23
+ subject { Zeit::API.new api_key: 'something' }
24
+ its(:client) { should be_instance_of(Zeit::Resources::Client) }
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Author' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Author.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Client' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Client.new }.to raise_error
8
+ end
9
+ end
10
+
11
+ describe '#client' do
12
+ let(:api) { Zeit::API.new api_key: 'whatever' }
13
+ subject { Zeit::Resources::Client.new api.connection }
14
+
15
+ it 'should return information about the api usage of the current account' do
16
+ #subject.client
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Content' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Content.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Department' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Department.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Keyword' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Keyword.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Product' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Product.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require 'zeit'
2
+ require 'spec_helper'
3
+
4
+ describe 'Zeit::Resources::Series' do
5
+ describe '.new' do
6
+ it 'should require a connection object to be initalized' do
7
+ expect { Zeit::Resources::Series.new }.to raise_error
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |c|
4
+ c.cassette_library_dir = 'spec/vcr/cassettes'
5
+ c.hook_into :fakeweb
6
+ end
data/zeit.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'zeit/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'zeit'
8
+ gem.version = Zeit::VERSION
9
+ gem.authors = ['Roland Moriz']
10
+ gem.email = ['roland@moriz.de']
11
+ gem.description = %q{API client for Zeit.de API}
12
+ gem.summary = %q{API client for Zeit.de API, not working yet}
13
+ gem.homepage = "http://github.com/rmoriz/zeit"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ['lib']
19
+
20
+
21
+ if RUBY_PLATFORM == 'java'
22
+ gem.add_runtime_dependency 'jruby-openssl'
23
+ end
24
+
25
+ gem.add_dependency 'faraday'
26
+
27
+ gem.add_development_dependency 'bundler', '~> 1.0'
28
+ gem.add_development_dependency 'rspec', '~> 2.12.0'
29
+ gem.add_development_dependency 'guard-rspec', '~> 2.1.2'
30
+ gem.add_development_dependency 'rb-fsevent'
31
+ gem.add_development_dependency 'vcr', '~> 2.3.0'
32
+ gem.add_development_dependency 'fakeweb', '~> 1.3.0'
33
+ end
metadata ADDED
@@ -0,0 +1,199 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zeit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1pre
5
+ prerelease: 5
6
+ platform: ruby
7
+ authors:
8
+ - Roland Moriz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.12.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.12.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: guard-rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 2.1.2
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.1.2
78
+ - !ruby/object:Gem::Dependency
79
+ name: rb-fsevent
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: vcr
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.3.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.3.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: fakeweb
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.3.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.0
126
+ description: API client for Zeit.de API
127
+ email:
128
+ - roland@moriz.de
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .gitignore
134
+ - .travis.yml
135
+ - Gemfile
136
+ - Gemfile.lock
137
+ - Guardfile
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - lib/zeit.rb
142
+ - lib/zeit/api.rb
143
+ - lib/zeit/authentication_middleware.rb
144
+ - lib/zeit/resources/author.rb
145
+ - lib/zeit/resources/base.rb
146
+ - lib/zeit/resources/client.rb
147
+ - lib/zeit/resources/content.rb
148
+ - lib/zeit/resources/department.rb
149
+ - lib/zeit/resources/keyword.rb
150
+ - lib/zeit/resources/product.rb
151
+ - lib/zeit/resources/series.rb
152
+ - lib/zeit/version.rb
153
+ - spec/api_spec.rb
154
+ - spec/resources/author_spec.rb
155
+ - spec/resources/client_spec.rb
156
+ - spec/resources/content_spec.rb
157
+ - spec/resources/department_spec.rb
158
+ - spec/resources/keyword_spec.rb
159
+ - spec/resources/product_spec.rb
160
+ - spec/resources/series_spec.rb
161
+ - spec/spec_helper.rb
162
+ - zeit.gemspec
163
+ homepage: http://github.com/rmoriz/zeit
164
+ licenses: []
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ segments:
176
+ - 0
177
+ hash: -3422590589912785467
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>'
182
+ - !ruby/object:Gem::Version
183
+ version: 1.3.1
184
+ requirements: []
185
+ rubyforge_project:
186
+ rubygems_version: 1.8.23
187
+ signing_key:
188
+ specification_version: 3
189
+ summary: API client for Zeit.de API, not working yet
190
+ test_files:
191
+ - spec/api_spec.rb
192
+ - spec/resources/author_spec.rb
193
+ - spec/resources/client_spec.rb
194
+ - spec/resources/content_spec.rb
195
+ - spec/resources/department_spec.rb
196
+ - spec/resources/keyword_spec.rb
197
+ - spec/resources/product_spec.rb
198
+ - spec/resources/series_spec.rb
199
+ - spec/spec_helper.rb