Skip to content

Commit

Permalink
Add test
Browse files Browse the repository at this point in the history
  • Loading branch information
welefen committed Aug 7, 2017
1 parent b783995 commit 1875501
Show file tree
Hide file tree
Showing 2 changed files with 249 additions and 1 deletion.
15 changes: 15 additions & 0 deletions test/lib/query.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,27 @@
const ava = require('ava');
const helper = require('think-helper');
const Base = require('../../lib/query');
const Parser = require('../../lib/parser');

ava.test('socket is function', t => {
const instance = new Base();
t.true(helper.isFunction(instance.socket));
});

ava.test('parser is getter', t => {
const instance = new Base();
const parser = instance.parser;
t.true(parser instanceof Parser, true);
});

ava.test('parser is getter 2', t => {
const instance = new Base();
const parser = instance.parser;
const parser2 = instance.parser;
t.true(parser instanceof Parser, true);
t.true(parser === parser2, true);
});

ava.test('query', async t => {
t.plan(2);

Expand Down
235 changes: 234 additions & 1 deletion test/lib/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,48 @@ test('schema parser and query object', t => {
t.true(schema.parser instanceof Parser);
});

test('parser is getter', t => {
const instance = new Schema();
const parser = instance.parser;
t.true(parser instanceof Parser, true);
});

test('parser is getter 2', t => {
const instance = new Schema();
const parser = instance.parser;
const parser2 = instance.parser;
t.true(parser instanceof Parser, true);
t.true(parser === parser2, true);
});

test('query is getter', t => {
const instance = new Schema();
const parser = instance.query;
t.true(parser instanceof Query, true);
});

test('query is getter 2', t => {
const instance = new Schema();
const parser = instance.query;
const parser2 = instance.query;
t.true(parser instanceof Query, true);
t.true(parser === parser2, true);
});

test('schema get empty schema', async t => {
const schema = new Schema({});
const result = await schema.getSchema();
t.deepEqual(result, {});
});

test('schema get empty schema 2', async t => {
const schema = new Schema({});
const result = await schema.getSchema();
const result2 = await schema.getSchema();
t.deepEqual(result, {});
t.is(result, result2);
});

test('schema get normal schema', async t => {
const schema = new Schema({}, {});
const tableFields = [
Expand Down Expand Up @@ -44,7 +80,7 @@ test('schema get normal schema', async t => {
}
});

const result = await schema.getSchema('post');
const result = await schema.getSchema('post1');
t.deepEqual(result, {
id: {
name: 'id',
Expand Down Expand Up @@ -77,6 +113,202 @@ test('schema get normal schema', async t => {
});
});

test('schema get normal schema 2', async t => {
const schema = new Schema({}, {
title: {
default: 'title'
}
}, 'test');
const tableFields = [
{
Field: 'id',
Type: 'int(10) unsigned',
Null: 'NO',
Key: 'PRI',
Default: null,
Extra: 'auto_increment'
},
{
Field: 'title',
Type: 'varchar(255)',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
}
];

Object.defineProperty(schema, 'query', {
value: {
query: sql => Promise.resolve(tableFields)
}
});

const result = await schema.getSchema('post2');
t.deepEqual(result, {
id: {
name: 'id',
type: 'int(10)',
required: false,
default: '',
primary: true,
unique: false,
autoIncrement: true,
tinyType: 'int',
unsigned: true,
validate: {
int: {
min: 0,
max: 2147483647
}
}
},
title: {
name: 'title',
type: 'varchar(255)',
required: false,
default: 'title',
primary: false,
unique: false,
autoIncrement: false,
tinyType: 'varchar',
validate: {}
}
});
});

test('schema get normal schema 3', async t => {
const schema = new Schema({}, {
title: {
default: 'title'
}
}, 'test');
const tableFields = [
{
Field: 'id',
Type: 'int(10) unsigned',
Null: 'NO',
Key: 'PRI',
Default: '111',
Extra: 'auto_increment'
},
{
Field: 'title',
Type: 'varchar(255)',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
}
];

Object.defineProperty(schema, 'query', {
value: {
query: sql => Promise.resolve(tableFields)
}
});

const result = await schema.getSchema('post3');
t.deepEqual(result, {
id: {
name: 'id',
type: 'int(10)',
required: false,
default: 111,
primary: true,
unique: false,
autoIncrement: true,
tinyType: 'int',
unsigned: true,
validate: {
int: {
min: 0,
max: 2147483647
}
}
},
title: {
name: 'title',
type: 'varchar(255)',
required: false,
default: 'title',
primary: false,
unique: false,
autoIncrement: false,
tinyType: 'varchar',
validate: {}
}
});
});
test('schema get normal schema 4', async t => {
const schema = new Schema({}, {
id: {
validate: {
int: {min: 0, max: 1}
}
},
title: {
default: 'title'
}
}, 'test');
const tableFields = [
{
Field: 'id',
Type: 'int(10) unsigned',
Null: 'NO',
Key: 'PRI',
Default: '111',
Extra: 'auto_increment'
},
{
Field: 'title',
Type: 'varchar(255)',
Null: 'NO',
Key: '',
Default: null,
Extra: ''
}
];

Object.defineProperty(schema, 'query', {
value: {
query: sql => Promise.resolve(tableFields)
}
});

const result = await schema.getSchema('post4');
t.deepEqual(result, {
id: {
name: 'id',
type: 'int(10)',
required: false,
default: 111,
primary: true,
unique: false,
autoIncrement: true,
tinyType: 'int',
unsigned: true,
validate: {
int: {
min: 0,
max: 1
}
}
},
title: {
name: 'title',
type: 'varchar(255)',
required: false,
default: 'title',
primary: false,
unique: false,
autoIncrement: false,
tinyType: 'varchar',
validate: {}
}
});
});

test('schema parse type', t => {
const schema = new Schema({});
t.is(schema.parseType('enum', '1'), '1');
Expand All @@ -88,4 +320,5 @@ test('schema parse type', t => {
t.is(schema.parseType('decimal', '3.3'), 3.3);
t.is(schema.parseType('bool', '0'), 1);
t.is(schema.parseType('bool', ''), 0);
t.is(schema.parseType('xxx', 'aaa'), 'aaa');
});

0 comments on commit 1875501

Please sign in to comment.