poms 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'fakeweb'
4
+ require 'fabrication'
5
+ require 'poms' # and any other gems you need
6
+
7
+ FakeWeb.allow_net_connect = false
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