Telegram Web, preconfigured for usage in I2P. http://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.3 KiB

'use strict'
/* global describe, it, inject, expect, beforeEach, jasmine, spyOn */
describe('VideoModalController', function () {
beforeEach(module('myApp.controllers'))
beforeEach(function () {
this.AppDocsManager = {
wrapVideoForFull: jasmine.createSpy('wrapVideoForFull'),
saveDocFile: jasmine.createSpy('saveDocFile')
}
this.ErrorService = {
input: {},
confirm: function (message) {
this.input = message
return {
then: function (f) {
f()
}
}
}
}
this.PeersSelectService = {
input: {},
selectPeer: function (options) {
this.input = options
return {
then: function (f) {
f('Peerselected')
}
}
}
}
this.AppMessagesManager = {
deleteMessages: jasmine.createSpy('deleteMessages')
}
this.$modalInstance = {
dismiss: jasmine.createSpy('dismissModal')
}
inject(function (_$controller_, _$rootScope_) {
this.$rootScope = _$rootScope_
this.$scope = this.$rootScope.$new()
this.$scope.docID = 'randomvideo'
this.$controller = _$controller_
spyOn(this.$rootScope, '$broadcast').and.callThrough()
spyOn(this.$scope, '$on').and.callThrough()
this.$controller('VideoModalController', {
$scope: this.$scope,
$rootScope: this.$rootScope,
$modalInstance: this.$modalInstance,
PeersSelectService: this.PeersSelectService,
AppMessagesManager: this.AppMessagesManager,
AppDocsManager: this.AppDocsManager,
AppPeersManager: {},
ErrorService: this.ErrorService
})
})
})
// define tests
it('sets the video in the scope', function (done) {
expect(this.$scope.progress).toEqual({enabled: false})
expect(this.$scope.player).toEqual({})
expect(this.AppDocsManager.wrapVideoForFull).toHaveBeenCalledWith(this.$scope.docID)
done()
})
it('forwards a message with a video', function (done) {
this.$scope.messageID = 'id68567'
var messageID = this.$scope.messageID
this.$scope.forward()
expect(this.PeersSelectService.input).toEqual({canSend: true})
expect(this.$scope.$broadcast).toHaveBeenCalledWith('history_focus', {
peerString: 'Peerselected',
attachment: {
_: 'fwd_messages',
id: [messageID]
}
})
done()
})
it('deletes a message with a video', function (done) {
this.$scope.messageID = 'id235235'
this.$scope.delete()
expect(this.ErrorService.input).toEqual({type: 'MESSAGE_DELETE'})
expect(this.AppMessagesManager.deleteMessages).toHaveBeenCalledWith([this.$scope.messageID])
done()
})
it('downloads the document (video)', function (done) {
this.$scope.download()
expect(this.AppDocsManager.saveDocFile).toHaveBeenCalledWith(this.$scope.docID)
done()
})
it('delete a video linked to a message', function (done) {
this.$scope.messageID = 'id2352'
this.$rootScope.$broadcast('history_delete')
expect(this.$scope.$on).toHaveBeenCalledWith('history_delete', jasmine.any(Function))
expect(this.$modalInstance.dismiss).not.toHaveBeenCalled()
done()
})
it('can not delete a video not linked to a message', function (done) {
this.$scope.messageID = 'id42'
var historyUpdate = {}
this.$rootScope.$broadcast('history_delete', historyUpdate)
expect(this.$scope.$on).toHaveBeenCalledWith('history_delete', jasmine.any(Function))
expect(this.$modalInstance.dismiss).not.toHaveBeenCalled()
historyUpdate.msgs = {}
this.$rootScope.$broadcast('history_delete', historyUpdate)
expect(this.$scope.$on).toHaveBeenCalledWith('history_delete', jasmine.any(Function))
expect(this.$modalInstance.dismiss).not.toHaveBeenCalled()
done()
})
describe('when the video is related to the message', function () {
beforeEach(function () {
this.historyUpdate = {
msgs: {}
}
})
it('delete that video', function (done) {
this.$scope.messageID = 'id33'
this.historyUpdate.msgs[this.$scope.messageID] = 'an update for id33'
this.$rootScope.$broadcast('history_delete', this.historyUpdate)
expect(this.$scope.$on).toHaveBeenCalledWith('history_delete', jasmine.any(Function))
expect(this.$modalInstance.dismiss).toHaveBeenCalled()
done()
})
})
})