enceladus 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/enceladus.gemspec +2 -0
- data/lib/enceladus/configuration/image.rb +1 -0
- data/lib/enceladus/exceptions.rb +8 -1
- data/lib/enceladus/logger.rb +57 -0
- data/lib/enceladus/models/movie.rb +4 -3
- data/lib/enceladus/models/production_company.rb +49 -1
- data/lib/enceladus/models/production_company_collection.rb +3 -0
- data/lib/enceladus/requester.rb +13 -2
- data/lib/enceladus/version.rb +1 -1
- data/lib/enceladus.rb +3 -1
- data/spec/enceladus/configuration/api_spec.rb +11 -2
- data/spec/enceladus/configuration/image_spec.rb +7 -1
- data/spec/enceladus/enceladus_spec.rb +1 -1
- data/spec/enceladus/logger_spec.rb +45 -0
- data/spec/enceladus/models/account_spec.rb +13 -25
- data/spec/enceladus/models/cast_spec.rb +1 -1
- data/spec/enceladus/models/guest_account_spec.rb +1 -1
- data/spec/enceladus/models/movie_collection_spec.rb +7 -13
- data/spec/enceladus/models/movie_spec.rb +20 -19
- data/spec/enceladus/models/production_company_spec.rb +118 -0
- data/spec/enceladus/requester_spec.rb +16 -0
- data/spec/factories/accounts.rb +10 -0
- data/spec/factories/authentications.rb +6 -0
- data/spec/factories/certifications.rb +9 -0
- data/spec/factories/configurations.rb +34 -0
- data/spec/factories/credits.rb +11 -0
- data/spec/factories/credits_collection.rb +6 -0
- data/spec/factories/errors.rb +6 -0
- data/spec/factories/genres.rb +6 -0
- data/spec/factories/guest_accounts.rb +9 -0
- data/spec/factories/movie_collection_resources.rb +16 -0
- data/spec/factories/movie_collections.rb +8 -0
- data/spec/factories/movies.rb +31 -0
- data/spec/factories/movies_production_companies.rb +6 -0
- data/spec/factories/production_companies.rb +11 -0
- data/spec/factories/production_company_collection_resources.rb +9 -0
- data/spec/factories/production_company_collections.rb +8 -0
- data/spec/factories/production_countries.rb +6 -0
- data/spec/factories/request_tokens.rb +9 -0
- data/spec/factories/sessions.rb +8 -0
- data/spec/factories/spoken_languages.rb +6 -0
- data/spec/factories/youtube_trailers.rb +8 -0
- data/spec/spec_helper.rb +14 -5
- data/spec/support/api_resource.rb +25 -0
- data/spec/support/responses/collection_response.rb +18 -0
- data/spec/support/responses/movie_collection_response.rb +2 -16
- data/spec/support/responses/production_company_collection_resource_response.rb +22 -0
- data/spec/support/responses/production_company_collection_response.rb +6 -0
- data/spec/support/responses/production_company_response.rb +29 -0
- metadata +102 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 139bb385b5d027360419125fd05ef0753aca301b
|
4
|
+
data.tar.gz: 7b62151b09ee814c25e65aa638ef28cd26928a40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 334283da05ca610a0096cbcec843f3eb5af9e7c76868e9fba64bd220cb7db55f27f418ccb624f679aecfb44e7cf1f784c2b684bb512ee66fd1a243698c0fb9c4
|
7
|
+
data.tar.gz: 4c2c0935d77d0af41709cd754cb4f9cd3b2e1da8bfdb97a76184746b7d15084747a003c2104ad4612db8cd7b5f88bb6c3aef6b413dbd6bc669de65908dbcafee
|
data/.gitignore
CHANGED
data/enceladus.gemspec
CHANGED
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
|
27
27
|
spec.add_development_dependency 'webmock', '~> 1.18', '>= 1.18.0'
|
28
28
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4', '>= 0.4.0'
|
29
|
+
spec.add_development_dependency 'factory_girl', '~> 4.0', '>= 4.0.0'
|
30
|
+
spec.add_development_dependency 'faker', '~> 1.0', '>= 1.0.0'
|
29
31
|
end
|
data/lib/enceladus/exceptions.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
module Enceladus::Exception
|
2
|
-
class Base < ::Exception
|
2
|
+
class Base < ::Exception
|
3
|
+
def initialize(message)
|
4
|
+
Enceladus::Logger.log.error { message }
|
5
|
+
super(message)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
3
9
|
class Api < Base; end
|
4
10
|
class ArgumentError < Base; end
|
11
|
+
class JsonParseError < Base; end
|
5
12
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'singleton'
|
3
|
+
|
4
|
+
# Logger is a class implemented by using the singleton pattern mainly responsible for loggin requests, responses and exceptions.
|
5
|
+
# Examples:
|
6
|
+
# Enceladus::Logger.log.error { "Woops! Something when wrong..." }
|
7
|
+
# Enceladus::Logger.log.info { "Yay! That works like a charm!" }
|
8
|
+
# Enceladus::Logger.log.warn { "Hummm... code smells here..." }
|
9
|
+
# Enceladus::Logger.log.fatal { "Game over..." }
|
10
|
+
#
|
11
|
+
class Enceladus::Logger < Logger
|
12
|
+
include Singleton
|
13
|
+
|
14
|
+
# By default Enceladus::Logger logs messages to STDOUT and the default log level is Logger::ERROR (check out http://www.ruby-doc.org/stdlib-2.0.0/libdoc/logger/rdoc/Logger.html#class-Logger-label-Description for more information).
|
15
|
+
@@logger_output = STDOUT
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def new
|
19
|
+
super(logger_output).tap do |logger|
|
20
|
+
logger.disable_debug_mode!
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
alias :log :instance
|
25
|
+
|
26
|
+
# Defines where to log messages.
|
27
|
+
# Example:
|
28
|
+
# Enceladus::Logger.logger_output = Rails.root.join("log", "enceladus.log")
|
29
|
+
#
|
30
|
+
def logger_output=(output)
|
31
|
+
@@logger_output = output
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the current logger output.
|
35
|
+
# Example:
|
36
|
+
# Enceladus::Logger.logger_output
|
37
|
+
# => "/Users/john/super_project/log/enceladus.log"
|
38
|
+
#
|
39
|
+
def logger_output
|
40
|
+
@@logger_output
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Changes the log level to DEBUG.
|
45
|
+
# Example:
|
46
|
+
# Enceladus::Loger.instance.enable_debug_mode!
|
47
|
+
def enable_debug_mode!
|
48
|
+
self.level = Enceladus::Logger::DEBUG
|
49
|
+
end
|
50
|
+
|
51
|
+
# Disables the debug mode by changing the log level to ERROR.
|
52
|
+
# Example:
|
53
|
+
# Enceladus::Loger.instance.disable_debug_mode!
|
54
|
+
def disable_debug_mode!
|
55
|
+
self.level = Enceladus::Logger::ERROR
|
56
|
+
end
|
57
|
+
end
|
@@ -20,7 +20,7 @@ class Enceladus::Movie < Enceladus::ApiResource
|
|
20
20
|
# Enceladus::Movie.find_by_title("emmanuelle")
|
21
21
|
#
|
22
22
|
def self.find_by_title(title)
|
23
|
-
Enceladus::MovieCollection.new("search/movie",
|
23
|
+
Enceladus::MovieCollection.new("search/movie", default_params.merge(query: title))
|
24
24
|
end
|
25
25
|
|
26
26
|
# Returns a paginated collection of upcoming movies.
|
@@ -156,7 +156,8 @@ private
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def self.default_params
|
159
|
-
|
160
|
-
|
159
|
+
language = Enceladus::Configuration::Image.instance.include_image_language
|
160
|
+
adult = Enceladus::Configuration::Api.instance.include_adult
|
161
|
+
{ append_to_response: "releases,trailers", include_image_language: language, language: language, include_adult: adult }
|
161
162
|
end
|
162
163
|
end
|
@@ -1,4 +1,52 @@
|
|
1
1
|
class Enceladus::ProductionCompany < Enceladus::ApiResource
|
2
|
-
RESOURCE_ATTRIBUTES = [:id, :name].map(&:freeze).freeze
|
2
|
+
RESOURCE_ATTRIBUTES = [:id, :logo_path, :name, :description, :headquarters, :homepage].map(&:freeze).freeze
|
3
3
|
attr_accessor *RESOURCE_ATTRIBUTES
|
4
|
+
|
5
|
+
# Returns a paginated collection of ProductionCompanies with the name.
|
6
|
+
# Example:
|
7
|
+
# Enceladus::ProductionCompany.find_by_name("Marvel")
|
8
|
+
#
|
9
|
+
def self.find_by_name(name)
|
10
|
+
Enceladus::ProductionCompanyCollection.new("search/company", { query: name })
|
11
|
+
end
|
12
|
+
|
13
|
+
# Finds a production company by id.
|
14
|
+
# Example:
|
15
|
+
# company = Enceladus::ProductionCompany.find(7505)
|
16
|
+
def self.find(id)
|
17
|
+
build_single_resource(Enceladus::Requester.get("company/#{id}", default_params))
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns an array containing URL's (as string) for the companies logos.
|
21
|
+
def logo_urls
|
22
|
+
Enceladus::Configuration::Image.instance.url_for("logo", logo_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Fetchs for more details about the production company.
|
26
|
+
# Example:
|
27
|
+
# marvel = Enceladus::ProductionCompany.find_by_name("marvel").last
|
28
|
+
# => #<Enceladus::ProductionCompany @id=325, @logo_path="/pic.png", @name="Marvel Entertainment, LLC">
|
29
|
+
# marvel.reload
|
30
|
+
# => #<Enceladus::ProductionCompan @id=325, @logo_path="/pic.png", @name="Marvel Entertainment, LLC", @description=nil, @headquarters="New York, New York, USA", @homepage="http://www.marvel.com">
|
31
|
+
#
|
32
|
+
def reload
|
33
|
+
rebuild_single_resource(Enceladus::Requester.get("company/#{id}", self.class.default_params))
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns a paginated collection of all movies of a production company.
|
37
|
+
# Example:
|
38
|
+
# marvel = Enceladus::ProductionCompany.find(7505)
|
39
|
+
# marvel.movies
|
40
|
+
# => [Movie(@title="Thor"), Movie(@title="Captain America"), Movie(@title="Iron Man")]
|
41
|
+
#
|
42
|
+
def movies
|
43
|
+
Enceladus::MovieCollection.new("company/#{id}/movies", Enceladus::Movie.default_params)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def self.default_params
|
49
|
+
language = Enceladus::Configuration::Image.instance.include_image_language
|
50
|
+
{ append_to_response: "description,headquarters,homepage,id,logo_path,name", language: language }
|
51
|
+
end
|
4
52
|
end
|
data/lib/enceladus/requester.rb
CHANGED
@@ -13,8 +13,9 @@ class Enceladus::Requester
|
|
13
13
|
#
|
14
14
|
def get(action, params={})
|
15
15
|
url = api.url_for(action, params)
|
16
|
+
Enceladus::Logger.log.info { "About to request: #{url}" }
|
16
17
|
perform_request do
|
17
|
-
|
18
|
+
parse_response(RestClient.get(url, request_headers))
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -30,8 +31,9 @@ class Enceladus::Requester
|
|
30
31
|
#
|
31
32
|
def post(action, params={}, form_data={})
|
32
33
|
url = api.url_for(action, params)
|
34
|
+
Enceladus::Logger.log.info { "About to request: #{url}" }
|
33
35
|
perform_request do
|
34
|
-
|
36
|
+
parse_response(RestClient.post(url, form_data.to_json, request_headers))
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -64,5 +66,14 @@ class Enceladus::Requester
|
|
64
66
|
def request_headers
|
65
67
|
{ accept: 'application/json', content_type: 'application/json' }
|
66
68
|
end
|
69
|
+
|
70
|
+
def parse_response(response_body)
|
71
|
+
begin
|
72
|
+
Enceladus::Logger.log.info { "Response: #{JSON.pretty_generate(JSON.parse(response_body))}" }
|
73
|
+
JSON.parse(response_body, object_class: OpenStruct)
|
74
|
+
rescue JSON::ParserError => e
|
75
|
+
raise Enceladus::Exception::JsonParseError.new("Response body could not be parsed: #{e.message}")
|
76
|
+
end
|
77
|
+
end
|
67
78
|
end
|
68
79
|
end
|
data/lib/enceladus/version.rb
CHANGED
data/lib/enceladus.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/enceladus/version"
|
2
2
|
require File.dirname(__FILE__) + "/enceladus/exceptions"
|
3
|
+
require File.dirname(__FILE__) + "/enceladus/logger"
|
3
4
|
require File.dirname(__FILE__) + "/enceladus/requester"
|
4
5
|
require File.dirname(__FILE__) + "/enceladus/configuration/api"
|
5
6
|
require File.dirname(__FILE__) + "/enceladus/configuration/image"
|
@@ -9,9 +10,10 @@ require File.dirname(__FILE__) + "/enceladus/models/account"
|
|
9
10
|
require File.dirname(__FILE__) + "/enceladus/models/guest_account"
|
10
11
|
require File.dirname(__FILE__) + "/enceladus/models/genre"
|
11
12
|
require File.dirname(__FILE__) + "/enceladus/models/movie"
|
12
|
-
require File.dirname(__FILE__) + "/enceladus/models/cast"
|
13
13
|
require File.dirname(__FILE__) + "/enceladus/models/movie_collection"
|
14
|
+
require File.dirname(__FILE__) + "/enceladus/models/cast"
|
14
15
|
require File.dirname(__FILE__) + "/enceladus/models/production_company"
|
16
|
+
require File.dirname(__FILE__) + "/enceladus/models/production_company_collection"
|
15
17
|
require File.dirname(__FILE__) + "/enceladus/models/production_country"
|
16
18
|
require File.dirname(__FILE__) + "/enceladus/models/release"
|
17
19
|
require File.dirname(__FILE__) + "/enceladus/models/spoken_language"
|
@@ -1,14 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Enceladus::Configuration::Api do
|
4
|
+
|
5
|
+
around do |example|
|
6
|
+
Singleton.__init__(Enceladus::Configuration::Api)
|
7
|
+
example.run
|
8
|
+
Singleton.__init__(Enceladus::Configuration::Api)
|
9
|
+
end
|
10
|
+
|
4
11
|
describe "#connect" do
|
5
12
|
subject { Enceladus::Configuration::Api.instance.connect(api_key) }
|
6
13
|
let(:api_key) { "token" }
|
14
|
+
let(:error_response) { build(:error_response) }
|
7
15
|
|
8
16
|
context "when the provided api_key is not valid" do
|
9
17
|
before do
|
10
18
|
stub_request(:get, /api.themoviedb.org\/3\/configuration/).
|
11
|
-
to_return(status: 401, body:
|
19
|
+
to_return(status: 401, body: error_response.to_json)
|
12
20
|
end
|
13
21
|
|
14
22
|
it "should set Enceladus::Configuration::Api api_key as nil" do
|
@@ -27,9 +35,10 @@ describe Enceladus::Configuration::Api do
|
|
27
35
|
end
|
28
36
|
|
29
37
|
context "when the provided api_key is valid" do
|
38
|
+
let(:configuration_response) { build(:configuration_response) }
|
30
39
|
before do
|
31
40
|
stub_request(:get, /api.themoviedb.org\/3\/configuration/).
|
32
|
-
to_return(status: 200, body:
|
41
|
+
to_return(status: 200, body: configuration_response.to_json)
|
33
42
|
end
|
34
43
|
|
35
44
|
it "should save Enceladus::Configuration::Api api_key" do
|
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Enceladus::Configuration::Image do
|
4
|
-
let(:configuration) {
|
4
|
+
let(:configuration) { build(:configuration_response) }
|
5
|
+
|
6
|
+
around do |example|
|
7
|
+
Singleton.__init__(Enceladus::Configuration::Image)
|
8
|
+
example.run
|
9
|
+
Singleton.__init__(Enceladus::Configuration::Image)
|
10
|
+
end
|
5
11
|
|
6
12
|
describe "#setup!" do
|
7
13
|
subject(:image) { Enceladus::Configuration::Image.instance.setup! }
|
@@ -5,7 +5,7 @@ describe Enceladus do
|
|
5
5
|
describe ".connect" do
|
6
6
|
subject { Enceladus.connect(api_key) }
|
7
7
|
let(:api_key) { "token" }
|
8
|
-
let(:configuration) {
|
8
|
+
let(:configuration) { build(:configuration_response) }
|
9
9
|
|
10
10
|
before do
|
11
11
|
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body: configuration.to_json)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'singleton'
|
3
|
+
|
4
|
+
describe Enceladus::Logger, logger_test: true do
|
5
|
+
let(:logger) { Enceladus::Logger.instance }
|
6
|
+
|
7
|
+
around do |example|
|
8
|
+
Singleton.__init__(Enceladus::Logger)
|
9
|
+
example.run
|
10
|
+
Singleton.__init__(Enceladus::Logger)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#new" do
|
14
|
+
it "should set log level to ERROR" do
|
15
|
+
expect(logger.level).to eq(Enceladus::Logger::ERROR)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe ".logger_output=" do
|
20
|
+
subject { Enceladus::Logger.logger_output = output }
|
21
|
+
let(:output) { "enceladus.log" }
|
22
|
+
|
23
|
+
it "sets the logger output to the one provided" do
|
24
|
+
expect{ subject }.to change{ Enceladus::Logger.logger_output }.to(output)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#enable_debug_mode!" do
|
29
|
+
subject { logger.enable_debug_mode! }
|
30
|
+
before { logger.level = Enceladus::Logger::FATAL }
|
31
|
+
|
32
|
+
it "should set the logger level to DEBUG" do
|
33
|
+
expect{ subject }.to change{ logger.level }.to(Enceladus::Logger::DEBUG)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#disable_debug_mode!" do
|
38
|
+
subject { logger.disable_debug_mode! }
|
39
|
+
before { logger.level = Enceladus::Logger::FATAL }
|
40
|
+
|
41
|
+
it "should set the logger level to ERROR" do
|
42
|
+
expect{ subject }.to change{ logger.level }.to(Enceladus::Logger::ERROR)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Enceladus::Account do
|
4
4
|
|
5
|
-
let(:request_token_response) {
|
6
|
-
let(:authentication_response) {
|
7
|
-
let(:session_response) {
|
8
|
-
let(:account_response) {
|
5
|
+
let(:request_token_response) { build(:request_token_response) }
|
6
|
+
let(:authentication_response) { build(:authentication_response) }
|
7
|
+
let(:session_response) { build(:session_response) }
|
8
|
+
let(:account_response) { build(:account_response) }
|
9
9
|
let(:username) { "ashlynn_brooke" }
|
10
10
|
let(:password) { "corinthians" }
|
11
11
|
|
@@ -110,15 +110,11 @@ describe Enceladus::Account do
|
|
110
110
|
let(:account) { Enceladus::Account.new(username, password) }
|
111
111
|
|
112
112
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
113
|
-
let(:movie_1) {
|
114
|
-
let(:movie_2) {
|
115
|
-
let(:response) {
|
113
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
114
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
115
|
+
let(:response) { build(:movie_collection_response, results: [movie_1, movie_2]) }
|
116
116
|
|
117
117
|
before do
|
118
|
-
movie_1.id = 111
|
119
|
-
movie_2.id = 222
|
120
|
-
response.results = [movie_1, movie_2]
|
121
|
-
|
122
118
|
stub_request(:get, "https://api.themoviedb.org/3/account/#{account.id}/favorite/movies?api_key=token&page=1&session_id=#{session_response.session_id}").
|
123
119
|
to_return(status: 200, body: response.to_json)
|
124
120
|
end
|
@@ -133,15 +129,11 @@ describe Enceladus::Account do
|
|
133
129
|
let(:account) { Enceladus::Account.new(username, password) }
|
134
130
|
|
135
131
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
136
|
-
let(:movie_1) {
|
137
|
-
let(:movie_2) {
|
138
|
-
let(:response) {
|
132
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
133
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
134
|
+
let(:response) { build(:movie_collection_response, results: [movie_1, movie_2]) }
|
139
135
|
|
140
136
|
before do
|
141
|
-
movie_1.id = 111
|
142
|
-
movie_2.id = 222
|
143
|
-
response.results = [movie_1, movie_2]
|
144
|
-
|
145
137
|
stub_request(:get, "https://api.themoviedb.org/3/account/#{account.id}/rated/movies?api_key=token&page=1&session_id=#{session_response.session_id}").
|
146
138
|
to_return(status: 200, body: response.to_json)
|
147
139
|
end
|
@@ -156,15 +148,11 @@ describe Enceladus::Account do
|
|
156
148
|
let(:account) { Enceladus::Account.new(username, password) }
|
157
149
|
|
158
150
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
159
|
-
let(:movie_1) {
|
160
|
-
let(:movie_2) {
|
161
|
-
let(:response) {
|
151
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
152
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
153
|
+
let(:response) { build(:movie_collection_response, results: [movie_1, movie_2]) }
|
162
154
|
|
163
155
|
before do
|
164
|
-
movie_1.id = 111
|
165
|
-
movie_2.id = 222
|
166
|
-
response.results = [movie_1, movie_2]
|
167
|
-
|
168
156
|
stub_request(:get, "https://api.themoviedb.org/3/account/#{account.id}/watchlist/movies?api_key=token&page=1&session_id=#{session_response.session_id}").
|
169
157
|
to_return(status: 200, body: response.to_json)
|
170
158
|
end
|
@@ -7,7 +7,7 @@ describe Enceladus::Cast do
|
|
7
7
|
|
8
8
|
before do
|
9
9
|
cast.profile_path = "/aylar_lie.jpeg"
|
10
|
-
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body:
|
10
|
+
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body: build(:configuration_response).to_json)
|
11
11
|
Enceladus::Configuration::Image.instance.setup!
|
12
12
|
end
|
13
13
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Enceladus::GuestAccount do
|
4
4
|
|
5
|
-
let(:guest_account_response) {
|
5
|
+
let(:guest_account_response) { build(:guest_account_response) }
|
6
6
|
|
7
7
|
before do
|
8
8
|
stub_request(:get, "https://api.themoviedb.org/3/authentication/guest_session/new?api_key=token").
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Enceladus::MovieCollection do
|
4
|
-
let(:response) {
|
4
|
+
let(:response) { build(:movie_collection_response) }
|
5
5
|
let(:path) { "movie/upcoming" }
|
6
6
|
let(:params) { { test: 1 } }
|
7
7
|
|
@@ -164,12 +164,10 @@ describe Enceladus::MovieCollection do
|
|
164
164
|
describe "#last" do
|
165
165
|
subject { collection.last }
|
166
166
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
167
|
-
let(:movie_1) {
|
168
|
-
let(:movie_2) {
|
167
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
168
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
169
169
|
|
170
170
|
before do
|
171
|
-
movie_1.id = 111
|
172
|
-
movie_2.id = 222
|
173
171
|
response.results = [movie_1, movie_2]
|
174
172
|
stub_request(:get, /api.themoviedb.org\/3\/movie\/upcoming/).to_return(status: 200, body: response.to_json)
|
175
173
|
end
|
@@ -182,12 +180,10 @@ describe Enceladus::MovieCollection do
|
|
182
180
|
describe "#first" do
|
183
181
|
subject { collection.first }
|
184
182
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
185
|
-
let(:movie_1) {
|
186
|
-
let(:movie_2) {
|
183
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
184
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
187
185
|
|
188
186
|
before do
|
189
|
-
movie_1.id = 111
|
190
|
-
movie_2.id = 222
|
191
187
|
response.results = [movie_1, movie_2]
|
192
188
|
stub_request(:get, /api.themoviedb.org\/3\/movie\/upcoming/).to_return(status: 200, body: response.to_json)
|
193
189
|
end
|
@@ -200,12 +196,10 @@ describe Enceladus::MovieCollection do
|
|
200
196
|
describe "#all" do
|
201
197
|
subject { collection.all }
|
202
198
|
let(:collection) { Enceladus::MovieCollection.new(path) }
|
203
|
-
let(:movie_1) {
|
204
|
-
let(:movie_2) {
|
199
|
+
let(:movie_1) { build(:movie_collection_resource_response) }
|
200
|
+
let(:movie_2) { build(:movie_collection_resource_response) }
|
205
201
|
|
206
202
|
before do
|
207
|
-
movie_1.id = 111
|
208
|
-
movie_2.id = 222
|
209
203
|
response.results = [movie_1, movie_2]
|
210
204
|
stub_request(:get, /api.themoviedb.org\/3\/movie\/upcoming/).to_return(status: 200, body: response.to_json)
|
211
205
|
end
|
@@ -2,13 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Enceladus::Movie do
|
4
4
|
|
5
|
+
before do
|
6
|
+
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body: build(:configuration_response).to_json)
|
7
|
+
Enceladus.connect("token") # start configuration with default values
|
8
|
+
end
|
9
|
+
|
5
10
|
describe "#find" do
|
6
|
-
subject(:movie) { Enceladus::Movie.find(id) }
|
7
|
-
let(:
|
8
|
-
let(:movie_response) { MovieResponse.new }
|
11
|
+
subject(:movie) { Enceladus::Movie.find(movie_response.id) }
|
12
|
+
let(:movie_response) { build(:movie_response) }
|
9
13
|
|
10
14
|
before do
|
11
|
-
stub_request(:get, /api.themoviedb.org\/3\/movie
|
15
|
+
stub_request(:get, /api.themoviedb.org\/3\/movie\/#{movie_response.id}/).
|
12
16
|
to_return(status: 200, body: movie_response.to_json)
|
13
17
|
end
|
14
18
|
|
@@ -204,7 +208,7 @@ describe Enceladus::Movie do
|
|
204
208
|
[:upcoming, :now_playing, :popular, :top_rated].each do |endpoint|
|
205
209
|
describe ".#{endpoint}" do
|
206
210
|
subject(:movies) { Enceladus::Movie.send(endpoint) }
|
207
|
-
let(:response) {
|
211
|
+
let(:response) { build(:movie_collection_response) }
|
208
212
|
|
209
213
|
before do
|
210
214
|
stub_request(:get, /api.themoviedb.org\/3\/movie\/#{endpoint}/).to_return(status: 200, body: response.to_json)
|
@@ -223,7 +227,7 @@ describe Enceladus::Movie do
|
|
223
227
|
|
224
228
|
describe "#similar" do
|
225
229
|
subject(:movies) { movie.similar }
|
226
|
-
let(:response) {
|
230
|
+
let(:response) { build(:movie_collection_response) }
|
227
231
|
let(:movie) { Enceladus::Movie.new }
|
228
232
|
|
229
233
|
before do
|
@@ -243,11 +247,11 @@ describe Enceladus::Movie do
|
|
243
247
|
|
244
248
|
describe ".find_by_title" do
|
245
249
|
subject(:movies) { Enceladus::Movie.find_by_title(title) }
|
246
|
-
let(:response) {
|
250
|
+
let(:response) { build(:movie_collection_response) }
|
247
251
|
let(:title) { "Banana" }
|
248
252
|
|
249
253
|
before do
|
250
|
-
stub_request(:get, "https://api.themoviedb.org/3/search/movie?api_key=token&page=1&query=#{title}")
|
254
|
+
stub_request(:get, "https://api.themoviedb.org/3/search/movie?api_key=token&append_to_response=releases,trailers&include_adult=false&include_image_language=en&language=en&page=1&query=#{title}")
|
251
255
|
.to_return(status: 200, body: response.to_json)
|
252
256
|
end
|
253
257
|
|
@@ -266,7 +270,7 @@ describe Enceladus::Movie do
|
|
266
270
|
|
267
271
|
let(:movie) { Enceladus::Movie.new }
|
268
272
|
let(:movie_id) { 1234 }
|
269
|
-
let(:response) {
|
273
|
+
let(:response) { build(:movie_response, id: movie_id) }
|
270
274
|
|
271
275
|
before do
|
272
276
|
movie.id = movie_id
|
@@ -354,10 +358,11 @@ describe Enceladus::Movie do
|
|
354
358
|
|
355
359
|
context "when rating with permanent account" do
|
356
360
|
let(:account) { Enceladus::Account.new(username, password) }
|
357
|
-
|
358
|
-
let(:
|
359
|
-
let(:
|
360
|
-
let(:
|
361
|
+
|
362
|
+
let(:request_token_response) { build(:request_token_response) }
|
363
|
+
let(:authentication_response) { build(:authentication_response) }
|
364
|
+
let(:session_response) { build(:session_response) }
|
365
|
+
let(:account_response) { build(:account_response) }
|
361
366
|
let(:username) { "ashlynn_brooke" }
|
362
367
|
let(:password) { "corinthians" }
|
363
368
|
|
@@ -386,7 +391,7 @@ describe Enceladus::Movie do
|
|
386
391
|
|
387
392
|
context "when rating with guest account" do
|
388
393
|
let(:account) { Enceladus::GuestAccount.new }
|
389
|
-
let(:guest_account_response) {
|
394
|
+
let(:guest_account_response) { build(:guest_account_response) }
|
390
395
|
|
391
396
|
before do
|
392
397
|
stub_request(:get, "https://api.themoviedb.org/3/authentication/guest_session/new?api_key=token").
|
@@ -413,7 +418,7 @@ describe Enceladus::Movie do
|
|
413
418
|
subject(:cast) { movie.cast }
|
414
419
|
let(:movie) { Enceladus::Movie.new }
|
415
420
|
let(:movie_id) { 123 }
|
416
|
-
let(:response) {
|
421
|
+
let(:response) { build(:credits_collection_response) }
|
417
422
|
let(:cast_response) { response.cast.first }
|
418
423
|
|
419
424
|
before do
|
@@ -443,8 +448,6 @@ describe Enceladus::Movie do
|
|
443
448
|
|
444
449
|
before do
|
445
450
|
movie.backdrop_path = "/pamela_butt.jpeg"
|
446
|
-
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body: ConfigurationResponse.new.to_json)
|
447
|
-
Enceladus::Configuration::Image.instance.setup!
|
448
451
|
end
|
449
452
|
|
450
453
|
it "should return profile url" do
|
@@ -458,8 +461,6 @@ describe Enceladus::Movie do
|
|
458
461
|
|
459
462
|
before do
|
460
463
|
movie.poster_path = "/vivi_fernandes.jpeg"
|
461
|
-
stub_request(:get, /api.themoviedb.org\/3\/configuration/).to_return(status: 200, body: ConfigurationResponse.new.to_json)
|
462
|
-
Enceladus::Configuration::Image.instance.setup!
|
463
464
|
end
|
464
465
|
|
465
466
|
it "should return profile url" do
|