mirror of
https://github.com/localForage/localForage.git
synced 2026-02-01 15:32:04 +00:00
122 lines
4.0 KiB
CoffeeScript
122 lines
4.0 KiB
CoffeeScript
'use strict'
|
|
|
|
# We keep track of these, again, because we skip some tests and like for the
|
|
# numbers to add up/make sense.
|
|
NUMBER_OF_TESTS = 10
|
|
|
|
casper.test.begin "Testing localforage driver selection", NUMBER_OF_TESTS, (test) ->
|
|
casper.start "#{casper.TEST_URL}test.html", ->
|
|
test.info "Testing using global scope (window.localforage)"
|
|
|
|
test.assertEval ->
|
|
typeof localforage.setDriver is 'function'
|
|
, "localforage API includes option to set a driver explicitly"
|
|
|
|
test.assertEval ->
|
|
typeof localforage.ready is 'function'
|
|
, "localforage API includes option to check if driver is initiated"
|
|
|
|
test.assertEval ->
|
|
localforage.setDriver "localStorageWrapper"
|
|
|
|
localforage.driver() is "localStorageWrapper"
|
|
, "localStorageWrapper should be loaded after calling setDriver()"
|
|
|
|
casper.thenOpen "#{casper.TEST_URL}test.require.html"
|
|
|
|
casper.then ->
|
|
test.info "Testing using require.js"
|
|
|
|
test.assertEval ->
|
|
window.localforage is undefined
|
|
, 'localforage should not be available in the global context'
|
|
|
|
casper.wait 1000 # This fixes a Travis CI bug. I hate it, but c'est la vie.
|
|
|
|
# Unknown why, but slimerjs errors out here hardcore. It spits out:
|
|
#
|
|
# FAIL SyntaxError: JSON.parse: unexpected character
|
|
# type: uncaughtError
|
|
# file: test/test.drivers.coffee
|
|
# [...]
|
|
#
|
|
# TODO: Fix and report this.
|
|
unless casper.ENGINE is 'slimerjs'
|
|
casper.then ->
|
|
@evaluate ->
|
|
require ['localforage'], (lf) ->
|
|
window._localforage = lf
|
|
|
|
lf.ready ->
|
|
window._readyCallback = true
|
|
|
|
lf.ready().then ->
|
|
window._readyPromise = true
|
|
__utils__.findOne('.status').id = 'lib-ready'
|
|
|
|
@waitForSelector '#lib-ready', ->
|
|
test.assertEval ->
|
|
window._localforage isnt undefined
|
|
, 'localforage should be available inside a define call'
|
|
|
|
test.assertEval ->
|
|
window._readyCallback is true
|
|
, 'localforage ready() should accept a callback (for RequireJS context)'
|
|
|
|
test.assertEval ->
|
|
window._readyPromise is true
|
|
, 'localforage ready() should return a Promise (for RequireJS context)'
|
|
|
|
casper.then ->
|
|
@evaluate ->
|
|
require ['localforage'], (localforage) ->
|
|
localforage.setDriver 'localStorageWrapper', (localforage) ->
|
|
window._localforageDriver = localforage.driver()
|
|
__utils__.findOne('.status').id = 'driver-set'
|
|
|
|
@waitForSelector '#driver-set', ->
|
|
test.assertEval ->
|
|
window._localforageDriver is "localStorageWrapper"
|
|
, "localStorage driver should be loaded after it's set"
|
|
|
|
casper.then ->
|
|
@evaluate ->
|
|
require ['localforage'], (localforage) ->
|
|
localforage.setDriver 'asyncStorage', (localforage) ->
|
|
window._localforageDriver = localforage.driver()
|
|
__utils__.findOne('.status').id = 'driver-attempt'
|
|
|
|
@waitForSelector '#driver-attempt', ->
|
|
test.assertEval ->
|
|
window._localforageDriver isnt "asyncStorage"
|
|
, "asyncStorage should not be loaded in WebKit"
|
|
|
|
casper.thenOpen "#{casper.TEST_URL}test.requiremin.html"
|
|
|
|
casper.wait 1000
|
|
|
|
casper.then ->
|
|
@evaluate ->
|
|
require ['../dist/localforage.min'], (localforage) ->
|
|
window._lf = localforage
|
|
|
|
casper.wait 300
|
|
|
|
casper.then ->
|
|
test.assertEval ->
|
|
typeof window._lf.driver is 'function' and
|
|
typeof window._lf._initStorage is 'function' and
|
|
typeof window._lf.getItem is 'function' and
|
|
typeof window._lf.setItem is 'function' and
|
|
typeof window._lf.clear is 'function' and
|
|
typeof window._lf.length is 'function' and
|
|
typeof window._lf.removeItem is 'function' and
|
|
typeof window._lf.key is 'function' and
|
|
typeof window._lf.keys is 'function'
|
|
, "localforage API is available in localforage.min"
|
|
else
|
|
test.skip 6, "Skipping RequireJS tests in SlimerJS"
|
|
|
|
casper.run ->
|
|
test.done()
|