enceladus 0.0.3 → 0.0.4
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.
- 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
|