poms 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +80 -0
- data/Guardfile +12 -0
- data/LICENSE.txt +22 -0
- data/README.md +26 -0
- data/Rakefile +7 -0
- data/lib/poms.rb +110 -0
- data/lib/poms/base.rb +7 -0
- data/lib/poms/broadcast.rb +46 -0
- data/lib/poms/builder.rb +78 -0
- data/lib/poms/has_ancestors.rb +42 -0
- data/lib/poms/has_base_attributes.rb +20 -0
- data/lib/poms/schedule_event.rb +36 -0
- data/lib/poms/season.rb +13 -0
- data/lib/poms/series.rb +12 -0
- data/lib/poms/version.rb +3 -0
- data/spec/fabricators/poms_fabricator.rb +39 -0
- data/spec/fixtures/poms_broadcast.json +307 -0
- data/spec/fixtures/poms_broadcast_multiple_schedule_events.json +354 -0
- data/spec/fixtures/poms_broadcast_pippi.json +180 -0
- data/spec/fixtures/poms_series.json +49 -0
- data/spec/fixtures/poms_zapp.json +47363 -0
- data/spec/lib/poms/broadcast_spec.rb +44 -0
- data/spec/lib/poms/buider_spec.rb +19 -0
- data/spec/lib/poms/schedule_event_spec.rb +15 -0
- data/spec/lib/poms_spec.rb +57 -0
- data/spec/spec_helper.rb +7 -0
- metadata +198 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Poms::Broadcast do
|
4
|
+
|
5
|
+
let(:poms_broadcast) { Fabricate(:poms_broadcast) }
|
6
|
+
# pippi langkous is a peculiar case, as it has no series, just a season
|
7
|
+
let(:poms_pippi_langkous) { Fabricate(:poms_broadcast_pippi_langkous) }
|
8
|
+
|
9
|
+
it 'correctly sets the series' do
|
10
|
+
expect(poms_broadcast.serie_mid).to eq('POMS_S_KRO_059857')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'correctly sets the title' do
|
14
|
+
expect(poms_broadcast.title).to eq('VRijland afl.64 & 65 (herhaling)')
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'correctly sets the description' do
|
18
|
+
description = "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?"
|
19
|
+
expect(poms_broadcast.description).to eq(description)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'converts schedule events to Poms::ScheduleEvent' do
|
23
|
+
poms_broadcast.schedule_events.each do |e|
|
24
|
+
expect(e.class).to eq(Poms::ScheduleEvent)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'correctly sets available until' do
|
29
|
+
expect(poms_broadcast.available_until).to eq(Time.at(1369758599).to_datetime)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'sets the serie correctly when a broadcast only has a season, no series' do
|
33
|
+
expect(poms_pippi_langkous.serie_mid).to eq('POW_00107959')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns the available streams' do
|
37
|
+
expect(poms_broadcast.odi_streams).to eq(["adaptive", "h264_sb", "h264_bb", "h264_std", "wvc1_std", "wmv_sb", "wmv_bb"])
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'return the ancestors of the broadcast' do
|
41
|
+
# I use to_set as the order does not matter
|
42
|
+
expect(poms_broadcast.ancestor_mids.to_set).to eq(['POMS_S_KRO_059857', 'KRO_1521173'].to_set)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Poms::Builder do
|
4
|
+
|
5
|
+
let(:poms_broadcast) { Fabricate(:poms_broadcast) }
|
6
|
+
|
7
|
+
it 'correctly sets the class of a POMS broadcast hash' do
|
8
|
+
expect(poms_broadcast.class).to eq(Poms::Broadcast)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'correctly renames and parses the broadcast\'s schedule_events' do
|
12
|
+
expect(poms_broadcast.schedule_events.length).to eq(1)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'correctly converts start times to Time-object' do
|
16
|
+
expect(poms_broadcast.schedule_events.first.start).to eq(Time.parse '2013-05-28 18:08:55 +0200')
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Poms::ScheduleEvent do
|
4
|
+
let(:poms_broadcast) { Fabricate(:poms_broadcast) }
|
5
|
+
let(:schedule_event) {poms_broadcast.schedule_events.first}
|
6
|
+
|
7
|
+
it 'sets the start time' do
|
8
|
+
expect(schedule_event.starts_at).to eq(Time.parse '2013-05-28 18:08:55 +0200')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'knows the end time' do
|
12
|
+
expect(schedule_event.ends_at).to eq(Time.parse '2013-05-28 18:26:24 +0200')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Poms do
|
4
|
+
|
5
|
+
describe '#fetch' do
|
6
|
+
|
7
|
+
let(:response) { File.read 'spec/fixtures/poms_broadcast.json' }
|
8
|
+
|
9
|
+
before do
|
10
|
+
FakeWeb.register_uri(:get, "http://docs.poms.omroep.nl/media/KRO_1614405", :body => response)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "fetches a broadcast" do
|
14
|
+
expect(Poms.fetch_raw_json('KRO_1614405')).to eq(JSON.parse response)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "fetches a broadcast and parses it correctly" do
|
18
|
+
expect(Poms::Builder).to receive(:process_hash).with(JSON.parse response)
|
19
|
+
Poms.fetch('KRO_1614405')
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns nil when a broadcast does not exits' do
|
23
|
+
FakeWeb.register_uri(:get, "http://docs.poms.omroep.nl/media/BLA", :status => [404, "Not Found"])
|
24
|
+
expect(Poms.fetch('BLA')).to eq(nil)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#fetch_broadcasts_for_serie' do
|
29
|
+
it 'returns nil when a broadcast does not exits' do
|
30
|
+
FakeWeb.register_uri(:get, "http://docs.poms.omroep.nl/media/_design/media/_view/by-ancestor-and-type?reduce=false&key=[%22BLA%22,%22BROADCAST%22]&include_docs=true", :status => [404, "Not Found"])
|
31
|
+
expect(Poms.fetch_broadcasts_for_serie('BLA')).to eq([])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
describe '#upcoming_broadcasts' do
|
37
|
+
let(:response) { File.read 'spec/fixtures/poms_zapp.json' }
|
38
|
+
let(:start_time) { Time.parse '2013-05-28 17:32:10 +0200' }
|
39
|
+
let(:end_time) { Time.parse '2013-06-11 17:32:50 +0200' }
|
40
|
+
|
41
|
+
before do
|
42
|
+
path = "http://docs.poms.omroep.nl/media/_design/media/_view/broadcasts-by-broadcaster-and-start?startkey=[%22Zapp%22,1369755130000]&endkey=[%22Zapp%22,1370964770000]&reduce=false&include_docs=true"
|
43
|
+
FakeWeb.register_uri(:get, path, :body => response)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "fetches all broadcast by zapp" do
|
47
|
+
pending "method does not exist"
|
48
|
+
expect(Poms.upcoming_broadcasts_raw_json('zapp', start_time, end_time)).to eq(JSON.parse response)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "fetches all broadcast by zapp and parses it correctly" do
|
52
|
+
expect(Poms::Builder).to receive(:process_hash).exactly(136).times
|
53
|
+
Poms.upcoming_broadcasts('zapp', start_time, end_time)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: poms
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tom Kruijsen
|
8
|
+
- Stijn Meurkens
|
9
|
+
- Tijn Schuurmans
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2014-09-08 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.3'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rspec
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: guard
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: guard-rspec
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: fakeweb
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: fabrication
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: activesupport
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
description: Interface to POMS CouchDB API
|
128
|
+
email:
|
129
|
+
- tom@brightin.nl
|
130
|
+
- stijn@brightin.nl
|
131
|
+
- tijn@brightin.nl
|
132
|
+
executables: []
|
133
|
+
extensions: []
|
134
|
+
extra_rdoc_files: []
|
135
|
+
files:
|
136
|
+
- Gemfile
|
137
|
+
- Gemfile.lock
|
138
|
+
- Guardfile
|
139
|
+
- LICENSE.txt
|
140
|
+
- README.md
|
141
|
+
- Rakefile
|
142
|
+
- lib/poms.rb
|
143
|
+
- lib/poms/base.rb
|
144
|
+
- lib/poms/broadcast.rb
|
145
|
+
- lib/poms/builder.rb
|
146
|
+
- lib/poms/has_ancestors.rb
|
147
|
+
- lib/poms/has_base_attributes.rb
|
148
|
+
- lib/poms/schedule_event.rb
|
149
|
+
- lib/poms/season.rb
|
150
|
+
- lib/poms/series.rb
|
151
|
+
- lib/poms/version.rb
|
152
|
+
- spec/fabricators/poms_fabricator.rb
|
153
|
+
- spec/fixtures/poms_broadcast.json
|
154
|
+
- spec/fixtures/poms_broadcast_multiple_schedule_events.json
|
155
|
+
- spec/fixtures/poms_broadcast_pippi.json
|
156
|
+
- spec/fixtures/poms_series.json
|
157
|
+
- spec/fixtures/poms_zapp.json
|
158
|
+
- spec/lib/poms/broadcast_spec.rb
|
159
|
+
- spec/lib/poms/buider_spec.rb
|
160
|
+
- spec/lib/poms/schedule_event_spec.rb
|
161
|
+
- spec/lib/poms_spec.rb
|
162
|
+
- spec/spec_helper.rb
|
163
|
+
homepage: https://github.com/brightin/poms
|
164
|
+
licenses:
|
165
|
+
- MIT
|
166
|
+
metadata: {}
|
167
|
+
post_install_message:
|
168
|
+
rdoc_options: []
|
169
|
+
require_paths:
|
170
|
+
- lib
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
requirements: []
|
182
|
+
rubyforge_project:
|
183
|
+
rubygems_version: 2.2.2
|
184
|
+
signing_key:
|
185
|
+
specification_version: 4
|
186
|
+
summary: Interfcae to POMS CouchDB API
|
187
|
+
test_files:
|
188
|
+
- spec/fabricators/poms_fabricator.rb
|
189
|
+
- spec/fixtures/poms_broadcast.json
|
190
|
+
- spec/fixtures/poms_broadcast_multiple_schedule_events.json
|
191
|
+
- spec/fixtures/poms_broadcast_pippi.json
|
192
|
+
- spec/fixtures/poms_series.json
|
193
|
+
- spec/fixtures/poms_zapp.json
|
194
|
+
- spec/lib/poms/broadcast_spec.rb
|
195
|
+
- spec/lib/poms/buider_spec.rb
|
196
|
+
- spec/lib/poms/schedule_event_spec.rb
|
197
|
+
- spec/lib/poms_spec.rb
|
198
|
+
- spec/spec_helper.rb
|