UNPKG

blow-data

Version:
107 lines (91 loc) 2.72 kB
/// <reference path="../typings/tsd.d.ts" /> 'use strict' import * as chai from 'chai'; import * as helpers from './helpers'; import {ModelMetadata} from '../src/ModelMetadata'; import {BaseModel} from '../src/BaseModel'; import * as models from './fixtures/models'; import {manager} from '../src/manager'; const expect = chai.expect; describe('BaseModel', () => { before(done => { manager.init().subscribe(() => { done(); }, err => console.log(err)); }) helpers.checkClassExport(BaseModel); describe('assign data', () => { it('via constructor', () => { const book = new models.Book({ title: 'Book title', price: '10' }); expect(book.title).to.be.equal('Book title'); expect(book.price).to.be.equal(10); expect(book.available).to.be.equal(true); }); it('via setters', () => { const book = new models.Book(); book.title = 'Title'; book.price = 20; book.available = false; expect(book.title).to.be.equal('Title'); expect(book.price).to.be.equal(20); expect(book.available).to.be.equal(false); }); }); describe('validators', () => { afterEach(done => { models.Book.destroy().subscribe(() => done()); }); it('decorators', done => { const book = new models.Book({title: 'title', price: 5, no: 1}); book.validate() .mergeMap(result => { expect(result.isValid).to.be.true; return book.save(); }) .mergeMap(() => { const book = new models.Book({title: 'title 1', price: 1, no: 1}); return book.validate(); }) .subscribe(result => { expect(result['errors'][0].property).to.be.equal('no'); expect(result['errors'][0].type).to.be.equal('custom'); done(); }); }); }); it('.toJSON(), .inspect()', () => { const book = new models.Book({ title: 'Book title', promo: true }); const author = new models.Author({ id: 'authorId' }); (<any>book).author(author); expect(book.toJSON()).to.be.deep.equal({ title: 'Book title', available: true, authorId: 'authorId', promo: true }); expect(book.toSafeJSON()).to.be.deep.equal({ title: 'Book title', available: true, authorId: 'authorId' }); expect(book.toJSON()).to.be.deep.equal(book.inspect()); }); it('embeded models', () => { const book = new models.Book({ title: 'Book title', edition: { no: '10' } }); expect(book.edition).to.be.instanceof(models.Edition); expect(book.edition.no).to.be.equal(10); }); });