Skip to content

Commit 0b22192

Browse files
luisvargastijeluisvt
authored andcommitted
Upgrade libraries and use docker-compose
1 parent ad8ffb5 commit 0b22192

10 files changed

+112
-151
lines changed

.travis.yml

+8-19
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
1-
language: dart
2-
dart:
3-
- stable
4-
- dev
1+
sudo: required
2+
install:
3+
- curl -sSL https://get.docker.com/ | sudo sh
4+
- sudo pip install docker-compose
55
script:
6-
- pub global activate dart_coveralls
7-
- pub run test/mongodb_integration_test.dart
8-
- pub run test/mysql_integration_test.dart
9-
- pub run test/postgres_integration_test.dart
10-
- dart_coveralls calc test/test.dart
11-
- dart_coveralls report --exclude-test-files --token=$COVERALLS_TOKEN test/test.dart
12-
before_script:
13-
- psql -c 'create database dart_orm;' -U postgres
14-
services:
15-
- mongodb
16-
env:
17-
global:
18-
- MYSQL_USER=root
19-
- PSQL_USER=postgres
20-
- PSQL_DB=dart_orm
6+
- docker-compose build
7+
- docker-compose up -d mysql mongo postgres
8+
- sleep 2m
9+
- docker-compose run --rm test

docker-compose.yaml

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
version: '3.0'
2+
services:
3+
mongo:
4+
image: mongo
5+
ports:
6+
- 27000:27017
7+
environment:
8+
# - MONGO_INITDB_ROOT_USERNAME="dart_orm_test"
9+
# - MONGO_INITDB_ROOT_PASSWORD="dart_orm_test"
10+
- MONGO_INITDB_DATABASE="dart_orm_test"
11+
postgres:
12+
image: postgres
13+
ports:
14+
- 5000:5432
15+
environment:
16+
- POSTGRES_PASSWORD=dart_orm_test
17+
- POSTGRES_USER=dart_orm_test
18+
- POSTGRES_DB=dart_orm_test
19+
mysql:
20+
image: mysql:5.7
21+
ports:
22+
- 3000:3306
23+
environment:
24+
- MYSQL_RANDOM_ROOT_PASSWORD=true
25+
- MYSQL_DATABASE=dart_orm_test
26+
- MYSQL_USER=dart_orm_test
27+
- MYSQL_PASSWORD=dart_orm_test
28+
test:
29+
image: google/dart:dev
30+
command: bash -c "pub get && pub run test"
31+
working_dir: /project
32+
volumes:
33+
- .:/project
34+
- ~/.pub-cache:/root/.pub-cache
35+
depends_on:
36+
- mongo
37+
- postgres
38+
- mysql
39+
environment:
40+
- USE_DOCKER=true

lib/src/operations.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class Join {
117117
Join(this.joinType, this.tableName, this.tableAlias, this.joinCondition);
118118
}
119119

120-
class Select extends SQL {
120+
class Select {
121121
final Map<String, String> sorts = new Map<String, String>();
122122
final List<Join> joins = new List<Join>();
123123

pubspec.yaml

+18-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ author: Ustimenko Sergey <[email protected]>
66
homepage: https://github.com/ustims/DartORM
77
dev_dependencies:
88
test: '^0.12.5'
9-
dart_orm_adapter_postgresql: '^0.1.0'
10-
dart_orm_adapter_mongodb: '^0.1.3'
11-
dart_orm_adapter_mysql: '^0.1.4'
9+
# dart_orm_adapter_postgresql: '^0.1.0'
10+
dart_orm_adapter_postgresql:
11+
# path: ../DartORM-PostgreSQL
12+
git:
13+
url: https://github.com/DartOrm/DartORM-PostgreSQL
14+
ref: upgrade-libraries
15+
# dart_orm_adapter_mongodb: '^0.1.3'
16+
dart_orm_adapter_mongodb:
17+
# path: ../DartORM-MongoDB
18+
git:
19+
url: https://github.com/DartOrm/DartORM-MongoDB
20+
ref: upgrade-libraries
21+
# dart_orm_adapter_mysql: '^0.1.4'
22+
dart_orm_adapter_mysql:
23+
# path: ../DartORM-MySQL
24+
git:
25+
url: https://github.com/DartOrm/DartORM-MySQL
26+
ref: upgrade-libraries

test/integration/test_basic_integration.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ Future dateTimeTestCase() async {
125125

126126
User futureUser = new User()
127127
..givenName = 'Bilbo'
128-
..created = new DateTime(2500, DateTime.JANUARY, 1, 12, 12, 12);
128+
..created = new DateTime(2500, DateTime.january, 1, 12, 12, 12);
129129
await futureUser.save();
130130

131131
// TODO: timezones need to be tested.

test/integration/test_lists.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
library dart_orm.test_basic_integration;
1+
library dart_orm.test_lists;
22

33
import 'dart:async';
44

test/mongodb_integration_test.dart

+15-39
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,31 @@
11
library dart_orm.mongodb_integration_test;
22

3+
import 'dart:io';
4+
35
import 'package:dart_orm_adapter_mongodb/dart_orm_adapter_mongodb.dart';
46
import 'package:logging/logging.dart';
7+
import 'package:mongo_dart/mongo_dart.dart';
58
import 'package:test/test.dart';
69

7-
import 'test_util.dart';
810
import 'integration/test_integration.dart';
911

1012
const String dbUserName = 'dart_orm_test';
1113
const String dbName = 'dart_orm_test';
1214

13-
void setupDBs() {
15+
void setupDBs(String dbString) async {
1416
// mongodb teardown
15-
run('mongo', [
16-
'$dbName',
17-
'--eval',
18-
"""
19-
db.runCommand( { dropAllUsersFromDatabase: 1, writeConcern: { w: "majority" } } );
20-
db.dropDatabase();
21-
"""
22-
]);
23-
24-
log.info('---- MongoDB Setup -----');
25-
// mongodb setup
26-
run('mongo', [
27-
'$dbName',
28-
'--eval',
29-
"""
30-
if (db.version().toString().indexOf('2.4') > -1) {
31-
db.addUser(
32-
{
33-
user: "$dbUserName",
34-
pwd: "$dbUserName",
35-
roles: ["readWrite"]
36-
}
37-
);
38-
} else {
39-
db.createUser(
40-
{
41-
user: "$dbUserName",
42-
pwd: "$dbUserName",
43-
roles: [{role: "userAdmin", db: "$dbName"}]
44-
}
45-
);
46-
}
47-
"""
48-
]);
17+
var db = new Db('mongodb://$dbString/dart_orm_test');
18+
await db.open();
19+
await db.drop();
20+
await db.close();
4921
}
5022

5123
void main() {
52-
setUpAll(() {
24+
var useDocker = Platform.environment['USE_DOCKER'] == 'true';
25+
26+
var dbString = useDocker ? 'mongo:27017': 'localhost:27000';
27+
28+
setUpAll(() async {
5329
Logger.root.level = Level.FINEST;
5430
Logger.root.onRecord.listen((LogRecord rec) {
5531
if (rec.loggerName.contains('DartORM')) {
@@ -58,11 +34,11 @@ void main() {
5834
}
5935
});
6036

61-
setupDBs();
37+
await setupDBs(dbString);
6238
});
6339

6440
MongoDBAdapter mongoAdapter = new MongoDBAdapter(
65-
'mongodb://dart_orm_test:[email protected]/dart_orm_test');
41+
'mongodb://$dbString/dart_orm_test');
6642

6743
registerTestsForAdapter('mongodb', mongoAdapter);
6844

test/mysql_integration_test.dart

+16-22
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,33 @@ import 'dart:io';
44

55
import 'package:dart_orm_adapter_mysql/dart_orm_adapter_mysql.dart';
66
import 'package:logging/logging.dart';
7+
import 'package:sqljocky5/sqljocky.dart';
78
import 'package:test/test.dart';
89

9-
import 'test_util.dart';
1010
import 'integration/test_integration.dart';
1111

1212
const String dbUserName = 'dart_orm_test';
1313
const String dbName = 'dart_orm_test';
1414

15-
void setupMySql(mysqlUser) {
16-
void runMySql(String command) {
17-
run('mysql', ['-e', command, '-v', '-u', mysqlUser]);
18-
}
19-
20-
log.info('---- MySQL Teardown -----');
21-
runMySql('DROP DATABASE $dbName;');
22-
runMySql('DROP USER \'$dbUserName\'@\'localhost\';');
15+
void setupMySql(String dbString) async {
16+
var dbStringParts = dbString.split(':');
17+
var pool = new ConnectionPool(
18+
host: dbStringParts[0], port: int.parse(dbStringParts[1]),
19+
user: 'dart_orm_test', password: 'dart_orm_test',
20+
db: 'dart_orm_test', max: 5);
2321

24-
log.info('---- MySQL Setup -----');
25-
runMySql('CREATE DATABASE $dbName;');
26-
runMySql(
27-
'CREATE USER \'$dbUserName\'@\'localhost\' IDENTIFIED BY \'$dbUserName\';');
28-
runMySql('GRANT ALL ON $dbName.* TO \'$dbUserName\'@\'localhost\';');
29-
runMySql('FLUSH PRIVILEGES;');
22+
var rows = await pool.query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'dart_orm_test'");
23+
await for(var row in rows) {
24+
await pool.query('DROP TABLE IF EXISTS ${row[0]} CASCADE');
25+
}
3026
}
3127

3228
void main() {
33-
setUpAll(() {
34-
String MYSQL_USER = Platform.environment['MYSQL_USER'];
29+
var useDocker = Platform.environment['USE_DOCKER'] == 'true';
3530

36-
if (MYSQL_USER == null || MYSQL_USER.isEmpty) {
37-
throw 'MYSQL_USER must be set in the environment';
38-
}
31+
var dbString = useDocker ? 'mysql:3306': 'localhost:3000';
3932

33+
setUpAll(() async {
4034
Logger.root.level = Level.FINEST;
4135
Logger.root.onRecord.listen((LogRecord rec) {
4236
if (rec.loggerName.contains('DartORM')) {
@@ -45,11 +39,11 @@ void main() {
4539
}
4640
});
4741

48-
setupMySql(MYSQL_USER);
42+
await setupMySql(dbString);
4943
});
5044

5145
MySQLDBAdapter mysqlAdapter = new MySQLDBAdapter(
52-
'mysql://dart_orm_test:dart_orm_test@localhost:3306/dart_orm_test');
46+
'mysql://dart_orm_test:dart_orm_test@$dbString/dart_orm_test');
5347

5448
registerTestsForAdapter('mysql', mysqlAdapter);
5549

test/postgres_integration_test.dart

+12-47
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,29 @@
11
library dart_orm.postgres_integration_test;
22

3+
import 'dart:async';
34
import 'dart:io';
45

56
import 'package:dart_orm_adapter_postgresql/dart_orm_adapter_postgresql.dart';
67
import 'package:logging/logging.dart';
8+
import 'package:postgresql/postgresql.dart';
79
import 'package:test/test.dart';
810

9-
import 'test_util.dart';
1011
import 'integration/test_integration.dart';
1112

12-
void setupDBs(psql_user, psql_db) {
13-
if (psql_user.length < 1 || psql_db.length < 1) {
14-
throw new Exception(
15-
'PSQL_USER, PSQL_DB environment variables should be provided.');
13+
Future setupDBs(String dbString) async {
14+
var connection = await connect("postgres://dart_orm_test:dart_orm_test@$dbString/dart_orm_test");
15+
var rows = connection.query("select tablename from pg_tables WHERE schemaname = 'public'");
16+
await for (var row in rows) {
17+
await connection.execute('drop table if exists ${row[0]} cascade');
1618
}
17-
18-
String dbUserName = 'dart_orm_test';
19-
String dbName = 'dart_orm_test';
20-
21-
// psql teardown
22-
run('psql', ['-c', 'DROP DATABASE $dbName;', '-U', psql_user, psql_db]);
23-
run('psql', ['-c', 'DROP ROLE $dbUserName;', '-U', psql_user, psql_db]);
24-
25-
// psql setup
26-
log.info('---- PSQL Setup -----');
27-
run('psql', ['-c', 'CREATE DATABASE $dbName;', '-U', psql_user, psql_db]);
28-
run('psql', [
29-
'-c',
30-
'CREATE ROLE $dbUserName WITH PASSWORD \'$dbUserName\' LOGIN;',
31-
'-U',
32-
psql_user,
33-
psql_db
34-
]);
35-
run('psql', [
36-
'-c',
37-
'GRANT ALL PRIVILEGES ON DATABASE $dbName TO $dbUserName;',
38-
'-U',
39-
psql_user,
40-
psql_db
41-
]);
4219
}
4320

4421
void main() {
45-
setUpAll(() {
46-
String PSQL_USER = '';
47-
String PSQL_DB = '';
22+
var useDocker = Platform.environment['USE_DOCKER'] == 'true';
4823

49-
try {
50-
for (String varName in Platform.environment.keys) {
51-
if (varName == 'PSQL_USER') {
52-
PSQL_USER = Platform.environment[varName];
53-
}
54-
if (varName == 'PSQL_DB') {
55-
PSQL_DB = Platform.environment[varName];
56-
}
57-
}
58-
} catch (e) {
59-
log.shout(e);
60-
}
24+
var dbString = useDocker ? 'postgres:5432': 'localhost:5000';
6125

26+
setUpAll(() async {
6227
Logger.root.level = Level.FINEST;
6328
Logger.root.onRecord.listen((LogRecord rec) {
6429
if (rec.loggerName.contains('DartORM')) {
@@ -67,11 +32,11 @@ void main() {
6732
}
6833
});
6934

70-
setupDBs(PSQL_USER, PSQL_DB);
35+
await setupDBs(dbString);
7136
});
7237

7338
PostgresqlDBAdapter postgresqlAdapter = new PostgresqlDBAdapter(
74-
'postgres://dart_orm_test:dart_orm_test@localhost:5432/dart_orm_test');
39+
'postgres://dart_orm_test:dart_orm_test@$dbString/dart_orm_test');
7540

7641
registerTestsForAdapter('postgresql', postgresqlAdapter);
7742

test/test_util.dart

-18
This file was deleted.

0 commit comments

Comments
 (0)