231 lines
8.5 KiB
CoffeeScript
231 lines
8.5 KiB
CoffeeScript
describe "SyncViewer", ->
|
|
|
|
beforeEach ->
|
|
this.fixtures = fixture.load("syncViewer.html", "user_sync_track1.json"); # append these fixtures which were already cached
|
|
this.server = sinon.fakeServer.create();
|
|
window.jamClient = sinon.stub()
|
|
this.syncViewer = new JK.SyncViewer()
|
|
this.syncViewer.init()
|
|
$('body').append(this.syncViewer.root)
|
|
this.track1 = this.fixtures[1]["entries"][0]
|
|
window.gon = {}
|
|
window.gon.isNativeClient = true
|
|
|
|
callback = sinon.spy()
|
|
window.jamClient.GetLocalRecordingState = sinon.stub().returns({recordings: []})
|
|
window.jamClient.GetRecordingManagerState = sinon.stub().returns({running: false})
|
|
window.jamClient.IsNativeClient = sinon.stub().returns(true)
|
|
|
|
|
|
afterEach ->
|
|
this.server.restore();
|
|
|
|
it "display state correctly", ->
|
|
$track = this.syncViewer.createTrack(this.track1)
|
|
this.syncViewer.updateTrackState($track)
|
|
|
|
expect($track.find('.client-state .msg')).toContainText('MISSING')
|
|
expect($track.find('.upload-state .msg')).toContainText('PENDING UPLOAD')
|
|
|
|
this.track1.fully_uploaded = true
|
|
|
|
this.syncViewer.updateTrackState($track)
|
|
|
|
expect($track.find('.upload-state .msg')).toContainText('UPLOADED')
|
|
|
|
|
|
describe "no track", ->
|
|
|
|
beforeEach ->
|
|
this.syncViewer.load()
|
|
|
|
this.server.requests[0].respond(
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
JSON.stringify({ next: null, entries: []})
|
|
);
|
|
|
|
|
|
it "loads empty", ->
|
|
|
|
expect(this.syncViewer.list.find('.no-syncs')).toExist();
|
|
|
|
|
|
describe "one track", ->
|
|
beforeEach ->
|
|
this.syncViewer.load()
|
|
|
|
this.server.requests[0].respond(
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
JSON.stringify({ next: null, entries: [this.track1]})
|
|
);
|
|
|
|
|
|
it "loads single track", ->
|
|
|
|
expect(this.syncViewer.list.find('.no-syncs')).not.toExist();
|
|
$track = this.syncViewer.list.find('.recorded-track')
|
|
expect($track).toHaveLength(1);
|
|
expect($track.find('.client-state .msg')).toContainText('MISSING')
|
|
expect($track.find('.upload-state .msg')).toContainText('PENDING UPLOAD')
|
|
|
|
it "handles recorded_track upload progress events correctly", ->
|
|
|
|
commandMetadata = {queue: 'upload', type: 'recorded_track', action: 'upload', recording_id: this.track1.recording_id, track_id: this.track1.client_track_id}
|
|
cmd = {commandId: '1', commandType: 'upload', commandMetadata: commandMetadata }
|
|
|
|
# first we should see that recording manager is paused
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
|
|
# send in a start command
|
|
this.syncViewer.fileManagerCmdStart(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('busy')
|
|
|
|
$recordedTrackProgress = this.syncViewer.uploadProgress.find('.recorded-track.sync')
|
|
expect($recordedTrackProgress).toHaveLength(1)
|
|
expect($recordedTrackProgress.find('.progress')).toBeHidden()
|
|
|
|
cmd.percentage = 50 # half way done
|
|
this.syncViewer.fileManagerCmdProgress(null, cmd)
|
|
|
|
expect($recordedTrackProgress.find('.progress')).toBeVisible()
|
|
|
|
# command is over; progress element should be removed now
|
|
this.syncViewer.fileManagerCmdStop(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
expect($recordedTrackProgress).not.toBeInDOM() # got removed
|
|
|
|
it "handles mix download progress events correctly", ->
|
|
|
|
commandMetadata = {queue: 'download', type: 'mix', action: 'download'}
|
|
cmd = {commandId: '1', commandType: 'download', commandMetadata: commandMetadata }
|
|
|
|
# first we should see that recording manager is paused
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
|
|
# send in a start command
|
|
this.syncViewer.fileManagerCmdStart(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('busy')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
|
|
$progress = this.syncViewer.downloadProgress.find('.generic.sync')
|
|
expect($progress).toHaveLength(1)
|
|
expect($progress.find('span.text')).toHaveText('DOWNLOADING MIX')
|
|
|
|
cmd.percentage = 50 # half way done
|
|
this.syncViewer.fileManagerCmdProgress(null, cmd)
|
|
|
|
# nothing happens in percentage update
|
|
|
|
# command is over; progress element should be removed now
|
|
this.syncViewer.fileManagerCmdStop(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
expect($progress).not.toBeInDOM() # got removed
|
|
|
|
it "handles recorded track convert progress events correctly", ->
|
|
|
|
commandMetadata = {queue: 'upload', type: 'recorded_track', action: 'convert'}
|
|
cmd = {commandId: '1', commandType: 'upload', commandMetadata: commandMetadata }
|
|
|
|
# first we should see that recording manager is paused
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
|
|
# send in a start command
|
|
this.syncViewer.fileManagerCmdStart(null, cmd)
|
|
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('busy')
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
|
|
$progress = this.syncViewer.uploadProgress.find('.generic.sync')
|
|
expect($progress).toHaveLength(1)
|
|
expect($progress.find('span.text')).toHaveText('COMPRESSING TRACK')
|
|
|
|
cmd.percentage = 50 # half way done
|
|
this.syncViewer.fileManagerCmdProgress(null, cmd)
|
|
|
|
# nothing happens in percentage update
|
|
|
|
# command is over; progress element should be removed now
|
|
this.syncViewer.fileManagerCmdStop(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
expect($progress).not.toBeInDOM() # got removed
|
|
|
|
it "handles stream mix upload progress events correctly", ->
|
|
|
|
commandMetadata = {queue: 'upload', type: 'stream_mix', action: 'upload'}
|
|
cmd = {commandId: '1', commandType: 'upload', commandMetadata: commandMetadata }
|
|
|
|
# first we should see that recording manager is paused
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
|
|
# send in a start command
|
|
this.syncViewer.fileManagerCmdStart(null, cmd)
|
|
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('busy')
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
|
|
$progress = this.syncViewer.uploadProgress.find('.generic.sync')
|
|
expect($progress).toHaveLength(1)
|
|
expect($progress.find('span.text')).toHaveText('UPLOADING STREAM MIX')
|
|
|
|
cmd.percentage = 50 # half way done
|
|
this.syncViewer.fileManagerCmdProgress(null, cmd)
|
|
|
|
# nothing happens in percentage update
|
|
|
|
# command is over; progress element should be removed now
|
|
this.syncViewer.fileManagerCmdStop(null, cmd)
|
|
|
|
expect(this.syncViewer.downloadProgress).toHaveClass('paused')
|
|
expect(this.syncViewer.uploadProgress).toHaveClass('paused')
|
|
expect($progress).not.toBeInDOM() # got removed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it "displays hover info over recorded-track", ->
|
|
|
|
$track = this.syncViewer.list.find('.recorded-track')
|
|
|
|
# should show over client state
|
|
$clientState = $track.find('.client-state')
|
|
expect($clientState).toHaveLength(1);
|
|
$clientState.btOn()
|
|
$hoverHelp = $('.help-hover-recorded-tracks')
|
|
expect($hoverHelp).toHaveLength(1);
|
|
|
|
# also verify that the message is correct about client state and upload state
|
|
expect($hoverHelp.find('.client-state .msg')).toContainText('MISSING')
|
|
expect($hoverHelp.find('.upload-state .msg')).toContainText('PENDING UPLOAD')
|
|
|
|
$clientState.btOff()
|
|
|
|
# as well as show over upload state
|
|
$uploadState = $track.find('.upload-state')
|
|
expect($uploadState).toHaveLength(1);
|
|
$uploadState.btOn()
|
|
$hoverHelp = $('.help-hover-recorded-tracks')
|
|
expect($hoverHelp).toHaveLength(1);
|
|
# also verify that the message is correct about client state and upload state
|
|
expect($hoverHelp.find('.client-state .msg')).toContainText('MISSING')
|
|
expect($hoverHelp.find('.upload-state .msg')).toContainText('PENDING UPLOAD')
|
|
|
|
$uploadState.btOff()
|
|
|