serpscan 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +82 -0
  6. data/Rakefile +1 -0
  7. data/lib/serpscan.rb +16 -0
  8. data/lib/serpscan/account.rb +8 -0
  9. data/lib/serpscan/api.rb +48 -0
  10. data/lib/serpscan/errors.rb +3 -0
  11. data/lib/serpscan/keyword.rb +10 -0
  12. data/lib/serpscan/search_engine.rb +6 -0
  13. data/lib/serpscan/search_engine_country.rb +21 -0
  14. data/lib/serpscan/serpscan_child_object.rb +23 -0
  15. data/lib/serpscan/serpscan_object.rb +68 -0
  16. data/lib/serpscan/utilities.rb +18 -0
  17. data/lib/serpscan/version.rb +3 -0
  18. data/lib/serpscan/website.rb +16 -0
  19. data/serpscan.gemspec +30 -0
  20. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml +52 -0
  21. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml +86 -0
  22. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_alltime_change.yml +46 -0
  23. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_current_rank.yml +46 -0
  24. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_day_change.yml +46 -0
  25. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml +46 -0
  26. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_initial_rank.yml +46 -0
  27. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_phrase.yml +46 -0
  28. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_engine_country_id.yml +46 -0
  29. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_volume.yml +46 -0
  30. data/spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_week_change.yml +46 -0
  31. data/spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_countries.yml +46 -0
  32. data/spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml +46 -0
  33. data/spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_title.yml +46 -0
  34. data/spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_SearchEngine_objects.yml +46 -0
  35. data/spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml +46 -0
  36. data/spec/fixtures/vcr_cassettes/Serpscan_Website/create_keyword/should_return_a_keyword_object.yml +96 -0
  37. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml +51 -0
  38. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml +86 -0
  39. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml +46 -0
  40. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_url.yml +46 -0
  41. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_Website_objects.yml +46 -0
  42. data/spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml +46 -0
  43. data/spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_a_paginated_array_of_keyword_objects.yml +663 -0
  44. data/spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_an_array_of_keyword_objects.yml +90 -0
  45. data/spec/lib/serpscan/keyword_spec.rb +8 -0
  46. data/spec/lib/serpscan/search_engine_spec.rb +6 -0
  47. data/spec/lib/serpscan/website_spec.rb +32 -0
  48. data/spec/spec_helper.rb +24 -0
  49. data/spec/support/shared_examples/creatable.rb +7 -0
  50. data/spec/support/shared_examples/deletable.rb +7 -0
  51. data/spec/support/shared_examples/findable.rb +9 -0
  52. data/spec/support/shared_examples/listable.rb +7 -0
  53. metadata +240 -0
@@ -0,0 +1,90 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://localhost:5055/api/v1/websites/1?token=123
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: 'OK '
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ X-Ua-Compatible:
24
+ - IE=Edge
25
+ Etag:
26
+ - '"c959b5255215b9b0a60282ec6a65f51d"'
27
+ Cache-Control:
28
+ - max-age=0, private, must-revalidate
29
+ X-Request-Id:
30
+ - 8f36bffc1a857fcc8f3a66ace6bddb91
31
+ X-Runtime:
32
+ - '0.022261'
33
+ Server:
34
+ - WEBrick/1.3.1 (Ruby/1.9.3/2013-01-15)
35
+ Date:
36
+ - Sun, 22 Feb 2015 20:52:37 GMT
37
+ Content-Length:
38
+ - '28'
39
+ Connection:
40
+ - Keep-Alive
41
+ body:
42
+ encoding: UTF-8
43
+ string: '{"id":1,"url":"example.com"}'
44
+ http_version:
45
+ recorded_at: Sun, 22 Feb 2015 20:52:37 GMT
46
+ - request:
47
+ method: get
48
+ uri: http://localhost:5055/api/v1/websites/1/keywords?token=123
49
+ body:
50
+ encoding: US-ASCII
51
+ string: ''
52
+ headers:
53
+ Accept:
54
+ - "*/*; q=0.5, application/xml"
55
+ Accept-Encoding:
56
+ - gzip, deflate
57
+ User-Agent:
58
+ - Ruby
59
+ response:
60
+ status:
61
+ code: 200
62
+ message: 'OK '
63
+ headers:
64
+ Content-Type:
65
+ - application/json; charset=utf-8
66
+ X-Ua-Compatible:
67
+ - IE=Edge
68
+ Etag:
69
+ - '"4b29feb9b5591e6d4942ed04b043122e"'
70
+ Cache-Control:
71
+ - max-age=0, private, must-revalidate
72
+ X-Request-Id:
73
+ - 8ccddba541fcaa47d67e17e4b45cf814
74
+ X-Runtime:
75
+ - '0.081146'
76
+ Server:
77
+ - WEBrick/1.3.1 (Ruby/1.9.3/2013-01-15)
78
+ Date:
79
+ - Sun, 22 Feb 2015 20:52:37 GMT
80
+ Content-Length:
81
+ - '239'
82
+ Connection:
83
+ - Keep-Alive
84
+ body:
85
+ encoding: UTF-8
86
+ string: '{"website_id":"1","page":1,"total_pages":1,"results":[{"id":3,"phrase":"example
87
+ keyword","current_rank":null,"initial_rank":null,"day_change":null,"week_change":null,"alltime_change":"_","search_volume":null,"search_engine_country_id":1}]}'
88
+ http_version:
89
+ recorded_at: Sun, 22 Feb 2015 20:52:37 GMT
90
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe Serpscan::Keyword, vcr: true do
4
+ it_should_behave_like 'a creatable object', keyword: 'example keyword', website_id: 1, search_engine_country_id: 1
5
+
6
+ it_should_behave_like 'a findable object', 1, Serpscan::Keyword::ATTRIBUTES
7
+ it_should_behave_like 'a deletable object', 1
8
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe Serpscan::SearchEngine, vcr: true do
4
+ it_should_behave_like 'a listable object', Serpscan::SearchEngine
5
+ it_should_behave_like 'a findable object', 1, Serpscan::SearchEngine::ATTRIBUTES
6
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Serpscan::Website, vcr: true do
4
+ it_should_behave_like 'a creatable object', url: 'example-website.com'
5
+ it_should_behave_like 'a listable object', Serpscan::Website
6
+ it_should_behave_like 'a findable object', 1, Serpscan::Website::ATTRIBUTES
7
+ it_should_behave_like 'a deletable object', 2
8
+ it_should_behave_like 'a listable object', Serpscan::Website
9
+
10
+ describe 'keywords' do
11
+ it 'should return a paginated array of keyword objects' do
12
+ website = subject.class.find(3)
13
+ keywords = website.keywords
14
+ expect(keywords.class).to eq Array
15
+ expect(keywords.first.class).to eq Serpscan::Keyword
16
+ expect(keywords.first.website.id).to eq website.id
17
+ end
18
+ end
19
+
20
+ describe 'create_keyword' do
21
+ let(:phrase) { 'new keyword' }
22
+
23
+ it 'should return a keyword object' do
24
+ website = subject.class.find(1)
25
+ keyword = website.create_keyword(phrase)
26
+ expect(keyword.class).to eq Serpscan::Keyword
27
+ expect(keyword.website).to eq website
28
+ expect(keyword.phrase).to eq phrase
29
+ expect(keyword.id).to_not be_nil
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,24 @@
1
+ require 'serpscan'
2
+ require 'rspec'
3
+ require 'webmock'
4
+ require 'vcr'
5
+
6
+ # Load shared examples
7
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
8
+
9
+ VCR.configure do |c|
10
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
11
+ c.hook_into :webmock
12
+ c.ignore_localhost = false
13
+ c.configure_rspec_metadata!
14
+ end
15
+
16
+ RSpec.configure do |config|
17
+ config.before(:all) do
18
+ Serpscan.api_key = '123'
19
+ end
20
+
21
+ config.before(:each) do
22
+ stub_const 'Serpscan::API::BASE_URL', 'http://localhost:5055/api/v1'
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ RSpec.shared_examples 'a creatable object' do |attributes|
2
+ let(:object) { subject.class.create(attributes) }
3
+
4
+ it 'should return object after creation' do
5
+ expect(object.class).to be subject.class
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ RSpec.shared_examples 'a deletable object' do |id|
2
+ let(:object) { subject.class.find(id) }
3
+
4
+ it 'should return true after delete' do
5
+ expect(object.delete).to be true
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ RSpec.shared_examples 'a findable object' do |id, attributes|
2
+ let(:object) { subject.class.find(id) }
3
+
4
+ attributes.each do |attribute|
5
+ it "should return a value for #{attribute}" do
6
+ expect(object.send(attribute)).not_to be nil
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ RSpec.shared_examples 'a listable object' do |subject|
2
+ it "should return an array of #{subject} objects" do
3
+ list = subject.all
4
+ expect(list.class).to eq Array
5
+ expect(list.first.class).to eq subject
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,240 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: serpscan
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dylan Montgomery
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-25 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.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rest-client
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: queryparams
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: API client for SERP Scan rank tracker
126
+ email:
127
+ - mail@citizensinspace.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - Gemfile
134
+ - LICENSE.txt
135
+ - README.md
136
+ - Rakefile
137
+ - lib/serpscan.rb
138
+ - lib/serpscan/account.rb
139
+ - lib/serpscan/api.rb
140
+ - lib/serpscan/errors.rb
141
+ - lib/serpscan/keyword.rb
142
+ - lib/serpscan/search_engine.rb
143
+ - lib/serpscan/search_engine_country.rb
144
+ - lib/serpscan/serpscan_child_object.rb
145
+ - lib/serpscan/serpscan_object.rb
146
+ - lib/serpscan/utilities.rb
147
+ - lib/serpscan/version.rb
148
+ - lib/serpscan/website.rb
149
+ - serpscan.gemspec
150
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml
151
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml
152
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_alltime_change.yml
153
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_current_rank.yml
154
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_day_change.yml
155
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
156
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_initial_rank.yml
157
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_phrase.yml
158
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_engine_country_id.yml
159
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_volume.yml
160
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_week_change.yml
161
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_countries.yml
162
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
163
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_title.yml
164
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_SearchEngine_objects.yml
165
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml
166
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/create_keyword/should_return_a_keyword_object.yml
167
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml
168
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml
169
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
170
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_url.yml
171
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_Website_objects.yml
172
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml
173
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_a_paginated_array_of_keyword_objects.yml
174
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_an_array_of_keyword_objects.yml
175
+ - spec/lib/serpscan/keyword_spec.rb
176
+ - spec/lib/serpscan/search_engine_spec.rb
177
+ - spec/lib/serpscan/website_spec.rb
178
+ - spec/spec_helper.rb
179
+ - spec/support/shared_examples/creatable.rb
180
+ - spec/support/shared_examples/deletable.rb
181
+ - spec/support/shared_examples/findable.rb
182
+ - spec/support/shared_examples/listable.rb
183
+ homepage: ''
184
+ licenses:
185
+ - MIT
186
+ metadata: {}
187
+ post_install_message:
188
+ rdoc_options: []
189
+ require_paths:
190
+ - lib
191
+ required_ruby_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ requirements: []
202
+ rubyforge_project:
203
+ rubygems_version: 2.4.5
204
+ signing_key:
205
+ specification_version: 4
206
+ summary: API client for SERP Scan rank tracker
207
+ test_files:
208
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml
209
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml
210
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_alltime_change.yml
211
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_current_rank.yml
212
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_day_change.yml
213
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
214
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_initial_rank.yml
215
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_phrase.yml
216
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_engine_country_id.yml
217
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_search_volume.yml
218
+ - spec/fixtures/vcr_cassettes/Serpscan_Keyword/it_should_behave_like_a_findable_object/should_return_a_value_for_week_change.yml
219
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_countries.yml
220
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
221
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_findable_object/should_return_a_value_for_title.yml
222
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_SearchEngine_objects.yml
223
+ - spec/fixtures/vcr_cassettes/Serpscan_SearchEngine/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml
224
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/create_keyword/should_return_a_keyword_object.yml
225
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_creatable_object/should_return_object_after_creation.yml
226
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_deletable_object/should_return_true_after_delete.yml
227
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_id.yml
228
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_findable_object/should_return_a_value_for_url.yml
229
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_Serpscan_Website_objects.yml
230
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/it_should_behave_like_a_listable_object/should_return_an_array_of_objects.yml
231
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_a_paginated_array_of_keyword_objects.yml
232
+ - spec/fixtures/vcr_cassettes/Serpscan_Website/keywords/should_return_an_array_of_keyword_objects.yml
233
+ - spec/lib/serpscan/keyword_spec.rb
234
+ - spec/lib/serpscan/search_engine_spec.rb
235
+ - spec/lib/serpscan/website_spec.rb
236
+ - spec/spec_helper.rb
237
+ - spec/support/shared_examples/creatable.rb
238
+ - spec/support/shared_examples/deletable.rb
239
+ - spec/support/shared_examples/findable.rb
240
+ - spec/support/shared_examples/listable.rb