thetvdb_mapper 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +5 -14
- data/lib/thetvdb_mapper.rb +4 -10
- data/lib/thetvdb_mapper/actor.rb +7 -0
- data/lib/thetvdb_mapper/banner.rb +14 -0
- data/lib/thetvdb_mapper/base.rb +3 -9
- data/lib/thetvdb_mapper/episode.rb +32 -11
- data/lib/thetvdb_mapper/series.rb +25 -11
- data/lib/thetvdb_mapper/version.rb +1 -1
- data/spec/functionals/actor_spec.rb +34 -0
- data/spec/functionals/banner_spec.rb +49 -0
- data/spec/functionals/episode_spec.rb +88 -0
- data/spec/functionals/series_spec.rb +72 -0
- data/thetvdb_mapper.gemspec +2 -1
- metadata +29 -65
- data/lib/thetvdb_mapper/actors.rb +0 -17
- data/lib/thetvdb_mapper/banners.rb +0 -17
- data/lib/thetvdb_mapper/fetcher.rb +0 -25
- data/lib/thetvdb_mapper/full_series.rb +0 -53
- data/lib/thetvdb_mapper/mapping/actor.rb +0 -11
- data/lib/thetvdb_mapper/mapping/banner.rb +0 -18
- data/lib/thetvdb_mapper/mapping/base.rb +0 -27
- data/lib/thetvdb_mapper/mapping/episode.rb +0 -45
- data/lib/thetvdb_mapper/mapping/series.rb +0 -36
- data/lib/thetvdb_mapper/mapping/string_list.rb +0 -5
- data/spec/functionals/mapping/actor_spec.rb +0 -36
- data/spec/functionals/mapping/banner_spec.rb +0 -72
- data/spec/functionals/mapping/episode_spec.rb +0 -165
- data/spec/functionals/mapping/series_spec.rb +0 -128
- data/spec/integrations/classes/actors_spec.rb +0 -11
- data/spec/integrations/classes/banners_spec.rb +0 -11
- data/spec/integrations/classes/episode_spec.rb +0 -11
- data/spec/integrations/classes/fetcher_spec.rb +0 -35
- data/spec/integrations/classes/full_series_spec.rb +0 -11
- data/spec/integrations/classes/series_spec.rb +0 -11
- data/spec/integrations/integration_spec_helper.rb +0 -2
- data/spec/integrations/support/.keep +0 -0
- data/spec/units/actors_spec.rb +0 -40
- data/spec/units/banners_spec.rb +0 -40
- data/spec/units/base_spec.rb +0 -15
- data/spec/units/episode_spec.rb +0 -33
- data/spec/units/fetcher_spec.rb +0 -67
- data/spec/units/full_series_spec.rb +0 -140
- data/spec/units/mapping/actor_spec.rb +0 -27
- data/spec/units/mapping/banner_spec.rb +0 -54
- data/spec/units/mapping/base_spec.rb +0 -36
- data/spec/units/mapping/episode_spec.rb +0 -142
- data/spec/units/mapping/series_spec.rb +0 -114
- data/spec/units/mapping/string_list_spec.rb +0 -11
- data/spec/units/series_spec.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddd665856a536718f13177e8c4c018f9a1f3eaa9
|
4
|
+
data.tar.gz: 67f691983facc4d15e2226df5680dd007e29f88f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 587bf6d15b9874b4a37aca30c0d077d7a8e364eab1494d80aeef078ace628c05b8dbf9687e9054f5363993bbf1c4ba9abd34ef4bd7ffd238bbec03ac024c0db7
|
7
|
+
data.tar.gz: dac0f4b0b37568af7519a7437245ead7b5a71f3409c512fd9c8208cf081a010d697c273b958a6550637682b815a6dac0608b8d8298f653bee8c1ef0a96a0f79f
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
# ThetvdbMapper
|
8
8
|
|
9
|
-
|
9
|
+
ThetvdbMapper mapping and normalizing keys in hash data provided by ThetvdbApi.
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -22,22 +22,13 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
$ gem install thetvdb_mapper
|
24
24
|
|
25
|
-
## Configuration
|
26
|
-
|
27
|
-
```ruby
|
28
|
-
ThetvdbApi::Configuration.configure do |config|
|
29
|
-
config.api_key = '......'
|
30
|
-
end
|
31
|
-
```
|
32
|
-
|
33
25
|
## Usage
|
34
26
|
|
35
27
|
```ruby
|
36
|
-
ThetvdbMapper::Actor.new(
|
37
|
-
ThetvdbMapper::Banners.new(
|
38
|
-
ThetvdbMapper::Episode.new(
|
39
|
-
ThetvdbMapper::
|
40
|
-
ThetvdbMapper::Series.new(series_id).data # return series
|
28
|
+
ThetvdbMapper::Actor.new(data)
|
29
|
+
ThetvdbMapper::Banners.new(data)
|
30
|
+
ThetvdbMapper::Episode.new(data)
|
31
|
+
ThetvdbMapper::Series.new(data)
|
41
32
|
```
|
42
33
|
|
43
34
|
## Contributing
|
data/lib/thetvdb_mapper.rb
CHANGED
@@ -1,18 +1,12 @@
|
|
1
|
+
require 'hashie'
|
2
|
+
|
1
3
|
module ThetvdbMapper
|
2
4
|
module Mapping; end
|
3
5
|
end
|
4
6
|
|
5
7
|
require 'thetvdb_mapper/version'
|
6
|
-
require 'thetvdb_mapper/fetcher'
|
7
|
-
require 'thetvdb_mapper/mapping/base'
|
8
|
-
require 'thetvdb_mapper/mapping/actor'
|
9
|
-
require 'thetvdb_mapper/mapping/banner'
|
10
|
-
require 'thetvdb_mapper/mapping/episode'
|
11
|
-
require 'thetvdb_mapper/mapping/series'
|
12
|
-
require 'thetvdb_mapper/mapping/string_list'
|
13
8
|
require 'thetvdb_mapper/base'
|
14
|
-
require 'thetvdb_mapper/
|
15
|
-
require 'thetvdb_mapper/
|
9
|
+
require 'thetvdb_mapper/actor'
|
10
|
+
require 'thetvdb_mapper/banner'
|
16
11
|
require 'thetvdb_mapper/episode'
|
17
|
-
require 'thetvdb_mapper/full_series'
|
18
12
|
require 'thetvdb_mapper/series'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class ThetvdbMapper::Actor < ThetvdbMapper::Base
|
2
|
+
property :id, from: 'id', with: lambda { |value| value.to_i }
|
3
|
+
property :image_path, from: 'Image'
|
4
|
+
property :name, from: 'Name'
|
5
|
+
property :role, from: 'Role'
|
6
|
+
property :sort_order, from: 'SortOrder', with: lambda { |value| value.to_i }
|
7
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class ThetvdbMapper::Banner < ThetvdbMapper::Base
|
2
|
+
property :id, from: 'id', with: lambda { |value| value.to_i }
|
3
|
+
property :path, from: 'BannerPath'
|
4
|
+
property :thumbnail_path, from: 'ThumbnailPath'
|
5
|
+
property :vignette_path, from: 'VignettePath'
|
6
|
+
property :kind, from: 'BannerType'
|
7
|
+
property :kind2, from: 'BannerType2'
|
8
|
+
property :language, from: 'Language'
|
9
|
+
property :season, from: 'Season', with: lambda { |value| value.to_i }
|
10
|
+
property :rating, from: 'Rating', with: lambda { |value| value.to_f }
|
11
|
+
property :rating_count, from: 'RatingCount', with: lambda { |value| value.to_i }
|
12
|
+
property :series_name, from: 'SeriesName'
|
13
|
+
property :colors, from: 'Colors'
|
14
|
+
end
|
data/lib/thetvdb_mapper/base.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
|
-
class ThetvdbMapper::Base
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(id)
|
5
|
-
@id = id
|
6
|
-
end
|
7
|
-
|
8
|
-
def fetcher
|
9
|
-
@fetcher ||= ThetvdbMapper::Fetcher.new
|
1
|
+
class ThetvdbMapper::Base < Hashie::Trash
|
2
|
+
def self.to_array(string)
|
3
|
+
string.to_s.split('|').reject{ |element| element.empty? }
|
10
4
|
end
|
11
5
|
end
|
@@ -1,13 +1,34 @@
|
|
1
1
|
class ThetvdbMapper::Episode < ThetvdbMapper::Base
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
2
|
+
property :id, from: 'id', with: lambda { |value| value.to_i }
|
3
|
+
property :combined_episode_number, from: 'Combined_episodenumber', with: lambda { |value| value.to_f }
|
4
|
+
property :combined_season, from: 'Combined_season', with: lambda { |value| value.to_f }
|
5
|
+
property :dvd_chapter, from: 'DVD_chapter'
|
6
|
+
property :dvd_disc_id, from: 'DVD_discid'
|
7
|
+
property :dvd_episode_number, from: 'DVD_episodenumber', with: lambda { |value| value.to_f }
|
8
|
+
property :dvd_season, from: 'DVD_season', with: lambda { |value| value.to_i }
|
9
|
+
property :directors, from: 'Director', with: lambda { |value| to_array(value) }
|
10
|
+
property :ep_img_flag, from: 'EpImgFlag', with: lambda { |value| value.to_i }
|
11
|
+
property :name, from: 'EpisodeName'
|
12
|
+
property :number, from: 'EpisodeNumber', with: lambda { |value| value.to_i }
|
13
|
+
property :first_aired, from: 'FirstAired', with: lambda { |value| Date.parse(value) }
|
14
|
+
property :guest_stars, from: 'GuestStars', with: lambda { |value| to_array(value) }
|
15
|
+
property :imdb_id, from: 'IMDB_ID'
|
16
|
+
property :language, from: 'Language'
|
17
|
+
property :overview, from: 'Overview'
|
18
|
+
property :production_code, from: 'ProductionCode'
|
19
|
+
property :rating, from: 'Rating', with: lambda { |value| value.to_f }
|
20
|
+
property :rating_count, from: 'RatingCount', with: lambda { |value| value.to_i }
|
21
|
+
property :season, from: 'SeasonNumber', with: lambda { |value| value.to_i }
|
22
|
+
property :writers, from: 'Writer', with: lambda { |value| to_array(value) }
|
23
|
+
property :absolute_number, from: 'absolute_number', with: lambda { |value| value.to_i }
|
24
|
+
property :airs_after_season, from: 'airsafter_season', with: lambda { |value| value.to_i }
|
25
|
+
property :airs_before_episode, from: 'airsbefore_episode', with: lambda { |value| value.to_i }
|
26
|
+
property :airs_before_season, from: 'airsbefore_season', with: lambda { |value| value.to_i }
|
27
|
+
property :filename_path, from: 'filename'
|
28
|
+
property :last_updated_at, from: 'lastupdated', with: lambda { |value| Time.at(value.to_i) }
|
29
|
+
property :season_id, from: 'seasonid'
|
30
|
+
property :series_id, from: 'seriesid'
|
31
|
+
property :thumbnail_added_at, from: 'thumb_added', with: lambda { |value| DateTime.parse(value) }
|
32
|
+
property :thumbnail_height, from: 'thumb_height', with: lambda { |value| value.to_i }
|
33
|
+
property :thumbnail_width, from: 'thumb_width', with: lambda { |value| value.to_i }
|
13
34
|
end
|
@@ -1,13 +1,27 @@
|
|
1
1
|
class ThetvdbMapper::Series < ThetvdbMapper::Base
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
2
|
+
property :id, from: 'id', with: lambda { |value| value.to_i }
|
3
|
+
property :actors, from: 'Actors', with: lambda { |value| to_array(value) }
|
4
|
+
property :airs_day_of_week, from: 'Airs_DayOfWeek'
|
5
|
+
property :airs_time, from: 'Airs_Time'
|
6
|
+
property :content_rating, from: 'ContentRating'
|
7
|
+
property :first_aired, from: 'FirstAired', with: lambda { |value| Date.parse(value) }
|
8
|
+
property :genres, from: 'Genre', with: lambda { |value| to_array(value) }
|
9
|
+
property :imdb_id, from: 'IMDB_ID'
|
10
|
+
property :language, from: 'Language'
|
11
|
+
property :network, from: 'Network'
|
12
|
+
property :network_id, from: 'NetworkID', with: lambda { |value| value.to_i }
|
13
|
+
property :overview, from: 'Overview'
|
14
|
+
property :rating, from: 'Rating', with: lambda { |value| value.to_f }
|
15
|
+
property :rating_count, from: 'RatingCount', with: lambda { |value| value.to_i }
|
16
|
+
property :runtime, from: 'Runtime', with: lambda { |value| value.to_i }
|
17
|
+
property :name, from: 'SeriesName'
|
18
|
+
property :series_id, from: 'SeriesId', with: lambda { |value| value.to_i }
|
19
|
+
property :status, from: 'Status'
|
20
|
+
property :added_at, from: 'added', with: lambda { |value| DateTime.parse(value) }
|
21
|
+
property :added_by, from: 'addedBy'
|
22
|
+
property :banner_path, from: 'banner'
|
23
|
+
property :fanart_path, from: 'fanart'
|
24
|
+
property :last_updated_at, from: 'lastupdated', with: lambda { |value| Time.at(value.to_i) }
|
25
|
+
property :poster_path, from: 'poster'
|
26
|
+
property :zap2it_id, from: 'zap2it_id'
|
13
27
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ThetvdbMapper::Actor do
|
4
|
+
let(:model) { ThetvdbMapper::Actor.new(input_data) }
|
5
|
+
let(:input_data) do
|
6
|
+
{
|
7
|
+
'id' => '123',
|
8
|
+
'Image' => '/image_path',
|
9
|
+
'Name' => 'name',
|
10
|
+
'Role' => 'role',
|
11
|
+
'SortOrder' => '1'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:output_data) do
|
16
|
+
{
|
17
|
+
id: 123,
|
18
|
+
image_path: '/image_path',
|
19
|
+
name: 'name',
|
20
|
+
role: 'role',
|
21
|
+
sort_order: 1
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.map' do
|
26
|
+
it 'should return specific keys' do
|
27
|
+
model.keys.sort.should == [:id, :image_path, :name, :role, :sort_order].sort
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should return corrected Hash after mapping' do
|
31
|
+
model.to_hash.should == output_data
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ThetvdbMapper::Banner do
|
4
|
+
let(:model) { ThetvdbMapper::Banner.new(input_data) }
|
5
|
+
let(:input_data) do
|
6
|
+
{
|
7
|
+
'id' => '123',
|
8
|
+
'BannerPath' => '/image_path',
|
9
|
+
'ThumbnailPath' => '/image2_path',
|
10
|
+
'VignettePath' => '/image3_path',
|
11
|
+
'BannerType' => 'kind',
|
12
|
+
'BannerType2' => 'kind2',
|
13
|
+
'Language' => 'en',
|
14
|
+
'Season' => '1',
|
15
|
+
'Rating' => '1.1',
|
16
|
+
'RatingCount' => '123',
|
17
|
+
'SeriesName' => 'Test',
|
18
|
+
'Colors' => 'RGB',
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:output_data) do
|
23
|
+
{
|
24
|
+
id: 123,
|
25
|
+
path: '/image_path',
|
26
|
+
thumbnail_path: '/image2_path',
|
27
|
+
vignette_path: '/image3_path',
|
28
|
+
kind: 'kind',
|
29
|
+
kind2: 'kind2',
|
30
|
+
language: 'en',
|
31
|
+
season: 1,
|
32
|
+
rating: 1.1,
|
33
|
+
rating_count: 123,
|
34
|
+
series_name: 'Test',
|
35
|
+
colors: 'RGB'
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#map' do
|
40
|
+
it 'should return specific keys' do
|
41
|
+
model.keys.sort.should == [:path, :thumbnail_path, :vignette_path, :kind, :kind2, :language, :season,
|
42
|
+
:rating, :rating_count, :series_name, :colors, :id].sort
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should return corrected Hash after mapping' do
|
46
|
+
model.to_hash.should == output_data
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ThetvdbMapper::Episode do
|
4
|
+
let(:model) { ThetvdbMapper::Episode.new(input_data) }
|
5
|
+
let(:input_data) do
|
6
|
+
{
|
7
|
+
'id' => '123',
|
8
|
+
'Combined_episodenumber' => 1,
|
9
|
+
'Combined_season' => 2,
|
10
|
+
'DVD_episodenumber' => 3,
|
11
|
+
'DVD_season' => 4,
|
12
|
+
'Director' => 'McG',
|
13
|
+
'EpImgFlag' => 1,
|
14
|
+
'EpisodeName' => 'Test',
|
15
|
+
'EpisodeNumber' => 5,
|
16
|
+
'FirstAired' => '2000-01-01',
|
17
|
+
'GuestStars' => 'Mieko Hillman|Kristine Blackport',
|
18
|
+
'IMDB_ID' => 'tt000000',
|
19
|
+
'Language' => 'en',
|
20
|
+
'Overview' => 'overview',
|
21
|
+
'ProductionCode' => '1234',
|
22
|
+
'Rating' => '1.1',
|
23
|
+
'RatingCount' => '12',
|
24
|
+
'SeasonNumber' => '1',
|
25
|
+
'Writer' => 'McG',
|
26
|
+
'absolute_number' => '1',
|
27
|
+
'airsafter_season' => '1',
|
28
|
+
'airsbefore_episode' => '1',
|
29
|
+
'airsbefore_season' => '1',
|
30
|
+
'filename' => '/path',
|
31
|
+
'lastupdated' => 1,
|
32
|
+
'seasonid' => '1',
|
33
|
+
'seriesid' => '1',
|
34
|
+
'thumb_added' => '2000-01-01 01:00:00',
|
35
|
+
'thumb_height' => '100',
|
36
|
+
'thumb_width' => '100'
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:output_data) do
|
41
|
+
{
|
42
|
+
id: 123,
|
43
|
+
combined_episode_number: 1.0,
|
44
|
+
combined_season: 2.0,
|
45
|
+
dvd_episode_number: 3.0,
|
46
|
+
dvd_season: 4,
|
47
|
+
directors: ['McG'],
|
48
|
+
ep_img_flag: 1,
|
49
|
+
name: 'Test',
|
50
|
+
number: 5,
|
51
|
+
first_aired: Date.parse('2000-01-01'),
|
52
|
+
guest_stars: ['Mieko Hillman', 'Kristine Blackport'],
|
53
|
+
imdb_id: 'tt000000',
|
54
|
+
language: 'en',
|
55
|
+
overview: 'overview',
|
56
|
+
production_code: '1234',
|
57
|
+
rating: 1.1,
|
58
|
+
rating_count: 12,
|
59
|
+
season: 1,
|
60
|
+
writers: ['McG'],
|
61
|
+
absolute_number: 1,
|
62
|
+
airs_after_season: 1,
|
63
|
+
airs_before_episode: 1,
|
64
|
+
airs_before_season: 1,
|
65
|
+
filename_path: '/path',
|
66
|
+
last_updated_at: Time.at(1),
|
67
|
+
season_id: '1',
|
68
|
+
series_id: '1',
|
69
|
+
thumbnail_added_at: DateTime.parse('2000-01-01 01:00:00'),
|
70
|
+
thumbnail_height: 100,
|
71
|
+
thumbnail_width: 100
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#map' do
|
76
|
+
it 'should return specific keys' do
|
77
|
+
model.keys.sort.should == [:id, :combined_episode_number, :combined_season, :dvd_episode_number,
|
78
|
+
:dvd_season, :directors, :ep_img_flag, :name, :number, :first_aired, :guest_stars, :imdb_id, :language,
|
79
|
+
:overview, :production_code, :rating, :rating_count, :season, :writers, :absolute_number, :airs_after_season,
|
80
|
+
:airs_before_episode, :airs_before_season, :filename_path, :last_updated_at, :season_id, :series_id,
|
81
|
+
:thumbnail_added_at, :thumbnail_height, :thumbnail_width].sort
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should return corrected Hash after mapping' do
|
85
|
+
model.to_hash.should == output_data
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ThetvdbMapper::Series do
|
4
|
+
let(:model) { ThetvdbMapper::Series.new(input_data) }
|
5
|
+
let(:input_data) do
|
6
|
+
{
|
7
|
+
'id' => '123',
|
8
|
+
'Airs_DayOfWeek' => 'Monday',
|
9
|
+
'Airs_Time' => '8 AM',
|
10
|
+
'ContentRating' => 'PG',
|
11
|
+
'FirstAired' => '2000-01-01',
|
12
|
+
'Genre' => 'sci-fi',
|
13
|
+
'IMDB_ID' => 'tt000000',
|
14
|
+
'Language' => 'en',
|
15
|
+
'Network' => 'SyFy',
|
16
|
+
'NetworkID' => '1',
|
17
|
+
'Overview' => 'overview',
|
18
|
+
'Rating' => '1.1',
|
19
|
+
'RatingCount' => '123',
|
20
|
+
'Runtime' => '60',
|
21
|
+
'SeriesName' => 'Test',
|
22
|
+
'Status' => 'continue',
|
23
|
+
'added' => '2000-01-01 01:00:00',
|
24
|
+
'addedBy' => 'test',
|
25
|
+
'banner' => 'banner_path',
|
26
|
+
'fanart' => 'fanart_path',
|
27
|
+
'lastupdated' => 1,
|
28
|
+
'poster' => 'poster_path',
|
29
|
+
'zap2it_id' => 'zap123'
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
let(:output_data) do
|
34
|
+
{
|
35
|
+
id: 123,
|
36
|
+
airs_day_of_week: 'Monday',
|
37
|
+
airs_time: '8 AM',
|
38
|
+
content_rating: 'PG',
|
39
|
+
first_aired: Date.parse('2000-01-01'),
|
40
|
+
genres: ['sci-fi'],
|
41
|
+
imdb_id: 'tt000000',
|
42
|
+
language: 'en',
|
43
|
+
network: 'SyFy',
|
44
|
+
network_id: 1,
|
45
|
+
overview: 'overview',
|
46
|
+
rating: 1.1,
|
47
|
+
rating_count: 123,
|
48
|
+
runtime: 60,
|
49
|
+
name: 'Test',
|
50
|
+
status: 'continue',
|
51
|
+
added_at: DateTime.parse('2000-01-01 01:00:00'),
|
52
|
+
added_by: 'test',
|
53
|
+
banner_path: 'banner_path',
|
54
|
+
fanart_path: 'fanart_path',
|
55
|
+
last_updated_at: Time.at(1),
|
56
|
+
poster_path: 'poster_path',
|
57
|
+
zap2it_id: 'zap123'
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#map' do
|
62
|
+
it 'should return specific keys' do
|
63
|
+
model.keys.sort.should == [:id, :airs_day_of_week, :airs_time, :content_rating, :first_aired, :genres,
|
64
|
+
:imdb_id, :language, :network, :network_id, :overview, :rating, :rating_count, :runtime, :name, :status,
|
65
|
+
:added_at, :added_by, :banner_path, :fanart_path, :last_updated_at, :poster_path, :zap2it_id].sort
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should return corrected Hash after mapping' do
|
69
|
+
model.to_hash.should == output_data
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|