brite
Version:
DOM Centric Minimalistic MVC Framework
177 lines (141 loc) • 5.83 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>briteUITest - brite.dao</title>
<!-- ****** Generic Test Includes ****** -->
<link rel="stylesheet" href="css/test.css"/>
<link rel="stylesheet" href="../others/bootstrap/css/bootstrap.css" />
<!-- only brite.js dependency -->
<script type="text/javascript" src="../js-dependencies/jquery.js" ></script>
<!-- include the brite.min.js in prod -->
<script type="text/javascript" src="../dist/brite.js" ></script>
<!-- some test utilities -->
<script type="text/javascript" src="../others/handlebars.min.js" ></script>
<script type="text/javascript" src="js/main.js" ></script>
<!-- ****** /Generic Test Includes ****** -->
<script type="text/javascript" src="js/testunit.js" ></script>
<!-- Note: the DaoHandlers are not part of the brite.js file, so, include them seperately -->
<script type="text/javascript" src="../extra/brite.InMemoryDaoHandler.js" ></script>
<style type="text/css">
#testList li{
font-family: monospace;
}
</style>
<script type="text/javascript">
var usersSeed = [{id:"001",name:"Mike Donavan",city:"San Francisco"},
{id:"002",name:"Jennifer Aniston",city:"Los Angeles"}];
brite.registerDao(new brite.InMemoryDaoHandler("User",usersSeed));
</script>
</head>
<body>
<h2>InMemory DAO</h2>
<div class="">
<h3>Test List</h3>
<ul id="testList">
</ul>
<script type="text/javascript">
$(function(){
var userDao = brite.dao("User");
// Test 001
userDao.get("001").done(function(user){
assertEqual("brite.dao.get","Mike Donavan",user.name);
});
var newUserId = null;
// test create
userDao.create({name:"John Doe",city:"New York"}).done(function(newUser){
assertEqual("brite.dao.create John Doe (user.name match)","John Doe",newUser.name);
assertNotNull("brite.dao.create John Doe (user.id exist)",newUser.id,"user.id");
newUserId = newUser.id;
});
// test delete
userDao.delete(newUserId).done(function(userIdRemoved){
assertEqual("brite.dao.remove John Doe",newUserId,userIdRemoved);
userDao.get(newUserId).done(function(johnUser){
assertNull("brite.dao.remove John Doe",johnUser,"userId");
});
});
// test deleteMany
$.when(userDao.create({name:"John Doe",city:"New York"}),userDao.create({name:"Rachel Lake",city:"Tahoe"}))
.done(function(newUser1,newUser2){
var ids = [newUser1.id,newUser2.id];
userDao.deleteMany(ids).done(function(){
userDao.list().done(function(l){
assertEqual("brite.dao.removeAll",2,l.length);
});
});
});
// test update (update user 001 city to "Paris")
userDao.get("001").done(function(user001){
assertEqual("brite.dao.update","San Francisco",user001.city);
user001.city = "Paris";
// check that it did not change the store (since we just modified the obj reference and did not call .update).
userDao.get("001").done(function(checkUser001){
// should still be "San Francisco"
assertEqual("brite.dao.update","San Francisco",checkUser001.city);
// now, do the real update user001
user001.id = "001";
userDao.update(user001).done(function(updatedUser001){
assertEqual("brite.dao.update","Paris",updatedUser001.city);
// double check that the store really changed
userDao.get("001").done(function(doubleCheckUser001){
assertEqual("brite.dao.update","Paris",doubleCheckUser001.city);
});
});
});
});
// test list
userDao.list({match:{city:"Paris"}}).done(function(userList){
assertEqual("brite.dao.list (Paris=1)",1,userList.length);
});
// create another user in paris
userDao.create({name:"Flo C",city:"Paris"}).done(function(newParisUser){
assertEqual("brite.dao.create (Paris)","Paris",newParisUser.city);
// we list everybody in paris (should have 2)
userDao.count({city:"Paris"}).done(function(count){
assertEqual("brite.dao.count (Paris=2)",2,count);
// move Paris people to New York
userDao.batchUpdate({city:"New York"},{city:"Paris"}).done(function(updatedItems){
assertEqual("brite.dao.batchUpdate (Paris to New York = 2)",2,updatedItems.length);
// Check we have 2 in new york
userDao.list({match:{city:"New York"}}).done(function(userList){
assertEqual("brite.dao.list updated (New York = 2)",2,userList.length);
// delete all New York people
userDao.batchDelete({city:"New York"}).done(function(deletedList){
assertEqual("brite.dao.batchDelete (New York)",2,deletedList.length);
// check nobody in New York
userDao.list({match:{city:"New York"}}).done(function(userList){
assertEqual("brite.dao.list updated (New York = 0)",0,userList.length);
});
});
});
});
});
});
});
</script>
<script type="text/javascript">
$(function(){
function CustomDaoHandler(entityType,seed, opts){
this.constructor._super.constructor.call(this,entityType,seed, opts);
}
brite.inherit(CustomDaoHandler,brite.InMemoryDaoHandler);
CustomDaoHandler.prototype.remove = function(id){
return this.delete(id);
};
var taskSeed = [{id:"001",name:"Mike Donavan"},
{id:"002",name:"Jennifer Aniston"}];
var dao = brite.registerDao(new CustomDaoHandler("Task",taskSeed));
var hasTrigger = false;
brite.dao.onDataChange("Task",function(){
hasTrigger = true;
},"testDataChange");
dao.remove("001");
setTimeout(function(){
assertEqual("brite.dao.remove dataChange",true,hasTrigger);
brite.dao.offDataChange("testDataChange");
},500);
});
</script>
</body>
</html>