@@ -4,13 +4,15 @@ import 'mocha'; // tslint:disable-line:no-import-side-effect
4
4
import factory from '../factory' ;
5
5
import RepoFacade from '../RepoFacade' ;
6
6
import FailingMigrationError from '../utils/errors/FailingMigrationError' ;
7
+ import LockedMigrationsError from '../utils/errors/LockedMigrationsError' ;
7
8
import MissingMigrationError from '../utils/errors/MissingMigrationError' ;
8
9
import ProcessedMigrationError from '../utils/errors/ProcessedMigrationError' ;
9
10
import createMigrationProcess from '../utils/tests/createMigrationProcess' ;
10
11
import createTestUpMigration from '../utils/tests/createTestUpMigration' ;
11
12
import MigrationDictionary from '../utils/types/MigrationDictionary' ;
12
13
13
14
export default ( repo : RepoFacade ) => {
15
+ const successfulMigration = createTestUpMigration ( ) ;
14
16
const failingMigration = createTestUpMigration ( ( ) => { throw new Error ( ) ; } ) ;
15
17
16
18
const createService = ( migrations : MigrationDictionary ) => {
@@ -54,5 +56,14 @@ export default (repo: RepoFacade) => {
54
56
await service . migrateByKey ( { key : 'testMigration' , force : true } ) ;
55
57
assert . equal ( getProcessed ( ) , true ) ;
56
58
} ) ;
59
+
60
+ it ( 'should error when migrations are locked' , async ( ) => {
61
+ const service = createService ( { successfulMigration } ) ;
62
+ const promise = Promise . all ( [
63
+ service . migrateByKey ( { key : 'successfulMigration' } ) ,
64
+ service . migrateByKey ( { key : 'successfulMigration' } ) ,
65
+ ] ) ;
66
+ await assertRejects ( promise , LockedMigrationsError ) ;
67
+ } ) ;
57
68
} ) ;
58
69
} ;
0 commit comments