Skip to content

Commit 49bb7cc

Browse files
author
Mike Eldridge
committed
#10 - move co into mocha.start.js and tidy up the transaction tests
1 parent 4622d8b commit 49bb7cc

File tree

4 files changed

+52
-136
lines changed

4 files changed

+52
-136
lines changed

mocha.start.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ var globals = module.exports = {
3838
}],
3939
TYPES_EXCEPT_FUNCTION: ['string', 123, 123.123, null, undefined, {}, [], true, false],
4040
assert: assert,
41-
adapter: undefined
41+
adapter: undefined,
42+
co: require('co')
4243
};
4344

4445
var test = new mocha();

test/create_trx.spec.js

Lines changed: 20 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,40 @@
11
describe('DSSqlAdapter#create + transaction', function () {
22
it('commit should persist created user in a sql db', function* () {
33
var id;
4-
var co = require('co');
54

65
yield adapter.query.transaction(co.wrap(function * (trx) {
76
var createUser = yield adapter.create(User, {name: 'Jane'}, {transaction: trx});
87
id = createUser.id;
98
assert.equal(createUser.name, 'Jane');
109
assert.isDefined(createUser.id);
10+
}));
1111

12-
var findUser = yield adapter.find(User, createUser.id, {transaction: trx});
13-
assert.equal(findUser.name, 'Jane');
14-
assert.isDefined(findUser.id);
15-
assert.equalObjects(findUser, {id: id, name: 'Jane', age: null, profileId: null});
16-
17-
return findUser;
18-
})).then(
19-
function (user) {
20-
assert.isObject(user, 'transaction returned user object');
21-
assert.equal(user.name, 'Jane');
22-
assert.isDefined(user.id);
23-
assert.equalObjects(user, {id: id, name: 'Jane', age: null, profileId: null});
24-
},
25-
function (err) {
26-
throw new Error('transaction threw exception!');
27-
}
28-
);
29-
30-
try {
31-
var findUser2 = yield adapter.find(User, id);
32-
assert.isObject(findUser2, 'user committed to database');
33-
} catch(err) {
34-
throw new Error('transaction failed to commit!');
35-
}
12+
var findUser = yield adapter.find(User, id);
13+
assert.isObject(findUser, 'user committed to database');
14+
assert.equal(findUser.name, 'Jane');
15+
assert.isDefined(findUser.id);
16+
assert.equalObjects(findUser, {id: id, name: 'Jane', age: null, profileId: null});
3617
});
3718

3819
it('rollback should not persist created user in a sql db', function* () {
3920
var id;
40-
var co = require('co');
41-
42-
yield adapter.query.transaction(co.wrap(function * (trx) {
43-
var createUser = yield adapter.create(User, {name: 'John'}, {transaction: trx});
44-
id = createUser.id;
45-
assert.equal(createUser.name, 'John');
46-
assert.isDefined(createUser.id);
4721

48-
var findUser = yield adapter.find(User, createUser.id, {transaction: trx});
49-
assert.equal(findUser.name, 'John');
50-
assert.isDefined(findUser.id);
51-
assert.equalObjects(findUser, {id: id, name: 'John', age: null, profileId: null});
52-
53-
throw new Error('rollback');
54-
})).then(
55-
function () { throw new Error('transaction did not throw exception!') },
56-
function (err) { assert.equal(err.message, 'rollback') }
57-
);
22+
try {
23+
yield adapter.query.transaction(co.wrap(function * (trx) {
24+
var createUser = yield adapter.create(User, {name: 'John'}, {transaction: trx});
25+
id = createUser.id;
26+
assert.equal(createUser.name, 'John');
27+
assert.isDefined(createUser.id);
28+
29+
throw new Error('rollback');
30+
}));
31+
} catch (err) {
32+
assert.equal(err.message, 'rollback');
33+
}
5834

5935
try {
60-
var findUser2 = yield adapter.find(User, id);
61-
throw new Error('transaction failed to roll back!');
36+
var findUser = yield adapter.find(User, id);
37+
throw new Error('user committed to database');
6238
} catch(err) {
6339
assert.equal(err.message, 'Not Found!');
6440
}

test/destroy_trx.spec.js

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
describe('DSSqlAdapter#destroy + transaction', function () {
22
it('commit should destroy a user from a Sql db', function* () {
3-
var co = require('co');
4-
53
var createUser = yield adapter.create(User, {name: 'John'})
64
var id = createUser.id;
75

86
yield adapter.query.transaction(co.wrap(function * (trx) {
9-
var destroyUser = yield adapter.destroy(User, createUser.id, {transaction: trx});
10-
assert.isFalse(!!destroyUser);
7+
return adapter.destroy(User, id, {transaction: trx});
118
}));
129

1310
try {
@@ -19,30 +16,20 @@ describe('DSSqlAdapter#destroy + transaction', function () {
1916
});
2017

2118
it('rollback should not destroy a user from a Sql db', function* () {
22-
var co = require('co');
23-
2419
var createUser = yield adapter.create(User, {name: 'John'})
2520
var id = createUser.id;
2621

27-
yield adapter.query.transaction(co.wrap(function * (trx) {
28-
var destroyUser = yield adapter.destroy(User, createUser.id, {transaction: trx});
29-
assert.isFalse(!!destroyUser);
30-
31-
throw new Error('rollback');
32-
})).then(
33-
function () { throw new Error('transaction did not throw exception!') },
34-
function (err) { assert.equal(err.message, 'rollback') }
35-
);
36-
3722
try {
38-
var findUser = yield adapter.find(User, id);
39-
assert.isObject(findUser, 'user still exists');
23+
yield adapter.query.transaction(co.wrap(function * (trx) {
24+
yield adapter.destroy(User, createUser.id, {transaction: trx});
25+
26+
throw new Error('rollback');
27+
}));
4028
} catch (err) {
41-
if (err.message == 'Not Found!') {
42-
throw new Error('transaction did not roll back');
43-
} else {
44-
throw new Error('caught exception trying to locate user');
45-
}
29+
assert.equal(err.message, 'rollback');
4630
}
31+
32+
var findUser = yield adapter.find(User, id);
33+
assert.isObject(findUser, 'user still exists');
4734
});
4835
});

test/update_trx.spec.js

Lines changed: 20 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,45 @@
11
describe('DSSqlAdapter#update + transaction', function () {
22
it('commit should update a user in a Sql db', function* () {
3-
var co = require('co');
4-
53
var user = yield adapter.create(User, {name: 'John'})
64
var id = user.id;
75
assert.equal(user.name, 'John');
86
assert.isDefined(user.id);
97

10-
var foundUser = yield adapter.find(User, user.id);
11-
assert.equal(foundUser.name, 'John');
12-
assert.isDefined(foundUser.id);
13-
assert.equalObjects(foundUser, {id: id, name: 'John', age: null, profileId: null});
14-
158
yield adapter.query.transaction(co.wrap(function * (trx) {
16-
var updatedUser = yield adapter.update(User, foundUser.id, {name: 'Johnny'}, {transaction: trx});
9+
var updatedUser = yield adapter.update(User, id, {name: 'Johnny'}, {transaction: trx});
1710
assert.equal(updatedUser.name, 'Johnny');
1811
assert.isDefined(updatedUser.id);
1912
assert.equalObjects(updatedUser, {id: id, name: 'Johnny', age: null, profileId: null});
13+
}));
2014

21-
var foundUser2 = yield adapter.find(User, updatedUser.id, {transaction: trx});
22-
assert.equal(foundUser2.name, 'Johnny');
23-
assert.isDefined(foundUser2.id);
24-
assert.equalObjects(foundUser2, {id: id, name: 'Johnny', age: null, profileId: null});
25-
26-
return foundUser2;
27-
})).then(
28-
function (user) { assert.isObject(user, 'transaction returned user object') },
29-
function (err) { throw new Error('transaction threw exception!') }
30-
);
31-
32-
var foundUser3 = yield adapter.find(User, user.id);
33-
assert.equal(foundUser3.name, 'Johnny');
34-
assert.isDefined(foundUser3.id);
35-
assert.equalObjects(foundUser3, {id: id, name: 'Johnny', age: null, profileId: null});
36-
37-
var destroyUser = yield adapter.destroy(User, foundUser3.id);
38-
assert.isFalse(!!destroyUser);
39-
40-
try {
41-
yield adapter.find(User, id);
42-
throw new Error('Should not have reached here!');
43-
} catch (err) {
44-
assert.equal(err.message, 'Not Found!');
45-
}
15+
var foundUser = yield adapter.find(User, id);
16+
assert.equal(foundUser.name, 'Johnny');
17+
assert.isDefined(foundUser.id);
18+
assert.equalObjects(foundUser, {id: id, name: 'Johnny', age: null, profileId: null});
4619
});
4720

4821
it('rollback should not update a user in a Sql db', function* () {
49-
var co = require('co');
50-
5122
var user = yield adapter.create(User, {name: 'John'})
5223
var id = user.id;
5324
assert.equal(user.name, 'John');
5425
assert.isDefined(user.id);
5526

56-
var foundUser = yield adapter.find(User, user.id);
57-
assert.equal(foundUser.name, 'John');
58-
assert.isDefined(foundUser.id);
59-
assert.equalObjects(foundUser, {id: id, name: 'John', age: null, profileId: null});
60-
61-
yield adapter.query.transaction(co.wrap(function * (trx) {
62-
var updatedUser = yield adapter.update(User, foundUser.id, {name: 'Johnny'}, {transaction: trx});
63-
assert.equal(updatedUser.name, 'Johnny');
64-
assert.isDefined(updatedUser.id);
65-
assert.equalObjects(updatedUser, {id: id, name: 'Johnny', age: null, profileId: null});
66-
67-
var foundUser2 = yield adapter.find(User, updatedUser.id, {transaction: trx});
68-
assert.equal(foundUser2.name, 'Johnny');
69-
assert.isDefined(foundUser2.id);
70-
assert.equalObjects(foundUser2, {id: id, name: 'Johnny', age: null, profileId: null});
71-
72-
throw new Error('rollback');
73-
})).then(
74-
function () { throw new Error('transaction did not throw exception!') },
75-
function (err) { assert.equal(err.message, 'rollback') }
76-
);
77-
78-
var foundUser3 = yield adapter.find(User, user.id);
79-
assert.equal(foundUser3.name, 'John');
80-
assert.isDefined(foundUser3.id);
81-
assert.equalObjects(foundUser3, {id: id, name: 'John', age: null, profileId: null});
82-
83-
var destroyUser = yield adapter.destroy(User, foundUser3.id);
84-
assert.isFalse(!!destroyUser);
85-
8627
try {
87-
yield adapter.find(User, id);
88-
throw new Error('Should not have reached here!');
28+
yield adapter.query.transaction(co.wrap(function * (trx) {
29+
var updatedUser = yield adapter.update(User, id, {name: 'Johnny'}, {transaction: trx});
30+
assert.equal(updatedUser.name, 'Johnny');
31+
assert.isDefined(updatedUser.id);
32+
assert.equalObjects(updatedUser, {id: id, name: 'Johnny', age: null, profileId: null});
33+
34+
throw new Error('rollback');
35+
}));
8936
} catch (err) {
90-
assert.equal(err.message, 'Not Found!');
37+
assert.equal(err.message, 'rollback');
9138
}
39+
40+
var foundUser = yield adapter.find(User, id);
41+
assert.equal(foundUser.name, 'John');
42+
assert.isDefined(foundUser.id);
43+
assert.equalObjects(foundUser, {id: id, name: 'John', age: null, profileId: null});
9244
});
9345
});

0 commit comments

Comments
 (0)