radiodan 0.0.4 → 1.0.0

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.
@@ -1,40 +1,43 @@
1
1
  require 'spec_helper'
2
2
  require 'playlist_sync'
3
+ require 'playlist'
3
4
 
4
5
  describe Radiodan::PlaylistSync do
5
6
  subject(:playlist_sync) do
7
+ playlist = Radiodan::Playlist.new tracks: [mock]
8
+
6
9
  Radiodan::PlaylistSync.new \
7
- stub(:state => nil, :mode => nil, :tracks => [], :size => 0),
8
- stub(:state => nil, :mode => nil, :tracks => [], :size => 0)
10
+ playlist,
11
+ playlist.dup
9
12
  end
10
13
 
11
14
  context 'prerequisites for sync' do
12
15
  it 'requires expected playlist' do
13
16
  playlist_sync.expected = nil
14
- expect { playlist_sync.sync? }.to raise_error(Radiodan::PlaylistSync::SyncError)
17
+ playlist_sync.ready?.should == false
15
18
  end
16
19
 
17
20
  it 'requires current state' do
18
21
  playlist_sync.current = nil
19
- expect { playlist_sync.sync? }.to raise_error(Radiodan::PlaylistSync::SyncError)
22
+ playlist_sync.ready?.should == false
20
23
  end
21
24
  end
22
25
 
23
26
  context 'playback state' do
24
27
  before :each do
25
28
  playlist_sync.stub(:compare_playback_mode => true, :compare_playlist => true)
26
- playlist_sync.expected.stub(:state => :playing)
29
+ playlist_sync.expected.state = :play
27
30
  end
28
31
 
29
32
  it 'catches non-matching state' do
30
- playlist_sync.current.stub(:state => :paused)
33
+ playlist_sync.current.state = :pause
31
34
 
32
35
  playlist_sync.sync?.should == false
33
36
  playlist_sync.errors.should == [:state]
34
37
  end
35
38
 
36
39
  it 'allows matching state' do
37
- playlist_sync.current.stub(:state => :playing)
40
+ playlist_sync.current.state = :play
38
41
  playlist_sync.sync?.should == true
39
42
  playlist_sync.errors.should be_empty
40
43
  end
@@ -43,18 +46,38 @@ describe Radiodan::PlaylistSync do
43
46
  context 'playback mode' do
44
47
  before :each do
45
48
  playlist_sync.stub(:compare_playback_state => true, :compare_playlist => true)
46
- playlist_sync.expected.stub(:mode => :random)
49
+ playlist_sync.expected.mode = :random
47
50
  end
48
51
 
49
52
  it 'catches non-matching state' do
50
- playlist_sync.current.stub(:mode => :resume)
53
+ playlist_sync.current.mode = :resume
51
54
 
52
55
  playlist_sync.sync?.should == false
53
56
  playlist_sync.errors.should == [:mode]
54
57
  end
55
58
 
56
59
  it 'allows matching state' do
57
- playlist_sync.current.stub(:mode => :random)
60
+ playlist_sync.current.mode = :random
61
+ playlist_sync.sync?.should == true
62
+ playlist_sync.errors.should be_empty
63
+ end
64
+ end
65
+
66
+ context 'volume' do
67
+ before :each do
68
+ playlist_sync.stub(:compare_playback_state => true, :compare_playlist => true, :compare_playback_mode => true)
69
+ playlist_sync.expected.volume = 90
70
+ end
71
+
72
+ it 'catches non-matching state' do
73
+ playlist_sync.current.volume = 70
74
+
75
+ playlist_sync.sync?.should == false
76
+ playlist_sync.errors.should == [:volume]
77
+ end
78
+
79
+ it 'allows matching state' do
80
+ playlist_sync.current.volume = 90
58
81
  playlist_sync.sync?.should == true
59
82
  playlist_sync.errors.should be_empty
60
83
  end
@@ -63,25 +86,32 @@ describe Radiodan::PlaylistSync do
63
86
  context 'playlists' do
64
87
  before :each do
65
88
  playlist_sync.stub(:compare_playback_mode => true, :compare_playback_state => true)
66
- playlist_sync.expected.stub(:tracks => [1,2,3,4], :size => 4)
89
+ playlist_sync.expected.tracks = [1,2,3,4]
67
90
  end
68
91
 
69
92
  it 'catches non-matching tracks' do
70
- playlist_sync.current.stub(:tracks => [], :size => 4)
93
+ playlist_sync.current.tracks = [5,6,7]
71
94
 
72
95
  playlist_sync.sync?.should == false
73
- playlist_sync.errors.should == [:playlist]
96
+ playlist_sync.errors.should == [:new_tracks]
74
97
  end
75
98
 
76
- it 'catches non-matching size' do
77
- playlist_sync.current.stub(:tracks => [1,2,3,4], :size => 2)
99
+ it 'catches tracks in new order' do
100
+ playlist_sync.current.tracks = [2,1]
78
101
 
79
102
  playlist_sync.sync?.should == false
80
- playlist_sync.errors.should == [:playlist]
103
+ playlist_sync.errors.should == [:new_tracks]
81
104
  end
82
105
 
106
+ it 'catches additional tracks' do
107
+ playlist_sync.current.tracks = [1,2]
108
+
109
+ playlist_sync.sync?.should == false
110
+ playlist_sync.errors.should == [:add_tracks]
111
+ end
112
+
83
113
  it 'allows matching state' do
84
- playlist_sync.current.stub(:tracks => [1,2,3,4], :size => 4)
114
+ playlist_sync.current.tracks = [1,2,3,4]
85
115
  playlist_sync.sync?.should == true
86
116
  playlist_sync.errors.should be_empty
87
117
  end
@@ -89,9 +119,9 @@ describe Radiodan::PlaylistSync do
89
119
 
90
120
  context 'error messages' do
91
121
  it 'captures multiple errors' do
92
- playlist_sync.expected.stub(:tracks => [1], :mode => :random, :size => 1)
122
+ playlist_sync.expected.tap{ |x| x.tracks = [1]; x.mode = :random }
93
123
  playlist_sync.sync?.should == false
94
- playlist_sync.errors.should == [:mode, :playlist]
124
+ playlist_sync.errors.should == [:mode, :new_tracks]
95
125
  end
96
126
  end
97
127
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'rspec/autorun'
2
- $: << File.expand_path('../../lib/radiodan', __FILE__)
2
+ $:.unshift File.expand_path('../../lib/radiodan', __FILE__)
3
3
 
4
4
  RSpec.configure do |config|
5
5
  #config.mock_with :mocha
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radiodan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Nuttall
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-30 00:00:00.000000000 Z
11
+ date: 2013-12-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: guard-rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: terminal-notifier-guard
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: eventmachine
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: em-synchrony
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: em-http-request
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: em-simple_telnet
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ~>
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ~>
140
123
  - !ruby/object:Gem::Version
@@ -142,7 +125,6 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: active_support
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ~>
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ~>
156
137
  - !ruby/object:Gem::Version
@@ -158,7 +139,6 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: i18n
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
143
  - - ~>
164
144
  - !ruby/object:Gem::Version
@@ -166,11 +146,52 @@ dependencies:
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
150
  - - ~>
172
151
  - !ruby/object:Gem::Version
173
152
  version: 0.6.4
153
+ - !ruby/object:Gem::Dependency
154
+ name: thin
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: 1.5.1
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: 1.5.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: sinatra
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 1.4.2
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: 1.4.2
181
+ - !ruby/object:Gem::Dependency
182
+ name: sinatra-synchrony
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 0.4.1
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 0.4.1
174
195
  description: Web-enabled radio that plays to my schedule.
175
196
  email:
176
197
  - pixelblend@gmail.com
@@ -198,10 +219,14 @@ files:
198
219
  - lib/radiodan/event_binding.rb
199
220
  - lib/radiodan/logging.rb
200
221
  - lib/radiodan/middleware/panic.rb
222
+ - lib/radiodan/middleware/playlist_to_start.rb
223
+ - lib/radiodan/middleware/toggle_playlist.rb
201
224
  - lib/radiodan/middleware/touch_file.rb
225
+ - lib/radiodan/middleware/web_server.rb
202
226
  - lib/radiodan/player.rb
203
227
  - lib/radiodan/playlist.rb
204
228
  - lib/radiodan/playlist_sync.rb
229
+ - lib/radiodan/sinatra.rb
205
230
  - lib/radiodan/track.rb
206
231
  - lib/radiodan/version.rb
207
232
  - radiodan.gemspec
@@ -216,33 +241,26 @@ files:
216
241
  - spec/spec_helper.rb
217
242
  homepage: https://github.com/pixelblend/radiodan
218
243
  licenses: []
244
+ metadata: {}
219
245
  post_install_message:
220
246
  rdoc_options: []
221
247
  require_paths:
222
248
  - lib
223
249
  required_ruby_version: !ruby/object:Gem::Requirement
224
- none: false
225
250
  requirements:
226
- - - ! '>='
251
+ - - '>='
227
252
  - !ruby/object:Gem::Version
228
253
  version: '0'
229
- segments:
230
- - 0
231
- hash: -580184109337175163
232
254
  required_rubygems_version: !ruby/object:Gem::Requirement
233
- none: false
234
255
  requirements:
235
- - - ! '>='
256
+ - - '>='
236
257
  - !ruby/object:Gem::Version
237
258
  version: '0'
238
- segments:
239
- - 0
240
- hash: -580184109337175163
241
259
  requirements: []
242
260
  rubyforge_project:
243
- rubygems_version: 1.8.23
261
+ rubygems_version: 2.0.3
244
262
  signing_key:
245
- specification_version: 3
263
+ specification_version: 4
246
264
  summary: Web-enabled radio that plays to my schedule.
247
265
  test_files:
248
266
  - spec/lib/builder_spec.rb