mirror of https://github.com/abpframework/abp.git
58 changed files with 298 additions and 205 deletions
@ -0,0 +1,24 @@ |
|||||
|
name: 'Angular' |
||||
|
on: |
||||
|
pull_request: |
||||
|
paths: |
||||
|
- 'npm/ng-packs/**' |
||||
|
branches: |
||||
|
#- master |
||||
|
- dev |
||||
|
push: |
||||
|
paths: |
||||
|
- 'npm/ng-packs/**' |
||||
|
branches: |
||||
|
#- master |
||||
|
- dev |
||||
|
jobs: |
||||
|
build-test-lint: |
||||
|
runs-on: ubuntu-18.04 |
||||
|
steps: |
||||
|
- uses: actions/checkout@v1 |
||||
|
- uses: actions/setup-node@v1 |
||||
|
with: |
||||
|
node-version: '10.x' |
||||
|
- run: yarn && yarn ci |
||||
|
working-directory: npm/ng-packs |
||||
@ -1,60 +0,0 @@ |
|||||
language: csharp |
|
||||
mono: none |
|
||||
dotnet: 2.1.300 |
|
||||
script: |
|
||||
- dotnet build framework |
|
||||
- dotnet build modules/users |
|
||||
- dotnet build modules/permission-management |
|
||||
- dotnet build modules/setting-management |
|
||||
- dotnet build modules/identity |
|
||||
- dotnet build modules/tenant-management |
|
||||
- dotnet build modules/account |
|
||||
- dotnet build modules/docs |
|
||||
- dotnet build modules/blogging |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.Authentication.OAuth.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.Mvc.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.Mvc.Versioning.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AspNetCore.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Auditing.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Authorization.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Autofac.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.AutoMapper.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Caching.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Castle.Core.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Core.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Data.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Ddd.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.EntityFrameworkCore.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.EventBus.Distributed.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.EventBus.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Http.Client.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Localization.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.MemoryDb.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.MongoDB.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.MultiTenancy.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Serialization.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.TestApp.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.UI.Navigation.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Uow.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.Validation.Tests |
|
||||
- dotnet test framework/test/Volo.Abp.VirtualFileSystem.Tests |
|
||||
- dotnet test modules/blogging/test/Volo.Blogging.Application.Tests |
|
||||
- dotnet test modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests |
|
||||
- dotnet test modules/identity/test/Volo.Abp.Identity.Domain.Tests |
|
||||
- dotnet test modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests |
|
||||
- dotnet test modules/identity/test/Volo.Abp.Identity.MongoDB.Tests |
|
||||
- dotnet test modules/identity/test/Volo.Abp.Identity.Application.Tests |
|
||||
- dotnet test modules/permission-management/test/Volo.Abp.PermissionManagement.Tests |
|
||||
- dotnet test modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests |
|
||||
- dotnet test modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests |
|
||||
- dotnet test modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests |
|
||||
- dotnet test modules/setting-management/test/Volo.Abp.SettingManagement.MongoDB.Tests |
|
||||
- dotnet test modules/setting-management/test/Volo.Abp.SettingManagement.Tests |
|
||||
- dotnet test modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests |
|
||||
- dotnet test modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests |
|
||||
- dotnet test modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests |
|
||||
- dotnet test modules/users/test/Volo.Abp.Users.MongoDB.Tests |
|
||||
- dotnet test modules/users/test/Volo.Abp.Users.EntityFrameworkCore.Tests |
|
||||
|
|
||||
@ -1 +1,2 @@ |
|||||
<h1> Abp Ng Packages </h1> |
<h1> Abp Ng Packages </h1> |
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
# @abp/ng.account.config |
# @abp/ng.account.config |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'account-config', |
||||
|
}; |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.account </h1> |
<h1> @abp/ng.account </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'account', |
||||
|
}; |
||||
@ -0,0 +1,35 @@ |
|||||
|
import { createHttpFactory, HttpMethod, SpectatorHttp } from '@ngneat/spectator/jest'; |
||||
|
import { AccountService } from '../services/account.service'; |
||||
|
import { Store } from '@ngxs/store'; |
||||
|
import { RestService } from '@abp/ng.core'; |
||||
|
import { RegisterRequest } from '../models/user'; |
||||
|
|
||||
|
describe('AccountService', () => { |
||||
|
let spectator: SpectatorHttp<AccountService>; |
||||
|
const createHttp = createHttpFactory({ |
||||
|
dataService: AccountService, |
||||
|
providers: [RestService], |
||||
|
mocks: [Store], |
||||
|
}); |
||||
|
|
||||
|
beforeEach(() => (spectator = createHttp())); |
||||
|
|
||||
|
it('should send a GET to find tenant', () => { |
||||
|
spectator.get(Store).selectSnapshot.andReturn('https://abp.io'); |
||||
|
spectator.service.findTenant('test').subscribe(); |
||||
|
spectator.expectOne('https://abp.io/api/abp/multi-tenancy/tenants/by-name/test', HttpMethod.GET); |
||||
|
}); |
||||
|
|
||||
|
it('should send a POST to register API', () => { |
||||
|
const mock = { |
||||
|
userName: 'test', |
||||
|
emailAddress: 'test@test.com', |
||||
|
password: 'test1234', |
||||
|
appName: 'Angular', |
||||
|
} as RegisterRequest; |
||||
|
spectator.get(Store).selectSnapshot.andReturn('https://abp.io'); |
||||
|
spectator.service.register(mock).subscribe(); |
||||
|
const req = spectator.expectOne('https://abp.io/api/account/register', HttpMethod.POST); |
||||
|
expect(req.request.body).toEqual(mock); |
||||
|
}); |
||||
|
}); |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.core </h1> |
<h1> @abp/ng.core </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1,10 +1,6 @@ |
|||||
const { pathsToModuleNameMapper } = require('ts-jest/utils'); |
|
||||
const { compilerOptions } = require('./tsconfig.spec'); |
|
||||
const jestConfig = require('../../jest.config'); |
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
module.exports = { |
module.exports = { |
||||
...jestConfig, |
...jestConfig, |
||||
name: 'core', |
name: 'core', |
||||
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '<rootDir>/' } */), |
|
||||
'ts-jest': { allowSyntheticDefaultImports: true }, |
|
||||
}; |
}; |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.feature-management </h1> |
<h1> @abp/ng.feature-management </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
# @abp/ng.identity.config |
# @abp/ng.identity.config |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'identity-config', |
||||
|
}; |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.identity </h1> |
<h1> @abp/ng.identity </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.permission-management </h1> |
<h1> @abp/ng.permission-management </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1,24 +1,3 @@ |
|||||
# SettingManagementConfig |
# @abp/ng.setting-management.config |
||||
|
|
||||
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.7. |
[docs.abp.io](https://docs.abp.io) |
||||
|
|
||||
## Code scaffolding |
|
||||
|
|
||||
Run `ng generate component component-name --project setting-management-config` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project setting-management-config`. |
|
||||
> Note: Don't forget to add `--project setting-management-config` or else it will be added to the default project in your `angular.json` file. |
|
||||
|
|
||||
## Build |
|
||||
|
|
||||
Run `ng build setting-management-config` to build the project. The build artifacts will be stored in the `dist/` directory. |
|
||||
|
|
||||
## Publishing |
|
||||
|
|
||||
After building your library with `ng build setting-management-config`, go to the dist folder `cd dist/setting-management-config` and run `npm publish`. |
|
||||
|
|
||||
## Running unit tests |
|
||||
|
|
||||
Run `ng test setting-management-config` to execute the unit tests via [Karma](https://karma-runner.github.io). |
|
||||
|
|
||||
## Further help |
|
||||
|
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). |
|
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'setting-management-config', |
||||
|
}; |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.setting-management </h1> |
<h1> @abp/ng.setting-management </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'setting-management', |
||||
|
}; |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
# @abp/ng.tenant-management.config |
# @abp/ng.tenant-management.config |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
|
module.exports = { |
||||
|
...jestConfig, |
||||
|
name: 'tenant-management-config', |
||||
|
}; |
||||
@ -1,9 +1,11 @@ |
|||||
{ |
{ |
||||
"extends": "../../tsconfig.json", |
"extends": "../../tsconfig.json", |
||||
"compilerOptions": { |
"compilerOptions": { |
||||
"outDir": "../../out-tsc/spec", |
"emitDecoratorMetadata": true, |
||||
"types": ["node", "jest"] |
"esModuleInterop": true, |
||||
|
"outDir": "../../dist/out-tsc", |
||||
|
"module": "commonjs", |
||||
|
"types": ["jest", "node"] |
||||
}, |
}, |
||||
"files": [], |
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"] |
"include": ["**/*.spec.ts", "**/*.d.ts"] |
||||
} |
} |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.tenant-management </h1> |
<h1> @abp/ng.tenant-management </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.theme.basic </h1> |
<h1> @abp/ng.theme.basic </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1 +1,3 @@ |
|||||
<h1> @abp/ng.theme.shared </h1> |
<h1> @abp/ng.theme.shared </h1> |
||||
|
|
||||
|
[docs.abp.io](https://docs.abp.io) |
||||
|
|||||
@ -1,10 +1,6 @@ |
|||||
const { pathsToModuleNameMapper } = require('ts-jest/utils'); |
|
||||
const { compilerOptions } = require('./tsconfig.spec'); |
|
||||
const jestConfig = require('../../jest.config'); |
const jestConfig = require('../../jest.config'); |
||||
|
|
||||
module.exports = { |
module.exports = { |
||||
...jestConfig, |
...jestConfig, |
||||
name: 'theme-shared', |
name: 'theme-shared', |
||||
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '<rootDir>/' } */), |
|
||||
'ts-jest': { allowSyntheticDefaultImports: true }, |
|
||||
}; |
}; |
||||
|
|||||
@ -0,0 +1,52 @@ |
|||||
|
import { Injectable, Optional } from '@angular/core'; |
||||
|
import { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap'; |
||||
|
import { DatePipe } from '@angular/common'; |
||||
|
|
||||
|
function padNumber(value: number) { |
||||
|
if (isNumber(value)) { |
||||
|
return `0${value}`.slice(-2); |
||||
|
} else { |
||||
|
return ''; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function isNumber(value: any): boolean { |
||||
|
return !isNaN(toInteger(value)); |
||||
|
} |
||||
|
|
||||
|
function toInteger(value: any): number { |
||||
|
return parseInt(`${value}`, 10); |
||||
|
} |
||||
|
|
||||
|
@Injectable() |
||||
|
export class DateParserFormatter extends NgbDateParserFormatter { |
||||
|
constructor(@Optional() private datePipe: DatePipe) { |
||||
|
super(); |
||||
|
} |
||||
|
|
||||
|
parse(value: string): NgbDateStruct { |
||||
|
if (value) { |
||||
|
const dateParts = value.trim().split('-'); |
||||
|
if (dateParts.length === 1 && isNumber(dateParts[0])) { |
||||
|
return { year: toInteger(dateParts[0]), month: null, day: null }; |
||||
|
} else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) { |
||||
|
return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null }; |
||||
|
} else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) { |
||||
|
return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) }; |
||||
|
} |
||||
|
} |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
format(date: NgbDateStruct): string { |
||||
|
if (date && this.datePipe) { |
||||
|
return this.datePipe.transform(new Date(date.year, date.month, date.day), 'shortDate'); |
||||
|
} else { |
||||
|
return date |
||||
|
? `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${ |
||||
|
isNumber(date.day) ? padNumber(date.day) : '' |
||||
|
}` |
||||
|
: ''; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1 +1,2 @@ |
|||||
export * from './widget-utils'; |
export * from './widget-utils'; |
||||
|
export * from './date-parser-formatter'; |
||||
|
|||||
Loading…
Reference in new issue