Parcourir la source

for show sync

TonyKang il y a 8 ans
Parent
commit
507c607a01
3 fichiers modifiés avec 46 ajouts et 35 suppressions
  1. 19 25
      public/counter/counter.js
  2. 4 2
      test/demo/demo.js
  3. 23 8
      test/unit/counter/testCounter.js

+ 19 - 25
public/counter/counter.js

@@ -21,35 +21,29 @@ const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bill
 var counterDAO = function(){};
 
 counterDAO.prototype.getIDAfterCount = function(moduleName, stepCount, callback) {
-    //counterModel.findAndModify({_id: moduleName}, [], { $inc: { sequence_value: stepCount } }, {'new':true},
-    //    function (err, result) {
-    //        if (err) return err
-    //        else {
-    //            console.log('result: ' + result.value.sequence_value);
-    //            return result.value.sequence_value;
-    //        }
-    //    }
-    //);
-    //var rst = counterModel.findOne({_id: moduleName}).exec()
-    //    .then(function(result, err) {
-    //        console.log('thenable');
-    //        return result;
-    //    }
-    //);
-    var rst = counterModel.findAndModify({_id: moduleName}, [], { $inc: { sequence_value: stepCount } }, {'new':true}, callback);
-    //projectdb.close();
-    return rst;
+    var sc = stepCount;
+    if (isNaN(stepCount) || (stepCount < 0)) {
+        sc = 1;
+    } else if (!(/^-?\d+$/.test(stepCount))) {
+        sc = Math.round(stepCount + 0.5);
+    }
+    counterModel.findAndModify({_id: moduleName}, [], { $inc: { sequence_value: sc } }, {'new':true}, callback);
 }
 
-counterDAO.prototype.getID = function(moduleName) {
-    var rst = counterModel.findOne({_id: moduleName}).exec()
+counterDAO.prototype.getCurrentID = function(moduleName, callback) {
+    if (callback) {
+        counterModel.findOne({_id: moduleName}).exec()
         .then(function(result, err) {
-            console.log('thenable');
-            //projectdb.close();
-            return result;
+            if (callback) {
+                callback(result, err);
+            }
         }
-    );
-    return rst;
+        );
+        return null;
+    } else {
+        var rst = counterModel.findOne({_id: moduleName}).exec() ;
+        return rst;
+    }
 }
 
 module.exports = new counterDAO();

+ 4 - 2
test/demo/demo.js

@@ -5,8 +5,10 @@
 var test = require('tape');
 
 test('basic arithmetic', function (t) {
-    t.plan(2);
-
     t.equal(2 + 3, 5);
     t.equal(7 * 8 + 9, 65);
+    t.equal(/^-?\d+$/.test("10"), true);
+    //t.equal(isNaN(10.1), true);
+    t.equal(Math.round(10.4999), 10);
+    t.end();
 });

+ 23 - 8
test/unit/counter/testCounter.js

@@ -5,19 +5,34 @@ var test = require('tape');
 var counter = require('../../../public/counter/counter');
 var mongoose = require('mongoose');
 
-test('test counter\'s usage:', function(t) {
-    var promise = counter.getID("rptTemplates",1);
-    promise.then(function(rst){
-        console.log('result: ' + rst.sequence_value);
-        t.equal(rst.sequence_value, 6);
-        t.end();
+test('test counter\'s usage 0:', function(t) {
+    var promise = counter.getCurrentID("rptTemplates",function(result, err) {
+        console.log('callback result 0: ' + result.sequence_value);
     });
+    if (promise) {
+        promise.then(function(rst){
+            console.log('promise result 0: ' + rst.sequence_value);
+        });
+    }
+    t.pass('just pass');
+    t.end();
+})
+
+test('test counter\'s usage 1:', function(t) {
+    var promise = counter.getCurrentID("rptTemplates", null);
+    if (promise) {
+        promise.then(function(rst){
+            console.log('promise result 1: ' + rst.sequence_value);
+        });
+    }
+    t.pass('just pass');
+    t.end();
 })
 
 test('test counter\'s usage 2:', function(t) {
     counter.getIDAfterCount("rptTemplates",1, function(err, result){
-        console.log('result: ' + result.value.sequence_value);
-        t.equal(result.value.sequence_value, 7);
+        console.log('result 2: ' + result.value.sequence_value);
+        t.equal(result.value.sequence_value, 1);
         t.end();
     });
 })