hallon 0.18.0 → 0.18.1
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.
- data/.rspec +1 -1
- data/CHANGELOG.md +12 -1
- data/README.markdown +13 -5
- data/Rakefile +23 -74
- data/examples/example_support.rb +2 -0
- data/hallon.gemspec +1 -1
- data/lib/hallon.rb +1 -6
- data/lib/hallon/album.rb +4 -4
- data/lib/hallon/album_browse.rb +6 -6
- data/lib/hallon/artist.rb +3 -3
- data/lib/hallon/artist_browse.rb +9 -9
- data/lib/hallon/audio_queue.rb +2 -1
- data/lib/hallon/base.rb +10 -10
- data/lib/hallon/enumerator.rb +3 -3
- data/lib/hallon/ext/spotify.rb +1 -47
- data/lib/hallon/image.rb +4 -4
- data/lib/hallon/link.rb +4 -4
- data/lib/hallon/linkable.rb +10 -10
- data/lib/hallon/observable/playlist.rb +2 -3
- data/lib/hallon/observable/playlist_container.rb +3 -12
- data/lib/hallon/player.rb +2 -2
- data/lib/hallon/playlist.rb +6 -6
- data/lib/hallon/playlist_container.rb +8 -8
- data/lib/hallon/scrobbler.rb +4 -4
- data/lib/hallon/search.rb +20 -5
- data/lib/hallon/session.rb +18 -17
- data/lib/hallon/toplist.rb +4 -4
- data/lib/hallon/track.rb +5 -5
- data/lib/hallon/user.rb +7 -7
- data/lib/hallon/version.rb +1 -1
- data/spec/hallon/album_browse_spec.rb +1 -1
- data/spec/hallon/artist_browse_spec.rb +1 -1
- data/spec/hallon/base_spec.rb +6 -3
- data/spec/hallon/enumerator_spec.rb +2 -2
- data/spec/hallon/hallon_spec.rb +0 -4
- data/spec/hallon/link_spec.rb +1 -1
- data/spec/hallon/linkable_spec.rb +4 -4
- data/spec/hallon/observable/playlist_container_spec.rb +3 -3
- data/spec/hallon/observable/playlist_spec.rb +1 -1
- data/spec/hallon/player_spec.rb +9 -9
- data/spec/hallon/playlist_container_spec.rb +2 -2
- data/spec/hallon/playlist_spec.rb +8 -8
- data/spec/hallon/scrobbler_spec.rb +8 -7
- data/spec/hallon/search_spec.rb +3 -3
- data/spec/hallon/session_spec.rb +10 -10
- data/spec/hallon/toplist_spec.rb +4 -4
- data/spec/hallon/track_spec.rb +6 -6
- data/spec/hallon/user_post_spec.rb +1 -1
- data/spec/hallon/user_spec.rb +1 -1
- data/spec/mockspotify.rb +36 -42
- data/spec/mockspotify/mockspotify_spec.rb +15 -15
- data/spec/spec_helper.rb +25 -21
- data/spec/support/album_mocks.rb +4 -4
- data/spec/support/artist_mocks.rb +5 -5
- data/spec/support/image_mocks.rb +4 -4
- data/spec/support/playlist_container_mocks.rb +4 -4
- data/spec/support/playlist_mocks.rb +6 -6
- data/spec/support/search_mocks.rb +2 -2
- data/spec/support/session_mocks.rb +1 -1
- data/spec/support/shared_for_callbacks.rb +1 -1
- data/spec/support/shared_for_linkable_objects.rb +3 -2
- data/spec/support/toplist_mocks.rb +2 -2
- data/spec/support/track_mocks.rb +4 -4
- data/spec/support/user_mocks.rb +2 -2
- metadata +5 -5
data/lib/hallon/session.rb
CHANGED
@@ -82,8 +82,8 @@ module Hallon
|
|
82
82
|
# @param [#to_s] appkey
|
83
83
|
# @param [Hash] options
|
84
84
|
# @option options [String] :user_agent ("Hallon") User-Agent to use (length < `256`)
|
85
|
-
# @option options [String] :
|
86
|
-
# @option options [String] :
|
85
|
+
# @option options [String] :settings_location ("tmp") where to save settings and user-specific cache
|
86
|
+
# @option options [String] :cache_location ("") where to save cache files (`""` to disable)
|
87
87
|
# @option options [String] :tracefile (nil) path to libspotify API tracefile (`nil` to disable)
|
88
88
|
# @option options [String] :device_id (nil) device ID for offline synchronization (`nil` to disable)
|
89
89
|
# @option options [String] :proxy (nil) proxy URI (supports http, https, socks4, socks5)
|
@@ -105,8 +105,8 @@ module Hallon
|
|
105
105
|
|
106
106
|
@options = {
|
107
107
|
:user_agent => "Hallon",
|
108
|
-
:
|
109
|
-
:
|
108
|
+
:settings_location => "tmp/hallon/",
|
109
|
+
:cache_location => "tmp/hallon/",
|
110
110
|
:load_playlists => true,
|
111
111
|
:compress_playlists => true,
|
112
112
|
:cache_playlist_metadata => true,
|
@@ -125,18 +125,19 @@ module Hallon
|
|
125
125
|
@cache_size = 0
|
126
126
|
|
127
127
|
subscribe_for_callbacks do |callbacks|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
@options
|
132
|
-
|
128
|
+
# not overridable
|
129
|
+
@options[:api_version] = Hallon::API_VERSION
|
130
|
+
@options[:initially_unload_playlists] = ! @options.delete(:load_playlists)
|
131
|
+
@options[:dont_save_metadata_for_playlists] = ! @options.delete(:cache_playlist_metadata)
|
132
|
+
|
133
|
+
config = Spotify::SessionConfig.new(@options.merge(application_key: appkey, callbacks: callbacks))
|
133
134
|
|
134
135
|
instance_eval(&block) if block_given?
|
135
136
|
|
136
137
|
# You pass a pointer to the session pointer to libspotify >:)
|
137
138
|
FFI::MemoryPointer.new(:pointer) do |p|
|
138
139
|
Error::maybe_raise Spotify.session_create(config, p)
|
139
|
-
@pointer = p.read_pointer
|
140
|
+
@pointer = Spotify::Session.new(p.read_pointer)
|
140
141
|
end
|
141
142
|
end
|
142
143
|
end
|
@@ -155,7 +156,7 @@ module Hallon
|
|
155
156
|
# @note returns nil if the session is not logged in.
|
156
157
|
# @return [PlaylistContainer, nil]
|
157
158
|
def container
|
158
|
-
container = Spotify.session_playlistcontainer
|
159
|
+
container = Spotify.session_playlistcontainer(pointer)
|
159
160
|
PlaylistContainer.from(container)
|
160
161
|
end
|
161
162
|
|
@@ -198,7 +199,7 @@ module Hallon
|
|
198
199
|
# @raise [Spotify::Error] if no credentials are stored in libspotify
|
199
200
|
# @see #relogin!
|
200
201
|
def relogin
|
201
|
-
Spotify.session_relogin
|
202
|
+
Spotify.try(:session_relogin, pointer)
|
202
203
|
end
|
203
204
|
|
204
205
|
# Log in to Spotify using the given credentials.
|
@@ -267,7 +268,7 @@ module Hallon
|
|
267
268
|
|
268
269
|
# @return [User] the User currently logged in.
|
269
270
|
def user
|
270
|
-
user = Spotify.session_user
|
271
|
+
user = Spotify.session_user(pointer)
|
271
272
|
User.from(user)
|
272
273
|
end
|
273
274
|
|
@@ -411,20 +412,20 @@ module Hallon
|
|
411
412
|
# @see Player.bitrates
|
412
413
|
def offline_bitrate=(bitrate)
|
413
414
|
bitrate, resync = Array(bitrate)
|
414
|
-
Spotify.session_preferred_offline_bitrate
|
415
|
+
Spotify.try(:session_preferred_offline_bitrate, pointer, bitrate, !! resync)
|
415
416
|
end
|
416
417
|
|
417
418
|
# @note Returns nil when no user is logged in.
|
418
419
|
# @return [Playlist, nil] currently logged in user’s starred playlist.
|
419
420
|
def starred
|
420
|
-
playlist = Spotify.session_starred_create
|
421
|
+
playlist = Spotify.session_starred_create(pointer)
|
421
422
|
Playlist.from(playlist)
|
422
423
|
end
|
423
424
|
|
424
425
|
# @note Returns nil when no user is logged in.
|
425
426
|
# @return [Playlist, nil] currently logged in user’s inbox playlist.
|
426
427
|
def inbox
|
427
|
-
playlist = Spotify.session_inbox_create
|
428
|
+
playlist = Spotify.session_inbox_create(pointer)
|
428
429
|
Playlist.from(playlist)
|
429
430
|
end
|
430
431
|
|
@@ -461,7 +462,7 @@ module Hallon
|
|
461
462
|
def tracks_starred(tracks, starred)
|
462
463
|
FFI::MemoryPointer.new(:pointer, tracks.size) do |ptr|
|
463
464
|
ptr.write_array_of_pointer tracks.map(&:pointer)
|
464
|
-
Spotify.track_set_starred
|
465
|
+
Spotify.try(:track_set_starred, pointer, ptr, tracks.size, starred)
|
465
466
|
end
|
466
467
|
end
|
467
468
|
|
data/lib/hallon/toplist.rb
CHANGED
@@ -11,7 +11,7 @@ module Hallon
|
|
11
11
|
size :toplistbrowse_num_tracks
|
12
12
|
|
13
13
|
# @return [Track, nil]
|
14
|
-
item :toplistbrowse_track
|
14
|
+
item :toplistbrowse_track do |track|
|
15
15
|
Track.from(track)
|
16
16
|
end
|
17
17
|
end
|
@@ -21,7 +21,7 @@ module Hallon
|
|
21
21
|
size :toplistbrowse_num_albums
|
22
22
|
|
23
23
|
# @return [Album, nil]
|
24
|
-
item :toplistbrowse_album
|
24
|
+
item :toplistbrowse_album do |album|
|
25
25
|
Album.from(album)
|
26
26
|
end
|
27
27
|
end
|
@@ -31,7 +31,7 @@ module Hallon
|
|
31
31
|
size :toplistbrowse_num_artists
|
32
32
|
|
33
33
|
# @return [Artist, nil]
|
34
|
-
item :toplistbrowse_artist
|
34
|
+
item :toplistbrowse_artist do |artist|
|
35
35
|
Artist.from(artist)
|
36
36
|
end
|
37
37
|
end
|
@@ -72,7 +72,7 @@ module Hallon
|
|
72
72
|
|
73
73
|
subscribe_for_callbacks do |callback|
|
74
74
|
@type = type
|
75
|
-
@pointer = Spotify.toplistbrowse_create
|
75
|
+
@pointer = Spotify.toplistbrowse_create(session.pointer, type, region, user, callback, nil)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
data/lib/hallon/track.rb
CHANGED
@@ -10,7 +10,7 @@ module Hallon
|
|
10
10
|
size :track_num_artists
|
11
11
|
|
12
12
|
# @return [Artist, nil]
|
13
|
-
item :track_artist
|
13
|
+
item :track_artist do |artist|
|
14
14
|
Artist.from(artist)
|
15
15
|
end
|
16
16
|
end
|
@@ -43,7 +43,7 @@ module Hallon
|
|
43
43
|
# @param [String, Link, FFI::Pointer] link
|
44
44
|
def initialize(link)
|
45
45
|
FFI::MemoryPointer.new(:int) do |ptr|
|
46
|
-
@pointer = to_pointer(link,
|
46
|
+
@pointer = to_pointer(link, Spotify::Track, ptr)
|
47
47
|
@offset = Rational(ptr.read_int, 1000)
|
48
48
|
end
|
49
49
|
end
|
@@ -74,7 +74,7 @@ module Hallon
|
|
74
74
|
# @param [Integer] length
|
75
75
|
# @return [Track]
|
76
76
|
def self.local(title, artist, album = nil, length = nil)
|
77
|
-
track = Spotify.localtrack_create
|
77
|
+
track = Spotify.localtrack_create(artist, title, album || "", length || -1)
|
78
78
|
new(track)
|
79
79
|
end
|
80
80
|
|
@@ -157,7 +157,7 @@ module Hallon
|
|
157
157
|
|
158
158
|
# @return [Hallon::Album] album this track belongs to.
|
159
159
|
def album
|
160
|
-
album = Spotify.track_album
|
160
|
+
album = Spotify.track_album(pointer)
|
161
161
|
Album.from(album)
|
162
162
|
end
|
163
163
|
|
@@ -188,7 +188,7 @@ module Hallon
|
|
188
188
|
# @see autolinked?
|
189
189
|
# @return [Track] the track this track is autolinked to for audio playback.
|
190
190
|
def playable_track
|
191
|
-
track = Spotify.track_get_playable
|
191
|
+
track = Spotify.track_get_playable(session.pointer, pointer)
|
192
192
|
Track.from(track)
|
193
193
|
end
|
194
194
|
|
data/lib/hallon/user.rb
CHANGED
@@ -47,7 +47,7 @@ module Hallon
|
|
47
47
|
@tracks = tracks
|
48
48
|
@message = message
|
49
49
|
@recipient_name = recipient_name
|
50
|
-
@pointer = Spotify.inbox_post_tracks
|
50
|
+
@pointer = Spotify.inbox_post_tracks(session.pointer, @recipient_name, ary, tracks.length, @message, callback, nil)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -72,7 +72,7 @@ module Hallon
|
|
72
72
|
include Loadable
|
73
73
|
|
74
74
|
from_link :profile do |link|
|
75
|
-
Spotify.link_as_user
|
75
|
+
Spotify.link_as_user(link)
|
76
76
|
end
|
77
77
|
|
78
78
|
to_link :from_user
|
@@ -86,11 +86,11 @@ module Hallon
|
|
86
86
|
# Hallon::User.new("spotify:user:burgestrand")
|
87
87
|
#
|
88
88
|
# @note You can also instantiate User with a canonical username
|
89
|
-
# @param [String, Link, Spotify::
|
89
|
+
# @param [String, Link, Spotify::User] link
|
90
90
|
def initialize(link)
|
91
|
-
@pointer = to_pointer(link,
|
91
|
+
@pointer = to_pointer(link, Spotify::User) do
|
92
92
|
if link.is_a?(String) and link !~ /\Aspotify:user:/
|
93
|
-
to_pointer("spotify:user:#{link}",
|
93
|
+
to_pointer("spotify:user:#{link}", Spotify::User)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -114,14 +114,14 @@ module Hallon
|
|
114
114
|
# @note Returns nil unless {User#loaded?}
|
115
115
|
# @return [Playlist, nil] starred playlist of the User.
|
116
116
|
def starred
|
117
|
-
playlist = Spotify.session_starred_for_user_create
|
117
|
+
playlist = Spotify.session_starred_for_user_create(session.pointer, name)
|
118
118
|
Playlist.from(playlist)
|
119
119
|
end
|
120
120
|
|
121
121
|
# @note Returns nil unless {#loaded?}
|
122
122
|
# @return [PlaylistContainer, nil] published playlists of the User.
|
123
123
|
def published
|
124
|
-
container = Spotify.session_publishedcontainer_for_user_create
|
124
|
+
container = Spotify.session_publishedcontainer_for_user_create(session.pointer, name)
|
125
125
|
PlaylistContainer.from(container)
|
126
126
|
end
|
127
127
|
|
data/lib/hallon/version.rb
CHANGED
@@ -14,7 +14,7 @@ describe Hallon::AlbumBrowse do
|
|
14
14
|
|
15
15
|
describe ".new" do
|
16
16
|
it "should raise an error if the browse request failed" do
|
17
|
-
|
17
|
+
spotify_api.should_receive(:albumbrowse_create).and_return(null_pointer)
|
18
18
|
expect { Hallon::AlbumBrowse.new(mock_album) }.to raise_error(FFI::NullPointerError)
|
19
19
|
end
|
20
20
|
|
@@ -15,7 +15,7 @@ describe Hallon::ArtistBrowse do
|
|
15
15
|
|
16
16
|
describe ".new" do
|
17
17
|
it "should raise an error if the browse request failed" do
|
18
|
-
|
18
|
+
spotify_api.should_receive(:artistbrowse_create).and_return(null_pointer)
|
19
19
|
expect { Hallon::ArtistBrowse.new(mock_artist) }.to raise_error(FFI::NullPointerError)
|
20
20
|
end
|
21
21
|
|
data/spec/hallon/base_spec.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
+
class Spotify::BasePointer < Spotify::ManagedPointer
|
2
|
+
end
|
3
|
+
|
1
4
|
describe Hallon::Base do
|
2
5
|
let(:klass) do
|
3
6
|
Class.new(Hallon::Base) do
|
4
7
|
def initialize(pointer)
|
5
|
-
@pointer = to_pointer(pointer,
|
8
|
+
@pointer = to_pointer(pointer, Spotify::BasePointer) { |x| x }
|
6
9
|
end
|
7
10
|
end
|
8
11
|
end
|
9
12
|
|
10
13
|
let(:base_pointer) do
|
11
|
-
|
12
|
-
Spotify::
|
14
|
+
spotify_api.stub(:base_pointer_release => nil)
|
15
|
+
Spotify::BasePointer.new(a_pointer)
|
13
16
|
end
|
14
17
|
|
15
18
|
describe "#to_pointer" do
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
describe Hallon::Enumerator do
|
3
3
|
def enumerator(items)
|
4
|
-
|
5
|
-
|
4
|
+
spotify_api.stub(:enumerator_size => items)
|
5
|
+
spotify_api.stub(:enumerator_item).and_return { |_, i| alphabet[i] }
|
6
6
|
|
7
7
|
klass = Class.new(Hallon::Enumerator) do
|
8
8
|
size :enumerator_size
|
data/spec/hallon/hallon_spec.rb
CHANGED
@@ -8,10 +8,6 @@ describe Hallon do
|
|
8
8
|
specify { Hallon::API_VERSION.should == 12 }
|
9
9
|
end
|
10
10
|
|
11
|
-
describe "API_BUILD" do
|
12
|
-
specify { Hallon::API_BUILD.should be_a String }
|
13
|
-
end
|
14
|
-
|
15
11
|
describe "URI" do
|
16
12
|
example_uris.keys.each do |uri|
|
17
13
|
specify(uri) { Hallon::URI.match(uri)[0].should eq uri }
|
data/spec/hallon/link_spec.rb
CHANGED
@@ -13,7 +13,7 @@ describe Hallon::Link do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should raise an error given a null pointer" do
|
16
|
-
expect { Hallon::Link.new(Spotify::
|
16
|
+
expect { Hallon::Link.new(Spotify::Link.new(null_pointer)) }.to raise_error(ArgumentError)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should raise an error when no session instance is about" do
|
@@ -10,7 +10,7 @@ describe Hallon::Linkable do
|
|
10
10
|
let(:object) { klass.new }
|
11
11
|
let(:pointer) { FFI::Pointer.new(1) }
|
12
12
|
|
13
|
-
before(:each) {
|
13
|
+
before(:each) { spotify_api.stub(:link_as_search) }
|
14
14
|
|
15
15
|
it "should define the #from_link method" do
|
16
16
|
object.respond_to?(:from_link, true).should be_false
|
@@ -24,7 +24,7 @@ describe Hallon::Linkable do
|
|
24
24
|
|
25
25
|
describe "#to_link" do
|
26
26
|
it "should return nil if link creation failed" do
|
27
|
-
|
27
|
+
spotify_api.should_receive(:link_create_from_user).and_return(null_pointer)
|
28
28
|
|
29
29
|
klass.instance_eval do
|
30
30
|
to_link(:from_user)
|
@@ -48,7 +48,7 @@ describe Hallon::Linkable do
|
|
48
48
|
|
49
49
|
describe "#from_link" do
|
50
50
|
it "should call the appropriate Spotify function" do
|
51
|
-
|
51
|
+
spotify_api.should_receive(:link_as_search).and_return(pointer)
|
52
52
|
|
53
53
|
klass.instance_eval do
|
54
54
|
from_link(:as_search)
|
@@ -58,7 +58,7 @@ describe Hallon::Linkable do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should call the given block if necessary" do
|
61
|
-
|
61
|
+
spotify_api.should_not_receive(:link_as_search)
|
62
62
|
|
63
63
|
called = false
|
64
64
|
pointer = double(:null? => false)
|
@@ -1,16 +1,16 @@
|
|
1
1
|
describe Hallon::Observable::PlaylistContainer do
|
2
2
|
specification_for_callback "playlist_added" do
|
3
|
-
let(:input) { [a_pointer,
|
3
|
+
let(:input) { [a_pointer, mock_playlist, 3, :userdata] }
|
4
4
|
let(:output) { [Hallon::Playlist.new(mock_playlist), 3] }
|
5
5
|
end
|
6
6
|
|
7
7
|
specification_for_callback "playlist_removed" do
|
8
|
-
let(:input) { [a_pointer,
|
8
|
+
let(:input) { [a_pointer, mock_playlist, 3, :userdata] }
|
9
9
|
let(:output) { [Hallon::Playlist.new(mock_playlist), 3] }
|
10
10
|
end
|
11
11
|
|
12
12
|
specification_for_callback "playlist_moved" do
|
13
|
-
let(:input) { [a_pointer,
|
13
|
+
let(:input) { [a_pointer, mock_playlist, 3, 8, :userdata] }
|
14
14
|
let(:output) { [Hallon::Playlist.new(mock_playlist), 3, 8] }
|
15
15
|
end
|
16
16
|
|
@@ -52,7 +52,7 @@ describe Hallon::Observable::Playlist do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
specification_for_callback "track_created_changed" do
|
55
|
-
let(:input) { [a_pointer, 7,
|
55
|
+
let(:input) { [a_pointer, 7, mock_user, 15, :userdata] }
|
56
56
|
let(:output) { [7, Hallon::User.new(mock_user), Time.at(15)] }
|
57
57
|
end
|
58
58
|
|
data/spec/hallon/player_spec.rb
CHANGED
@@ -31,43 +31,43 @@ describe Hallon::Player do
|
|
31
31
|
|
32
32
|
describe "#load" do
|
33
33
|
it "should load the given track" do
|
34
|
-
|
34
|
+
spotify_api.should_receive(:session_player_load).with(session.pointer, track.pointer)
|
35
35
|
player.load(track)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should try to instantiate the track if it’s not a track" do
|
39
|
-
|
39
|
+
spotify_api.should_receive(:session_player_load).with(session.pointer, track.pointer)
|
40
40
|
player.load(track.to_str)
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should raise an error if load was unsuccessful" do
|
44
|
-
|
44
|
+
spotify_api.should_receive(:session_player_load).and_return(:is_loading)
|
45
45
|
expect { player.load(track) }.to raise_error(Hallon::Error, /IS_LOADING/)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
describe "#stop" do
|
50
50
|
it "should unload the currently loaded track" do
|
51
|
-
|
51
|
+
spotify_api.should_receive(:session_player_unload).with(session.pointer)
|
52
52
|
player.stop
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "#prefetch" do
|
57
57
|
it "should set up given track for prefetching" do
|
58
|
-
|
58
|
+
spotify_api.should_receive(:session_player_prefetch).with(session.pointer, track.pointer)
|
59
59
|
player.prefetch(track)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
describe "#play" do
|
64
64
|
it "should start playback of given track" do
|
65
|
-
|
65
|
+
spotify_api.should_receive(:session_player_play).with(session.pointer, true)
|
66
66
|
player.play
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should load and play given track if one was given" do
|
70
|
-
|
70
|
+
spotify_api.should_receive(:session_player_play).with(session.pointer, true)
|
71
71
|
player.should_receive(:load).with(track)
|
72
72
|
player.play(track)
|
73
73
|
end
|
@@ -75,14 +75,14 @@ describe Hallon::Player do
|
|
75
75
|
|
76
76
|
describe "#pause" do
|
77
77
|
it "should stop playback of given track" do
|
78
|
-
|
78
|
+
spotify_api.should_receive(:session_player_play).with(session.pointer, false)
|
79
79
|
player.pause
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
describe "#seek" do
|
84
84
|
it "should set up the currently loaded track at given position" do
|
85
|
-
|
85
|
+
spotify_api.should_receive(:session_player_seek).with(session.pointer, 1000)
|
86
86
|
player.seek(1)
|
87
87
|
end
|
88
88
|
end
|