forked from mikeal/couchie
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 906d5c5
Showing
5 changed files
with
2,035 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
(function (window) { | ||
var uuid = function b (a) { | ||
return a?(a^Math.random()*16>>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,b) | ||
} | ||
|
||
function Couchie (name) { | ||
if (name.indexOf('__') !== -1) throw new Error('Cannot have double underscores in name') | ||
this.name = name | ||
this.n = '_couchie__'+name+'__' | ||
} | ||
Couchie.prototype.clear = function (cb) { | ||
if (localStorage[this.n+'_revs']) { | ||
for (i in this.revs()) { | ||
localStorage.removeItem(this.n+i) | ||
} | ||
setTimeout(cb, 0) | ||
} else { | ||
setTimeout(cb, 0) | ||
} | ||
|
||
} | ||
Couchie.prototype.post = function (obj, cb) { | ||
if (!obj._id || !obj._rev) return cb(new Error('Document does not have _id or _rev.')) | ||
var revs = this.revs() | ||
localStorage.setItem(this.n+obj._id, JSON.stringify(obj)) | ||
revs[obj._id] = obj._rev | ||
this.setrevs(revs) | ||
cb(null) | ||
} | ||
Couchie.prototype.bulk = function (docs, cb) { | ||
var revs = this.revs() | ||
for (var i=0;i<docs.length;i++) { | ||
var obj = docs[i] | ||
if (!obj._id || !obj._rev) return cb(new Error('Document does not have _id or _rev.')) | ||
localStorage.setItem(this.n+obj._id, JSON.stringify(obj)) | ||
revs[obj._id] = obj._rev | ||
} | ||
this.setrevs(revs) | ||
cb(null) | ||
} | ||
Couchie.prototype.get = function (id, cb) { | ||
var doc = localStorage.getItem(this.n+id) | ||
if (!doc) return cb(new Error('No such doc.')) | ||
cb(null, JSON.parse(doc)) | ||
} | ||
Couchie.prototype.all = function (cb) { | ||
var self = this | ||
var revs = self.revs() | ||
cb(null, Object.keys(revs).map(function (id) {return JSON.parse(localStorage.getItem(self.n+id))})) | ||
} | ||
|
||
Couchie.prototype.revs = function () { | ||
return JSON.parse(localStorage.getItem(this.n+'_revs') || '{}') | ||
} | ||
Couchie.prototype.setrevs = function (obj) { | ||
localStorage.setItem(this.n+'_revs', JSON.stringify(obj)) | ||
} | ||
|
||
window.couchie = function (name) { return new Couchie(name) } | ||
})(window) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" | ||
"http://www.w3.org/TR/html4/loose.dtd"> | ||
<html> | ||
<head> | ||
<script src="jquery.js"></script> | ||
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen" /> | ||
<script type="text/javascript" src="qunit.js"></script> | ||
<script type="text/javascript" src="../couchie.js"></script> | ||
|
||
<script> | ||
$(document).ready(function(){ | ||
|
||
var db = couchie('test') | ||
|
||
asyncTest("clear", function() { | ||
db.clear(function () { | ||
expect(0) | ||
start() | ||
}) | ||
}) | ||
|
||
asyncTest("setFail", function () { | ||
db.post({data:'asdf'}, function (e, info) { | ||
ok(e) | ||
start() | ||
}) | ||
}) | ||
|
||
asyncTest("set", function () { | ||
db.post({_id:'test1', data:'asdf', _rev:'1-fake'}, function (e, info) { | ||
ok(!e) | ||
start() | ||
}) | ||
}) | ||
|
||
test("revs", function () { | ||
var r = db.revs() | ||
equal(r['test1'], '1-fake') | ||
}) | ||
|
||
asyncTest("get", function () { | ||
db.get('test1', function (e, doc) { | ||
ok(!e) | ||
equal(doc._id, 'test1') | ||
equal(doc._rev, '1-fake') | ||
start() | ||
}) | ||
}) | ||
|
||
asyncTest("getnone", function () { | ||
db.get('testasdfa1', function (e, doc) { | ||
ok(e) | ||
start() | ||
}) | ||
}) | ||
|
||
asyncTest("all", function () { | ||
db.all(function (e, docs) { | ||
ok(!e) | ||
equal(docs.length, 1) | ||
equal(docs[0]._id, 'test1') | ||
equal(docs[0]._rev, '1-fake') | ||
start() | ||
}) | ||
}) | ||
|
||
}) | ||
</script> | ||
|
||
</head> | ||
<body> | ||
<h1 id="qunit-header">QUnit example</h1> | ||
<h2 id="qunit-banner"></h2> | ||
<div id="qunit-testrunner-toolbar"></div> | ||
<h2 id="qunit-userAgent"></h2> | ||
<ol id="qunit-tests"></ol> | ||
<div id="qunit-fixture">test markup, will be hidden</div> | ||
</body> | ||
</html> |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,232 @@ | ||
/** | ||
* QUnit v1.4.0pre - A JavaScript Unit Testing Framework | ||
* | ||
* http://docs.jquery.com/QUnit | ||
* | ||
* Copyright (c) 2012 John Resig, Jörn Zaefferer | ||
* Dual licensed under the MIT (MIT-LICENSE.txt) | ||
* or GPL (GPL-LICENSE.txt) licenses. | ||
*/ | ||
|
||
/** Font Family and Sizes */ | ||
|
||
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { | ||
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; | ||
} | ||
|
||
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } | ||
#qunit-tests { font-size: smaller; } | ||
|
||
|
||
/** Resets */ | ||
|
||
#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { | ||
margin: 0; | ||
padding: 0; | ||
} | ||
|
||
|
||
/** Header */ | ||
|
||
#qunit-header { | ||
padding: 0.5em 0 0.5em 1em; | ||
|
||
color: #8699a4; | ||
background-color: #0d3349; | ||
|
||
font-size: 1.5em; | ||
line-height: 1em; | ||
font-weight: normal; | ||
|
||
border-radius: 15px 15px 0 0; | ||
-moz-border-radius: 15px 15px 0 0; | ||
-webkit-border-top-right-radius: 15px; | ||
-webkit-border-top-left-radius: 15px; | ||
} | ||
|
||
#qunit-header a { | ||
text-decoration: none; | ||
color: #c2ccd1; | ||
} | ||
|
||
#qunit-header a:hover, | ||
#qunit-header a:focus { | ||
color: #fff; | ||
} | ||
|
||
#qunit-header label { | ||
display: inline-block; | ||
} | ||
|
||
#qunit-banner { | ||
height: 5px; | ||
} | ||
|
||
#qunit-testrunner-toolbar { | ||
padding: 0.5em 0 0.5em 2em; | ||
color: #5E740B; | ||
background-color: #eee; | ||
} | ||
|
||
#qunit-userAgent { | ||
padding: 0.5em 0 0.5em 2.5em; | ||
background-color: #2b81af; | ||
color: #fff; | ||
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; | ||
} | ||
|
||
|
||
/** Tests: Pass/Fail */ | ||
|
||
#qunit-tests { | ||
list-style-position: inside; | ||
} | ||
|
||
#qunit-tests li { | ||
padding: 0.4em 0.5em 0.4em 2.5em; | ||
border-bottom: 1px solid #fff; | ||
list-style-position: inside; | ||
} | ||
|
||
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { | ||
display: none; | ||
} | ||
|
||
#qunit-tests li strong { | ||
cursor: pointer; | ||
} | ||
|
||
#qunit-tests li a { | ||
padding: 0.5em; | ||
color: #c2ccd1; | ||
text-decoration: none; | ||
} | ||
#qunit-tests li a:hover, | ||
#qunit-tests li a:focus { | ||
color: #000; | ||
} | ||
|
||
#qunit-tests ol { | ||
margin-top: 0.5em; | ||
padding: 0.5em; | ||
|
||
background-color: #fff; | ||
|
||
border-radius: 15px; | ||
-moz-border-radius: 15px; | ||
-webkit-border-radius: 15px; | ||
|
||
box-shadow: inset 0px 2px 13px #999; | ||
-moz-box-shadow: inset 0px 2px 13px #999; | ||
-webkit-box-shadow: inset 0px 2px 13px #999; | ||
} | ||
|
||
#qunit-tests table { | ||
border-collapse: collapse; | ||
margin-top: .2em; | ||
} | ||
|
||
#qunit-tests th { | ||
text-align: right; | ||
vertical-align: top; | ||
padding: 0 .5em 0 0; | ||
} | ||
|
||
#qunit-tests td { | ||
vertical-align: top; | ||
} | ||
|
||
#qunit-tests pre { | ||
margin: 0; | ||
white-space: pre-wrap; | ||
word-wrap: break-word; | ||
} | ||
|
||
#qunit-tests del { | ||
background-color: #e0f2be; | ||
color: #374e0c; | ||
text-decoration: none; | ||
} | ||
|
||
#qunit-tests ins { | ||
background-color: #ffcaca; | ||
color: #500; | ||
text-decoration: none; | ||
} | ||
|
||
/*** Test Counts */ | ||
|
||
#qunit-tests b.counts { color: black; } | ||
#qunit-tests b.passed { color: #5E740B; } | ||
#qunit-tests b.failed { color: #710909; } | ||
|
||
#qunit-tests li li { | ||
margin: 0.5em; | ||
padding: 0.4em 0.5em 0.4em 0.5em; | ||
background-color: #fff; | ||
border-bottom: none; | ||
list-style-position: inside; | ||
} | ||
|
||
/*** Passing Styles */ | ||
|
||
#qunit-tests li li.pass { | ||
color: #5E740B; | ||
background-color: #fff; | ||
border-left: 26px solid #C6E746; | ||
} | ||
|
||
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } | ||
#qunit-tests .pass .test-name { color: #366097; } | ||
|
||
#qunit-tests .pass .test-actual, | ||
#qunit-tests .pass .test-expected { color: #999999; } | ||
|
||
#qunit-banner.qunit-pass { background-color: #C6E746; } | ||
|
||
/*** Failing Styles */ | ||
|
||
#qunit-tests li li.fail { | ||
color: #710909; | ||
background-color: #fff; | ||
border-left: 26px solid #EE5757; | ||
white-space: pre; | ||
} | ||
|
||
#qunit-tests > li:last-child { | ||
border-radius: 0 0 15px 15px; | ||
-moz-border-radius: 0 0 15px 15px; | ||
-webkit-border-bottom-right-radius: 15px; | ||
-webkit-border-bottom-left-radius: 15px; | ||
} | ||
|
||
#qunit-tests .fail { color: #000000; background-color: #EE5757; } | ||
#qunit-tests .fail .test-name, | ||
#qunit-tests .fail .module-name { color: #000000; } | ||
|
||
#qunit-tests .fail .test-actual { color: #EE5757; } | ||
#qunit-tests .fail .test-expected { color: green; } | ||
|
||
#qunit-banner.qunit-fail { background-color: #EE5757; } | ||
|
||
|
||
/** Result */ | ||
|
||
#qunit-testresult { | ||
padding: 0.5em 0.5em 0.5em 2.5em; | ||
|
||
color: #2b81af; | ||
background-color: #D2E0E6; | ||
|
||
border-bottom: 1px solid white; | ||
} | ||
|
||
/** Fixture */ | ||
|
||
#qunit-fixture { | ||
position: absolute; | ||
top: -10000px; | ||
left: -10000px; | ||
width: 1000px; | ||
height: 1000px; | ||
} |
Oops, something went wrong.