waterline.initialize({ adapters: { wl_tests: Adapter }, datastores: connections, defaults: defaults }, function(err, ontology) {
      if(err) return done(err);

      // Migrations Helper
      WaterlineUtils.autoMigrations(defaults.migrate, ontology, function(err) {
        if (err) {
          return done(err);
        }

        UniqueModel = ontology.collections.unique;

        // Insert 3 Records
        var records = [];
        for(var i=0; i<3; i++) {
          records.push({name: 'testUnique' + i, email: 'email' + i, type: 'unique'});
        }

        UniqueModel.createEach(records, function(err, records) {
          if(err) return done(err);
          id0 = records[0].id;
          id1 = records[1].id;
          email0 = records[0].email.toString();
          done();
        }, {fetch: true});
      });
    });
 waterline.initialize({ adapters: { wl_tests: Adapter }, datastores: connections, defaults: defaults }, function(err, ontology) {
   if(err) return done(err);
   WaterlineUtils.autoMigrations(defaults.migrate, ontology, function(err) {
     if (err) {
       return done(err);
     }
     AutoIncModel = ontology.collections.autoinc;
     done();
   });
 });
 after(function(done) {
   if(!Adapter.hasOwnProperty('drop')) {
     waterline.teardown(done);
   } else {
     WaterlineUtils.autoMigrations('drop', waterline, function(err1) {
       waterline.teardown(function(err2) {
         return done(err1 || err2);
       });
     });
   }
 });
          wl.initialize(Migratable.WaterlineOptions, function(err, orm) {
            if (err) {
              return done(err);
            }

            // Run migrations
            waterlineUtils.autoMigrations('alter', orm, function(err) {
              if (err) {
                return done(err);
              }

              orm.collections.custom.count().exec(function(err, numOfPirates) {
                if (err) {
                  return done(err);
                }

                assert.strictEqual(numOfPirates, 1);

                return done();
              });
            });
          });
          wl.initialize(Migratable.WaterlineOptions, function(err, orm) {
            if (err) {
              return done(err);
            }

            // Run migrations
            waterlineUtils.autoMigrations('alter', orm, function(err) {
              if (err) {
                return done(err);
              }

              orm.collections.alter.find().exec(function(err, pirates) {
                if (err) {
                  return done(err);
                }

                assert.strictEqual(pirates.length, 1);
                assert.strictEqual(pirates[0].name, 'blackbeard\'s ghost');

                return done();
              });
            });
          });
  waterline.initialize({ adapters: { wl_tests: Adapter }, datastores: datastores, defaults: defaults }, function(err, orm) {
    if (err) {
      return done(err);
    }

    // Save a reference to the ORM
    ORM = orm;

    // Run migrations
    waterlineUtils.autoMigrations('alter', orm, function(err) {
      if (err) {
        return done(err);
      }

      // Globalize collections for normalization
      _.each(ORM.collections, function(collection, identity) {
        var globalName = identity.charAt(0).toUpperCase() + identity.slice(1);
        global.Queryable[globalName] = collection;
      });

      return done();
    });
  });
  waterline.initialize(wlOptions, function(err, orm) {
    if (err) {
      return done(err);
    }

    // Save a reference to the ORM
    ORM = orm;

    // Globalize collections for normalization
    _.each(ORM.collections, function(collection, identity) {
      var globalName = identity.charAt(0).toUpperCase() + identity.slice(1);
      global.Migratable[globalName] = collection;
    });

    // Run migrations
    waterlineUtils.autoMigrations('alter', orm, function(err) {
      if (err) {
        return done(err);
      }

      return done();
    });
  });