@typetron/framework 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -6
- package/.eslintrc-old.js +0 -208
- package/Cache/Cache.ts +0 -13
- package/Cache/Stores/DatabaseStore.ts +0 -120
- package/Cache/Stores/FileStore.ts +0 -69
- package/Cache/Stores/MemoryStore.ts +0 -71
- package/Cache/index.ts +0 -5
- package/Cache/types.ts +0 -4
- package/Container/ClassResolver.ts +0 -106
- package/Container/Container.ts +0 -144
- package/Container/Contracts.ts +0 -3
- package/Container/Decorators.ts +0 -20
- package/Container/Metadata.ts +0 -16
- package/Container/Resolver.ts +0 -27
- package/Container/index.ts +0 -5
- package/Database/Clauses/Where.ts +0 -0
- package/Database/Connection.ts +0 -52
- package/Database/Decorators.ts +0 -142
- package/Database/Drivers/DatabaseDriver.ts +0 -37
- package/Database/Drivers/MySQL/Alter/index.ts +0 -55
- package/Database/Drivers/MySQL/ColumnDefinition.ts +0 -16
- package/Database/Drivers/MySQL/Create.ts +0 -47
- package/Database/Drivers/MySQL/MysqlDriver.ts +0 -123
- package/Database/Drivers/MySQL/Schema.ts +0 -82
- package/Database/Drivers/MySQL/index.ts +0 -13
- package/Database/Drivers/SQL/Schema.ts +0 -73
- package/Database/Drivers/SQL/Statements/Alter.ts +0 -22
- package/Database/Drivers/SQL/Statements/BaseStatement.ts +0 -55
- package/Database/Drivers/SQL/Statements/Delete.ts +0 -20
- package/Database/Drivers/SQL/Statements/Insert.ts +0 -24
- package/Database/Drivers/SQL/Statements/Select.ts +0 -55
- package/Database/Drivers/SQL/Statements/Update.ts +0 -33
- package/Database/Drivers/SQL/index.ts +0 -8
- package/Database/Drivers/SQLite/Create.ts +0 -45
- package/Database/Drivers/SQLite/Schema.ts +0 -54
- package/Database/Drivers/SQLite/SqliteDriver.ts +0 -144
- package/Database/Drivers/SQLite/index.ts +0 -15
- package/Database/Drivers/SchemaContract.ts +0 -11
- package/Database/Drivers/Statement.ts +0 -16
- package/Database/Drivers/index.ts +0 -4
- package/Database/Entity.ts +0 -377
- package/Database/EntityNotFoundError.ts +0 -5
- package/Database/EntityProxyHandler.ts +0 -43
- package/Database/EntityQuery.ts +0 -197
- package/Database/Expression.ts +0 -3
- package/Database/Fields.ts +0 -816
- package/Database/Helpers.ts +0 -12
- package/Database/List.ts +0 -71
- package/Database/Migrations/Migration.ts +0 -10
- package/Database/Migrations/MigrationHistory.ts +0 -20
- package/Database/Migrations/Migrator.ts +0 -122
- package/Database/Migrations/index.ts +0 -3
- package/Database/ORM/BaseRelationship.ts +0 -10
- package/Database/Query.ts +0 -374
- package/Database/Seeders/Seeder.ts +0 -3
- package/Database/Seeders/SeederManager.ts +0 -27
- package/Database/Seeders/index.ts +0 -2
- package/Database/StringExpression.ts +0 -9
- package/Database/Types.ts +0 -165
- package/Database/index.ts +0 -23
- package/Encryption/index.ts +0 -51
- package/Forms/Decorators.ts +0 -29
- package/Forms/Form.ts +0 -70
- package/Forms/FormFields.ts +0 -36
- package/Forms/index.ts +0 -3
- package/Framework/App.ts +0 -10
- package/Framework/Application.ts +0 -118
- package/Framework/Auth/Auth.ts +0 -122
- package/Framework/Auth/Authenticatable.ts +0 -9
- package/Framework/Auth/User.ts +0 -27
- package/Framework/Auth/index.ts +0 -29
- package/Framework/Config/AppConfig.ts +0 -25
- package/Framework/Config/AuthConfig.ts +0 -9
- package/Framework/Config/BaseConfig.ts +0 -9
- package/Framework/Config/CacheConfig.ts +0 -38
- package/Framework/Config/DatabaseConfig.ts +0 -21
- package/Framework/Config/MailConfig.ts +0 -30
- package/Framework/Config/index.ts +0 -6
- package/Framework/Middleware/AuthMiddleware.ts +0 -31
- package/Framework/Middleware/CorsMiddleware.ts +0 -32
- package/Framework/Middleware/StaticAssetsMiddleware.ts +0 -76
- package/Framework/Middleware/index.ts +0 -2
- package/Framework/Provider.ts +0 -9
- package/Framework/Providers/CacheProvider.ts +0 -28
- package/Framework/Providers/DatabaseProvider.ts +0 -36
- package/Framework/Providers/MailProvider.ts +0 -31
- package/Framework/Providers/WebsocketsProvider.ts +0 -120
- package/Framework/Resolvers/AuthResolver.ts +0 -23
- package/Framework/Resolvers/EntityResolver.ts +0 -41
- package/Framework/Resolvers/FormResolver.ts +0 -37
- package/Framework/RootDir.ts +0 -1
- package/Framework/index.ts +0 -8
- package/Frontend/Angular/index.ts +0 -24
- package/Frontend/Websockets/index.ts +0 -86
- package/Mail/MailAddress.ts +0 -4
- package/Mail/MailTransport.ts +0 -6
- package/Mail/Mailable.ts +0 -16
- package/Mail/Mailer.ts +0 -27
- package/Mail/PendingMail.ts +0 -68
- package/Mail/SentMessage.ts +0 -20
- package/Mail/Transports/MemoryTransport.ts +0 -13
- package/Mail/Transports/SendGridTransport.ts +0 -95
- package/Mail/index.ts +0 -3
- package/Models/Model.ts +0 -41
- package/Models/index.ts +0 -54
- package/Router/BaseController.ts +0 -7
- package/Router/Decorators.ts +0 -224
- package/Router/Guard.ts +0 -10
- package/Router/Http/Contracts.ts +0 -4
- package/Router/Http/ErrorHandler.ts +0 -45
- package/Router/Http/ErrorHandlerInterface.ts +0 -6
- package/Router/Http/Errors/HttpError.ts +0 -15
- package/Router/Http/Handler.ts +0 -183
- package/Router/Http/HttpRoute.ts +0 -110
- package/Router/Http/Middleware.ts +0 -7
- package/Router/Http/Request.ts +0 -225
- package/Router/Http/Response.ts +0 -35
- package/Router/Http/index.ts +0 -85
- package/Router/Metadata.ts +0 -34
- package/Router/Middleware.ts +0 -16
- package/Router/Request.ts +0 -65
- package/Router/Route.ts +0 -16
- package/Router/RouteNotFoundError.ts +0 -5
- package/Router/Router.ts +0 -35
- package/Router/Servers/index.ts +0 -6
- package/Router/Servers/node.ts +0 -49
- package/Router/Servers/uNetworking.ts +0 -151
- package/Router/Websockets/Handler.ts +0 -82
- package/Router/Websockets/Middleware.ts +0 -7
- package/Router/Websockets/Request.ts +0 -3
- package/Router/Websockets/WebsocketRoute.ts +0 -61
- package/Router/Websockets/index.ts +0 -57
- package/Router/Websockets/types.ts +0 -23
- package/Router/index.ts +0 -6
- package/Storage/File.ts +0 -30
- package/Storage/Image.ts +0 -19
- package/Storage/InvalidImage.ts +0 -3
- package/Storage/Storage.ts +0 -98
- package/Storage/index.ts +0 -4
- package/Storage/utils.ts +0 -18
- package/Support/Array.ts +0 -184
- package/Support/Math.ts +0 -12
- package/Support/Metadata.ts +0 -31
- package/Support/String.ts +0 -38
- package/Support/index.ts +0 -19
- package/Support/utils.ts +0 -7
- package/Testing/TestCase.ts +0 -193
- package/Validation/Rule.ts +0 -9
- package/Validation/RuleInterface.ts +0 -10
- package/Validation/Rules/Email.ts +0 -20
- package/Validation/Rules/FileExtension.ts +0 -21
- package/Validation/Rules/MaxLength.ts +0 -17
- package/Validation/Rules/MinLength.ts +0 -18
- package/Validation/Rules/Optional.ts +0 -18
- package/Validation/Rules/Required.ts +0 -29
- package/Validation/Validator.ts +0 -7
- package/Validation/index.ts +0 -12
- package/benchmark-index.js +0 -20
- package/benchmark.ts +0 -47
- package/tests/Cache/DatabaseStoreTest.ts +0 -110
- package/tests/Cache/FileStoreTest.ts +0 -93
- package/tests/Cache/MemoryStoreTest.ts +0 -92
- package/tests/Container/ContainerTest.ts +0 -336
- package/tests/Database/Drivers/MySQL/AlterTest.ts +0 -100
- package/tests/Database/Drivers/MySQL/CreateTest.ts +0 -39
- package/tests/Database/Drivers/MysqlDriverTest.ts +0 -140
- package/tests/Database/Drivers/SqliteDriverTest.ts +0 -126
- package/tests/Database/Entities/Article.ts +0 -21
- package/tests/Database/Entities/Profile.ts +0 -21
- package/tests/Database/Entities/Role.ts +0 -15
- package/tests/Database/Entities/User.ts +0 -35
- package/tests/Database/EntityRelationshipsTest.ts +0 -475
- package/tests/Database/EntityTest.ts +0 -202
- package/tests/Database/Migrations/RunnerTest.ts +0 -96
- package/tests/Database/Migrations/migrations/1.createUserTable.ts +0 -12
- package/tests/Database/Migrations/migrations/2.createArticlesTable.ts +0 -12
- package/tests/Database/QueryTest.ts +0 -573
- package/tests/Database/SchemaTest.ts +0 -32
- package/tests/Database/Seeders/RunnerTest.ts +0 -30
- package/tests/Database/Seeders/seeders/RandomSeeder.ts +0 -10
- package/tests/Database/utils.ts +0 -16
- package/tests/Forms/FormsTest.ts +0 -59
- package/tests/Framework/Middleware/StaticAssetsMiddlewareTest.ts +0 -129
- package/tests/Framework/Resolvers/EntityResolverTest.ts +0 -48
- package/tests/Framework/Router/RouterTest.ts +0 -33
- package/tests/Mail/MailerTest.ts +0 -76
- package/tests/Model/ModelTest.ts +0 -183
- package/tests/Router/HttpHandlerTest.ts +0 -72
- package/tests/Router/RequestTest.ts +0 -77
- package/tests/Router/WebSocketsHandlerTest.ts +0 -51
- package/tests/Storage/StorageTest.ts +0 -97
- package/tests/Support/ArrayTest.ts +0 -167
- package/tests/Support/StringTest.ts +0 -18
- package/tests/Validation/RulesTest.ts +0 -54
- package/types.d.ts +0 -8
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { expect } from 'chai'
|
|
3
|
-
import { Http, Request } from '../../Router/Http'
|
|
4
|
-
import { IncomingHttpHeaders } from 'http'
|
|
5
|
-
import { File } from '../../Storage'
|
|
6
|
-
|
|
7
|
-
@suite
|
|
8
|
-
class RequestTest {
|
|
9
|
-
|
|
10
|
-
private request: Request
|
|
11
|
-
|
|
12
|
-
before() {
|
|
13
|
-
this.request = new Request('http://example.com/test?name=value', Http.Method.GET)
|
|
14
|
-
this.request.setHeadersLoader(() => {
|
|
15
|
-
return {'content-type': 'text/html'}
|
|
16
|
-
})
|
|
17
|
-
this.request.getHeader = <T extends string | string[] | undefined>(name: keyof IncomingHttpHeaders | string): T => {
|
|
18
|
-
return 'text/html' as T
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
@test
|
|
23
|
-
'uri getter should return correct uri'() {
|
|
24
|
-
expect(this.request.uri).to.equal('/test')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@test
|
|
28
|
-
'method getter should return correct method'() {
|
|
29
|
-
expect(this.request.method).to.equal(Http.Method.GET)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Assuming that the commented url getter is uncommented in your code
|
|
33
|
-
@test
|
|
34
|
-
'url getter should return correct url'() {
|
|
35
|
-
expect(this.request.url).to.equal('http://example.com/test?name=value')
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@test
|
|
39
|
-
'query getter should parse and return correct query parameters'() {
|
|
40
|
-
expect(this.request.query).to.deep.equal({name: 'value'})
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
@test
|
|
44
|
-
'cookies getter should parse and return correct cookies'() {
|
|
45
|
-
expect(this.request.cookies).to.deep.equal({todo: 'parse cookies'})
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@test
|
|
49
|
-
'body getter and setter should return and set body correctly'() {
|
|
50
|
-
this.request.body = {test: 'data'}
|
|
51
|
-
expect(this.request.body).to.deep.equal({test: 'data'})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
@test
|
|
55
|
-
'files getter and setter should return and set files correctly'() {
|
|
56
|
-
const dummyFile = { // Just a mock structure based on what you provided
|
|
57
|
-
originalName: 'test.txt',
|
|
58
|
-
directory: '/tmp',
|
|
59
|
-
saved: true,
|
|
60
|
-
path: '/tmp/test.txt'
|
|
61
|
-
} as File
|
|
62
|
-
|
|
63
|
-
this.request.files = {testFile: dummyFile}
|
|
64
|
-
expect(this.request.files).to.deep.equal({testFile: dummyFile})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
@test
|
|
68
|
-
'headers getter should return correct headers'() {
|
|
69
|
-
expect(this.request.headers).to.deep.equal({'content-type': 'text/html'})
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
@test
|
|
73
|
-
'header value is returned'() {
|
|
74
|
-
expect(this.request.getHeader('random header')).to.deep.equal('text/html')
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { Handler } from '../../Router/Websockets'
|
|
3
|
-
import { expect } from 'chai'
|
|
4
|
-
import { Container } from '@Typetron/Container'
|
|
5
|
-
import { Action, Body, Controller } from '../../Router'
|
|
6
|
-
import { Request } from '../../Router/Request'
|
|
7
|
-
|
|
8
|
-
@suite
|
|
9
|
-
class WebSocketsHandlerTest {
|
|
10
|
-
|
|
11
|
-
@test
|
|
12
|
-
'gives error when two actions have the same path'() {
|
|
13
|
-
const container = new Container()
|
|
14
|
-
|
|
15
|
-
class Controller {
|
|
16
|
-
list() {}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const router = container.get(Handler)
|
|
20
|
-
router.addAction('list', Controller, 'list')
|
|
21
|
-
|
|
22
|
-
expect(() => router.addAction('list', Controller, 'index')).to.throw(`There is already an action with the same name: 'list'`)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@test
|
|
26
|
-
async 'returns the value from the @Body'() {
|
|
27
|
-
const container = Container.getInstance()
|
|
28
|
-
|
|
29
|
-
@Controller()
|
|
30
|
-
class MyController {
|
|
31
|
-
@Action()
|
|
32
|
-
list(@Body() value: string) {
|
|
33
|
-
return value
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@Action()
|
|
37
|
-
create(@Body() value: string) {
|
|
38
|
-
return value
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const router = container.get(Handler)
|
|
43
|
-
|
|
44
|
-
const listContent = await router.handle(container, new Request('list', 'test'))
|
|
45
|
-
expect(listContent.body).to.be.equal('test')
|
|
46
|
-
|
|
47
|
-
const createContent = await router.handle(container, new Request('create'))
|
|
48
|
-
expect(createContent.body).to.be.equal(undefined)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { File, Storage } from '../../Storage'
|
|
3
|
-
import { expect } from 'chai'
|
|
4
|
-
import * as path from 'path'
|
|
5
|
-
|
|
6
|
-
const directory = './tests/Storage/.storage'
|
|
7
|
-
|
|
8
|
-
@suite
|
|
9
|
-
class StorageTest {
|
|
10
|
-
storage = new Storage()
|
|
11
|
-
|
|
12
|
-
@test
|
|
13
|
-
async canReadFiles() {
|
|
14
|
-
const file = new File('testFile.txt')
|
|
15
|
-
file.directory = directory
|
|
16
|
-
// Create the file before trying to save it
|
|
17
|
-
await this.storage.put(path.join(directory, file.name), 'test content')
|
|
18
|
-
|
|
19
|
-
const content = await this.storage.read(path.join(directory, file.name))
|
|
20
|
-
expect(content).to.be.instanceOf(Buffer)
|
|
21
|
-
expect(content.toString()).to.equal('test content')
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@test
|
|
25
|
-
async canCheckIfFileExists() {
|
|
26
|
-
const file = new File('testFile.txt')
|
|
27
|
-
file.directory = directory
|
|
28
|
-
// Create the file before trying to save it
|
|
29
|
-
await this.storage.put(path.join(directory, file.name), 'test content')
|
|
30
|
-
|
|
31
|
-
const exists = await this.storage.exists(path.join(directory, file.name))
|
|
32
|
-
expect(exists).to.be.true
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@test
|
|
36
|
-
async canSaveFiles() {
|
|
37
|
-
const file = new File('testFile.txt')
|
|
38
|
-
file.directory = directory
|
|
39
|
-
// Create the file before trying to save it
|
|
40
|
-
await this.storage.put(path.join(directory, file.name), 'test content')
|
|
41
|
-
const savedFile = await this.storage.save(file, './tests/Storage/.storage/alternative.txt')
|
|
42
|
-
expect(savedFile).to.be.instanceOf(File)
|
|
43
|
-
expect(savedFile.name).to.equal(file.name)
|
|
44
|
-
expect(await this.storage.exists(savedFile.path)).to.be.true
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@test
|
|
48
|
-
async canWriteToFile() {
|
|
49
|
-
const filePath = path.join(directory, 'testFile.txt')
|
|
50
|
-
const file = await this.storage.put(filePath, 'test content')
|
|
51
|
-
expect(file).to.be.instanceOf(File)
|
|
52
|
-
expect(file.name).to.equal('testFile.txt')
|
|
53
|
-
const content = await this.storage.read(path.join(directory, file.name))
|
|
54
|
-
expect(content).to.be.instanceOf(Buffer)
|
|
55
|
-
expect(content.toString()).to.equal('test content')
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@test
|
|
59
|
-
async canCreateDirectory() {
|
|
60
|
-
await this.storage.makeDirectory(directory)
|
|
61
|
-
const exists = await this.storage.exists(directory)
|
|
62
|
-
expect(exists).to.be.true
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@test
|
|
66
|
-
async canDeleteDirectory() {
|
|
67
|
-
await this.storage.makeDirectory(directory)
|
|
68
|
-
await this.storage.deleteDirectory(directory)
|
|
69
|
-
const exists = await this.storage.exists(directory)
|
|
70
|
-
expect(exists).to.be.false
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@test
|
|
74
|
-
async canDeleteFile() {
|
|
75
|
-
const file = new File('testFile.txt')
|
|
76
|
-
file.directory = directory
|
|
77
|
-
// Create the file before trying to save it
|
|
78
|
-
await this.storage.put(path.join(directory, file.name), 'test content')
|
|
79
|
-
|
|
80
|
-
await this.storage.delete(path.join(directory, file.name))
|
|
81
|
-
const exists = await this.storage.exists(path.join(directory, file.name))
|
|
82
|
-
expect(exists).to.be.false
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@test
|
|
86
|
-
async cannotDeleteWithoutFileName() {
|
|
87
|
-
try {
|
|
88
|
-
// Attempt to delete a directory instead of a file
|
|
89
|
-
await this.storage.delete(directory)
|
|
90
|
-
throw new Error('Expected an error to be thrown, but none was thrown.')
|
|
91
|
-
} catch (unknownError) {
|
|
92
|
-
const error = unknownError as Error
|
|
93
|
-
expect(error).to.be.instanceOf(Error)
|
|
94
|
-
expect(error.message).to.equal('Can not delete because this path leads to a directory and not a file.')
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai'
|
|
2
|
-
import { suite, test } from '@testdeck/mocha'
|
|
3
|
-
import '../../Support'
|
|
4
|
-
|
|
5
|
-
interface User {
|
|
6
|
-
name: string;
|
|
7
|
-
age: number;
|
|
8
|
-
admin: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
@suite
|
|
12
|
-
class ArrayTest {
|
|
13
|
-
|
|
14
|
-
joe = {
|
|
15
|
-
name: 'Joe',
|
|
16
|
-
age: 20,
|
|
17
|
-
admin: false
|
|
18
|
-
}
|
|
19
|
-
doe = {
|
|
20
|
-
name: 'Doe',
|
|
21
|
-
age: 21,
|
|
22
|
-
admin: true
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
users: User[] = []
|
|
26
|
-
|
|
27
|
-
before() {
|
|
28
|
-
this.users = [this.joe, this.doe]
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@test
|
|
32
|
-
empty() {
|
|
33
|
-
expect([].empty()).to.be.equal(true)
|
|
34
|
-
expect([1].empty()).to.be.equal(false)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
@test
|
|
38
|
-
findWhere() {
|
|
39
|
-
expect(this.users.findWhere('name', 'Joe')).to.be.equal(this.joe)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@test
|
|
43
|
-
pluck() {
|
|
44
|
-
expect(this.users.pluck('name')).to.have.members([this.joe.name, this.doe.name])
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@test
|
|
48
|
-
remove() {
|
|
49
|
-
this.users.remove(this.joe)
|
|
50
|
-
expect(this.users).to.have.members([this.doe])
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@test
|
|
54
|
-
removeMany() {
|
|
55
|
-
this.users.remove(this.joe, this.doe)
|
|
56
|
-
expect(this.users).to.have.length(0)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@test
|
|
60
|
-
where() {
|
|
61
|
-
expect(this.users.where('name', this.joe.name)).to.have.members([this.joe])
|
|
62
|
-
expect([this.joe].where('admin', false)).to.have.length(1)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@test
|
|
66
|
-
whereNot() {
|
|
67
|
-
expect(this.users.whereNot('name', this.joe.name)).to.have.members([this.doe])
|
|
68
|
-
expect([this.doe].whereNot('admin', false)).to.have.length(1)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
@test
|
|
72
|
-
whereWithDefaultValue() {
|
|
73
|
-
expect(this.users.where('admin')).to.have.members([this.doe])
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@test
|
|
77
|
-
whereIn() {
|
|
78
|
-
expect(this.users.whereIn('name', [this.joe.name, this.doe.name])).to.have.members([this.joe, this.doe])
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@test
|
|
82
|
-
whereNotIn() {
|
|
83
|
-
expect(this.users.whereNotIn('name', [this.joe.name])).to.have.members([this.doe])
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
@test
|
|
87
|
-
first() {
|
|
88
|
-
expect(this.users.first()).to.be.equal(this.joe)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@test
|
|
92
|
-
groupBy() {
|
|
93
|
-
expect(this.users.groupBy('age')).to.deep.equal({
|
|
94
|
-
20: [this.joe],
|
|
95
|
-
21: [this.doe],
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
@test
|
|
100
|
-
groupByCallback() {
|
|
101
|
-
expect(this.users.groupBy(user => user.age)).to.deep.equal({
|
|
102
|
-
20: [this.joe],
|
|
103
|
-
21: [this.doe],
|
|
104
|
-
})
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
@test
|
|
108
|
-
uniqueValue() {
|
|
109
|
-
const data = [1, 1, 2, 3]
|
|
110
|
-
expect(data.unique()).to.be.deep.equal([1, 2, 3])
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
@test
|
|
114
|
-
uniqueValueBasedOnKey() {
|
|
115
|
-
const data = [
|
|
116
|
-
{id: 1},
|
|
117
|
-
{id: 1},
|
|
118
|
-
]
|
|
119
|
-
expect(data.unique('id')).to.be.deep.equal([{id: 1}])
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
@test
|
|
123
|
-
uniqueValueBasedOnCallback() {
|
|
124
|
-
const data = [
|
|
125
|
-
{age: 20},
|
|
126
|
-
{age: 20},
|
|
127
|
-
{age: 30},
|
|
128
|
-
]
|
|
129
|
-
expect(data.unique(item => item.age)).to.be.deep.equal([{age: 20}, {age: 30}])
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
@test
|
|
133
|
-
sumNumbers() {
|
|
134
|
-
expect([1, 2, 3].sum()).to.be.equal(6)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
@test
|
|
138
|
-
sumObjectProperties() {
|
|
139
|
-
expect(this.users.sum('age')).to.be.equal(this.joe.age + this.doe.age)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
@test
|
|
143
|
-
sumCallback() {
|
|
144
|
-
expect(this.users.sum(user => user.age)).to.be.equal(this.joe.age + this.doe.age)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@test
|
|
148
|
-
whenNotEmpty() {
|
|
149
|
-
let index = false;
|
|
150
|
-
[1].whenNotEmpty(() => index = true)
|
|
151
|
-
expect(index).to.be.equal(true)
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
@test
|
|
155
|
-
whenNotEmptyPassesTheArrayInTheCallback() {
|
|
156
|
-
let index = false;
|
|
157
|
-
[1, 2, 3].filter(i => i >= 2).whenNotEmpty(values => index = values.length === 2)
|
|
158
|
-
expect(index).to.be.equal(true)
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
@test
|
|
162
|
-
whenEmpty() {
|
|
163
|
-
let index = false;
|
|
164
|
-
[].whenEmpty(() => index = true)
|
|
165
|
-
expect(index).to.be.equal(true)
|
|
166
|
-
}
|
|
167
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai'
|
|
2
|
-
import { suite, test } from '@testdeck/mocha'
|
|
3
|
-
|
|
4
|
-
@suite
|
|
5
|
-
class StringTest {
|
|
6
|
-
@test
|
|
7
|
-
shouldLimitStringAddingThreeDotsAtTheEnd() {
|
|
8
|
-
expect('text'.limit(3)).to.be.equal('...')
|
|
9
|
-
expect('texts'.limit(4)).to.be.equal('t...')
|
|
10
|
-
expect('text'.limit(5)).to.be.equal('text')
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
@test
|
|
14
|
-
shouldLimitStringWithCustomEnding() {
|
|
15
|
-
expect('Testing this text'.limit(12, ' More...')).to.be.equal('Test More...')
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { suite, test } from '@testdeck/mocha'
|
|
2
|
-
import { Email } from '../../Validation'
|
|
3
|
-
import { expect } from 'chai'
|
|
4
|
-
|
|
5
|
-
@suite
|
|
6
|
-
class RulesTest {
|
|
7
|
-
@test
|
|
8
|
-
shouldLimitStringAddingThreeDotsAtTheEnd() {
|
|
9
|
-
const validEmails = [
|
|
10
|
-
'email@example.com',
|
|
11
|
-
'firstname.lastname@example.com',
|
|
12
|
-
'email@subdomain.example.com',
|
|
13
|
-
'firstname+lastname@example.com',
|
|
14
|
-
'email@123.123.123.123',
|
|
15
|
-
'email@[123.123.123.123]',
|
|
16
|
-
'"email"@example.com',
|
|
17
|
-
'1234567890@example.com',
|
|
18
|
-
'email@example-one.com',
|
|
19
|
-
'_______@example.com',
|
|
20
|
-
'email@example.name',
|
|
21
|
-
'email@example.museum',
|
|
22
|
-
'email@example.co.jp',
|
|
23
|
-
'firstname-lastname@example.com',
|
|
24
|
-
]
|
|
25
|
-
const invalidEmails = [
|
|
26
|
-
'plainaddress',
|
|
27
|
-
'#@%^%#$@#$@#.com',
|
|
28
|
-
'@example.com',
|
|
29
|
-
'Joe Smith <email@example.com>',
|
|
30
|
-
'email.example.com',
|
|
31
|
-
'email@example@example.com',
|
|
32
|
-
'.email@example.com',
|
|
33
|
-
'email.@example.com',
|
|
34
|
-
'email..email@example.com',
|
|
35
|
-
'あいうえお@example.com',
|
|
36
|
-
'email@example.com (Joe Smith)',
|
|
37
|
-
'email@example',
|
|
38
|
-
'email@-example.com',
|
|
39
|
-
'email@example..com',
|
|
40
|
-
'Abc..123@example.com',
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
const rule = new (Email())
|
|
44
|
-
|
|
45
|
-
validEmails.forEach(email => {
|
|
46
|
-
expect(rule.passes('', email), email).to.be.equal(true)
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
invalidEmails.forEach(email => {
|
|
50
|
-
expect(rule.passes('', email), email).to.be.equal(false)
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
}
|