moving some schema stuff around

This commit is contained in:
Tyler Renelle 2012-09-23 15:19:29 -04:00
parent ef73281f9e
commit 1a68f00fb2
6 changed files with 69 additions and 56 deletions

View file

@ -1,7 +1,9 @@
// Generated by CoffeeScript 1.3.3
var userSchema;
var content, userSchema;
module.exports.userSchema = userSchema = {
content = require('./content');
userSchema = {
balance: 2,
stats: {
money: 0,
@ -23,6 +25,31 @@ module.exports.userSchema = userSchema = {
rewardIds: []
};
module.exports.newUserObject = function() {
var guid, newUser, task, _i, _len, _ref;
newUser = require('node.extend')(true, {}, userSchema);
_ref = content.defaultTasks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
task = _ref[_i];
guid = task.id = require('derby/node_modules/racer').uuid();
newUser.tasks[guid] = task;
switch (task.type) {
case 'habit':
newUser.habitIds.push(guid);
break;
case 'daily':
newUser.dailyIds.push(guid);
break;
case 'todo':
newUser.todoIds.push(guid);
break;
case 'reward':
newUser.rewardIds.push(guid);
}
}
return newUser;
};
module.exports.updateSchema = function(model) {
return;
return model.fetch('users', function(err, users) {

View file

@ -14,33 +14,13 @@ module.exports.setRequest = function(r) {
};
module.exports.newUserAndPurl = function() {
var acceptableUid, guid, model, newUser, sess, task, uidParam, _i, _len, _ref;
var acceptableUid, model, sess, uidParam;
model = req.getModel();
sess = model.session;
uidParam = req.url.split('/')[1];
if (!sess.userId) {
sess.userId = derby.uuid();
newUser = require('node.extend')(true, {}, schema.userSchema);
_ref = content.defaultTasks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
task = _ref[_i];
guid = task.id = require('derby/node_modules/racer').uuid();
newUser.tasks[guid] = task;
switch (task.type) {
case 'habit':
newUser.habitIds.push(guid);
break;
case 'daily':
newUser.dailyIds.push(guid);
break;
case 'todo':
newUser.todoIds.push(guid);
break;
case 'reward':
newUser.rewardIds.push(guid);
}
}
model.set("users." + sess.userId, newUser);
model.set("users." + sess.userId, schema.newUserObject());
}
acceptableUid = require('guid').isGuid(uidParam) || (uidParam === '3');
if (acceptableUid && sess.userId !== uidParam && !(sess.habitRpgAuth && sess.habitRpgAuth.facebook)) {

View file

@ -1,5 +1,6 @@
content = require './content'
module.exports.userSchema = userSchema = {
userSchema = {
balance: 2
stats: { money: 0, exp: 0, lvl: 1, hp: 50 }
items: { itemsEnabled: false, armor: 0, weapon: 0, rerollsRemaining: 5 }
@ -10,6 +11,19 @@ module.exports.userSchema = userSchema = {
completedIds: []
rewardIds: []
}
module.exports.newUserObject = ->
# deep clone, else further new users get duplicate objects
newUser = require('node.extend')(true, {}, userSchema)
for task in content.defaultTasks
guid = task.id = require('derby/node_modules/racer').uuid()
newUser.tasks[guid] = task
switch task.type
when 'habit' then newUser.habitIds.push guid
when 'daily' then newUser.dailyIds.push guid
when 'todo' then newUser.todoIds.push guid
when 'reward' then newUser.rewardIds.push guid
return newUser
module.exports.updateSchema = (model) ->
return # not using, will revisit this later

View file

@ -6,8 +6,8 @@ content = require('../app/content')
req = undefined
module.exports.setRequest = (r) ->
req = r
module.exports.newUserAndPurl = () ->
module.exports.newUserAndPurl = ->
model = req.getModel()
sess = model.session
uidParam = req.url.split('/')[1]
@ -16,17 +16,7 @@ module.exports.newUserAndPurl = () ->
# They get to play around before creating a new account.
unless sess.userId
sess.userId = derby.uuid()
# deep clone, else further new users get duplicate objects
newUser = require('node.extend')(true, {}, schema.userSchema)
for task in content.defaultTasks
guid = task.id = require('derby/node_modules/racer').uuid()
newUser.tasks[guid] = task
switch task.type
when 'habit' then newUser.habitIds.push guid
when 'daily' then newUser.dailyIds.push guid
when 'todo' then newUser.todoIds.push guid
when 'reward' then newUser.rewardIds.push guid
model.set "users.#{sess.userId}", newUser
model.set "users.#{sess.userId}", schema.newUserObject()
## -------- (2) PURL --------
# eg, http://localhost/{guid}), legacy - will be removed eventually
@ -37,7 +27,6 @@ module.exports.newUserAndPurl = () ->
sess.userId = uidParam
module.exports.setupEveryauth = (everyauth) ->
everyauth.debug = true
everyauth.everymodule.findUserById (id, callback) ->

View file

@ -4,3 +4,4 @@
--growl
--debug
--compilers coffee:coffee-script
--globals io

View file

@ -1,23 +1,25 @@
{expect, calls} = require 'derby/node_modules/racer/test/util' #TODO what is this?
{DetachedModel: Model, ResMock} = require 'derby/test/mocks'
{expect} = require 'derby/node_modules/racer/test/util'
{BrowserModel: Model} = require 'derby/node_modules/racer/test/util/model'
scoring = require '../src/app/scoring'
schema = require '../src/app/schema'
_ = require '../public/js/underscore-min'
## mock model
#model = {
# data: {}
# set: (path, val) ->
# @data[path] = val
# get: (path) ->
# @data[path]
# }
describe 'Scoring', ->
user = null
model = null
it 'should save initial user correctly', (done) ->
console.log 'teest'
beforeEach ->
model = new Model
model.set '_user', {hp:50}
model.set '_user', schema.newUserObject()
it 'should set user defaults correctly', ->
user = model.get '_user'
expect user.get('hp').to.eql 5
done()
expect(user.stats).to.eql { money: 0, exp: 0, lvl: 1, hp: 50 }
expect(user.items).to.eql { itemsEnabled: false, armor: 0, weapon: 0, rerollsRemaining: 5 }
expect(user.balance).to.eql 2
expect(_.size(user.tasks)).to.eql 9
expect(_.size(user.habitIds)).to.eql 3
expect(_.size(user.dailyIds)).to.eql 3
expect(_.size(user.todoIds)).to.eql 1
expect(_.size(user.completedIds)).to.eql 0
expect(_.size(user.rewardIds)).to.eql 2