VRFS-2700 added state deferred call; RecordingSource subclass

This commit is contained in:
Jonathan Kolyer 2015-02-15 12:27:48 +00:00
parent 4aa845cfc8
commit 78321ce374
2 changed files with 72 additions and 15 deletions

View File

@ -15,11 +15,10 @@ context.JK.SiteValidator = class SiteValidator
@checkmark = @input_div.find('.validate-checkmark')
this.setSiteStatus(null)
this.showFormatStatus()
if @site_type.match(/^rec_.*$/)
@is_rec_src = true
else
@is_rec_src = false
@is_rec_src = false
@recording_source_id = null
@deferred_status_check = null
@is_validating = false
init: () =>
this.renderErrors({})
@ -29,6 +28,8 @@ context.JK.SiteValidator = class SiteValidator
validator.did_blur()
@data_input.on 'focus', ->
validator.showFormatStatus()
@data_input.on 'change', ->
@site_status = null
dataToValidate: () =>
url = @data_input.val()
@ -60,34 +61,38 @@ context.JK.SiteValidator = class SiteValidator
processSiteCheck: (response) =>
@spinner.hide()
if @is_rec_src
@recording_source_id = response.recording_id
if 'Valid Site' == response.message
this.setSiteStatus('valid')
this.setSiteStatus(true)
this.renderErrors({})
if @deferred_status_check
@deferred_status_check.resolve
else
this.setSiteStatus('invalid')
this.setSiteStatus(false)
this.renderErrors(response)
if @deferred_status_check
@deferred_status_check.reject
@logger.debug("site_status = "+@site_status)
processSiteCheckFail: (response) =>
@logger.error("site check error")
this.setSiteStatus('invalid')
this.setSiteStatus(false)
if @deferred_status_check
@deferred_status_check.reject
setSiteStatus: (status) =>
@site_status = status
@spinner.hide()
if 'valid' == status
if true == status
@checkmark.show()
else
@checkmark.hide()
siteIsValid: () =>
this.setSiteStatus('valid')
this.setSiteStatus(true)
siteIsInvalid: () =>
this.setSiteStatus('invalid')
this.setSiteStatus(false)
renderErrors: (errors) =>
errdiv = @input_div.find('.error')
@ -99,3 +104,35 @@ context.JK.SiteValidator = class SiteValidator
@checkmark.show()
errdiv.hide()
errdiv.html('')
state: () =>
dfr = $.Deferred()
if null == @site_status
@deferred_status_check = dfr
this.validateSite()
else
if true == @site_status
dfr.resolve()
else
dfr.reject()
return dfr.promise()
context.JK.RecordingSourceValidator = class RecordingSourceValidator extends SiteValidator
constructor: (site_type) ->
super(site_type)
@recording_sources = []
@is_rec_src = true
@add_btn = @input_div.find('.rec_src_add')
init: (sources) =>
super()
if sources
@recording_sources = sources
processSiteCheck: (response) =>
super()
@recording_source_id = response.recording_id
addSource: () ->
@add_btn.addClass('disabled')

View File

@ -7,19 +7,39 @@ describe "SiteValidator", ->
fixture.preload("siteValidator.html")
beforeEach ->
this.server = sinon.fakeServer.create();
@server = sinon.fakeServer.create();
window.jamClient = sinon.stub()
@fixtures = fixture.load("siteValidator.html", true)
window.gon = {}
window.gon.isNativeClient = true
afterEach ->
this.server.restore();
@server.restore();
it "displays validator widget", ->
site_validator = new JK.SiteValidator('url')
site_validator.init()
site_validator.data_input.val('http://www.jamkazam.com')
site_validator.siteIsValid()
expect(site_validator.checkmark).toBeVisible()
it "displays error for bad url", ->
site_validator = new JK.SiteValidator('url')
site_validator.init()
site_validator.data_input.val('www.jamkazam.com')
site_validator.did_blur()
expect(site_validator.checkmark).toBeHidden()
xit "validates a good url", ->
url = 'http://www.jamkazam.com'
@server.respondWith("GET", '/api/data_validation?sitetype=url&data=' + encodeURIComponent(url),
[200, { "content-type": "application/json" }, '{ "message": "Valid Site" }'])
sinon.spy()
site_validator = new JK.SiteValidator('url')
site_validator.init()
site_validator.data_input.val(url)
site_validator.did_blur()
@server.respond()
expect(site_validator.checkmark).toBeVisible()