Sails.js Sails权限测试,使用bluebird创建记录

Sails.js Sails权限测试,使用bluebird创建记录,sails.js,waterline,bluebird,Sails.js,Waterline,Bluebird,所以我在玩弄风帆。我正在尝试创建一个简单的系统,用户可以登录,创建公司,然后其他人可以加入这些公司,看到公司中的其他人 在所有测试运行之前,我想在引导文件中创建一些用户。这样,我的所有测试都可以利用这些用户 这基本上显示了这一切(链接,因为它是巨大的)。我创建了2个公司和10个用户。但是,这部分工作正常,当sails权限尝试将角色链接到新创建的用户时,它会变得非常混乱,并尝试创建一百万个链接到最后一个创建的用户 Company.js module.exports = { attribute

所以我在玩弄风帆。我正在尝试创建一个简单的系统,用户可以登录,创建公司,然后其他人可以加入这些公司,看到公司中的其他人

在所有测试运行之前,我想在引导文件中创建一些用户。这样,我的所有测试都可以利用这些用户

这基本上显示了这一切(链接,因为它是巨大的)。我创建了2个公司和10个用户。但是,这部分工作正常,当sails权限尝试将角色链接到新创建的用户时,它会变得非常混乱,并尝试创建一百万个链接到最后一个创建的用户

Company.js

module.exports = {

  attributes: {
    name: {
      type: 'string',
      required: true,
      minLength: 3,
      maxLength: 255,
      unique: true,
      index: true
    }
  }
}
User.js

var _ = require('lodash');
var _super = require('sails-permissions/api/models/User');

_.merge(exports, _super);
_.merge(exports, {
  attributes: {
    // Extend with custom logic here by adding additional fields, methods, etc.
    company: {
      model: 'Company'
    }
  }
});
引导文件:

/**
 * Test starter - with this version of sails.js we can only start one sails server,
 * to solve this problem we use only one before All and after All to start and
 * stop the server
 */
var Sails = require('sails');
var ConfigOverrides = require('../config/env/testing');
var Promise = require('bluebird');

var sails;

before(function (done) {

  this.timeout(100000);

  Sails.lift(ConfigOverrides, function (err, server) {

    sails = server;

    if (err) {
      return done(err);
    }

    // Companies
    var company1 = {name: 'Company 1'};
    var company2 = {name: 'Company 2'};

    // Users
    var company1Owner = {username: 'Company 1 owner', email: 'admin@company1.com', password: 'password'};
    var company2Owner = {username: 'Company 2 owner', email: 'admin@company2.com', password: 'password'};

    var company1Employee1 = {username: 'company1 Employee 1', email: '1@company1.com', password: 'password'};
    var company1Employee2 = {username: 'company1 Employee 2', email: '2@company1.com', password: 'password'};
    var company1Employee3 = {username: 'company1 Employee 3', email: '3@company1.com', password: 'password'};

    var company2Employee1 = {username: 'company2 Employee 1', email: '1@company2.com', password: 'password'};
    var company2Employee2 = {username: 'company2 Employee 2', email: '2@company2.com', password: 'password'};
    var company2Employee3 = {username: 'company2 Employee 3', email: '3@company2.com', password: 'password'};
    var company2Employee4 = {username: 'company2 Employee 4', email: '4@company2.com', password: 'password'};

    var registered = {username: 'registered', email: 'registered@foobar.com', password: 'password'};

    Promise.all([
      Company.create(company1),
      Company.create(company2)
    ])
      .spread(function (company1, company2) {
        return Promise.all([
          User.register(_.merge(company1Owner, {company: company1})),
          User.register(_.merge(company1Employee1, {company: company1})),
          User.register(_.merge(company1Employee2, {company: company1})),
          User.register(_.merge(company1Employee3, {company: company1})),

          User.register(_.merge(company2Owner, {company: company2})),
          User.register(_.merge(company2Employee1, {company: company2})),
          User.register(_.merge(company2Employee2, {company: company2})),
          User.register(_.merge(company2Employee3, {company: company2})),
          User.register(_.merge(company2Employee4, {company: company2})),

          User.register(registered)
        ]);
      })
      .catch(function(err) {
        console.dir(err);
      })
      .done(function(){
        done();
      });
  });

});

after(function (done) {

  // here you can clear fixtures, etc.
  sails.lower(done);

});
我明白了。我明白了。