mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-09-17 14:21:14 +00:00
[ACS-4538] Make folder-rules secondary entry point of aca-content (#3181)
* [ACS-4538] Make folder-rules secondary entry point of aca-content * [ACA-4538] Fix folder rules imports * [ACS-4538] Fix folder-rules unit tests * [ACS-4538] Fix package.json after folder rules transition * [ACS-4538] Remove duplicated peerDependency * [ACS-4538] Import fix
This commit is contained in:
1
.github/actions/publish-libs/npm-publish.sh
vendored
1
.github/actions/publish-libs/npm-publish.sh
vendored
@@ -12,7 +12,6 @@ fi
|
|||||||
|
|
||||||
export PROJECTS=(
|
export PROJECTS=(
|
||||||
'aca-content'
|
'aca-content'
|
||||||
'aca-folder-rules'
|
|
||||||
'aca-preview'
|
'aca-preview'
|
||||||
'aca-shared'
|
'aca-shared'
|
||||||
'aca-viewer'
|
'aca-viewer'
|
||||||
|
@@ -11,7 +11,6 @@ fi
|
|||||||
|
|
||||||
export PROJECTS=(
|
export PROJECTS=(
|
||||||
'aca-content'
|
'aca-content'
|
||||||
'aca-folder-rules'
|
|
||||||
'aca-preview'
|
'aca-preview'
|
||||||
'aca-shared'
|
'aca-shared'
|
||||||
'aca-viewer'
|
'aca-viewer'
|
||||||
|
1
.github/workflows/pull-request.yml
vendored
1
.github/workflows/pull-request.yml
vendored
@@ -96,7 +96,6 @@ jobs:
|
|||||||
unit-tests:
|
unit-tests:
|
||||||
- name: "aca-content"
|
- name: "aca-content"
|
||||||
- name: "aca-shared"
|
- name: "aca-shared"
|
||||||
- name: "aca-folder-rules"
|
|
||||||
- name: "aca-preview"
|
- name: "aca-preview"
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
@@ -79,13 +79,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glob": "folder-rules.plugin.json",
|
"glob": "folder-rules.plugin.json",
|
||||||
"input": "projects/aca-folder-rules/assets",
|
"input": "projects/aca-content/folder-rules/assets",
|
||||||
"output": "./assets/plugins"
|
"output": "./assets/plugins"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glob": "**/*",
|
"glob": "**/*",
|
||||||
"input": "projects/aca-folder-rules/assets",
|
"input": "projects/aca-content/folder-rules/assets",
|
||||||
"output": "./assets/aca-folder-rules"
|
"output": "./assets/folder-rules"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"glob": "**/*",
|
"glob": "**/*",
|
||||||
@@ -253,7 +253,11 @@
|
|||||||
"assets": [
|
"assets": [
|
||||||
"app/src/assets",
|
"app/src/assets",
|
||||||
"app/src/favicon-96x96.png",
|
"app/src/favicon-96x96.png",
|
||||||
"projects/aca-content/assets",
|
{
|
||||||
|
"glob": "**/*",
|
||||||
|
"input": "projects/aca-content/assets",
|
||||||
|
"output": "/assets"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"input": "app/.tmp",
|
"input": "app/.tmp",
|
||||||
"output": "/",
|
"output": "/",
|
||||||
|
@@ -23,9 +23,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
import { AcaFolderRulesModule } from '@alfresco/aca-content/folder-rules';
|
||||||
import { AosExtensionModule } from '@alfresco/aca-content/ms-office';
|
import { AosExtensionModule } from '@alfresco/aca-content/ms-office';
|
||||||
import { AcaAboutModule, DEV_MODE_TOKEN, PACKAGE_JSON } from '@alfresco/aca-content/about';
|
import { AcaAboutModule, DEV_MODE_TOKEN, PACKAGE_JSON } from '@alfresco/aca-content/about';
|
||||||
import { AcaFolderRulesModule } from '@alfresco/aca-folder-rules';
|
|
||||||
import { environment } from '../environments/environment';
|
import { environment } from '../environments/environment';
|
||||||
import packageJson from 'package.json';
|
import packageJson from 'package.json';
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../../../extension.schema.json",
|
"$schema": "../../../../extension.schema.json",
|
||||||
"$id": "0455ca6c-cc7a-43ae-bbf7-35795413d2dd",
|
"$id": "0455ca6c-cc7a-43ae-bbf7-35795413d2dd",
|
||||||
"$name": "Folder Rules Plugin",
|
"$name": "Folder Rules Plugin",
|
||||||
"$version": "0.0.1",
|
"$version": "0.0.1",
|
5
projects/aca-content/folder-rules/ng-package.json
Normal file
5
projects/aca-content/folder-rules/ng-package.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"lib": {
|
||||||
|
"entryFile": "src/public-api.ts"
|
||||||
|
}
|
||||||
|
}
|
@@ -82,7 +82,7 @@ const routes: Routes = [
|
|||||||
})
|
})
|
||||||
export class AcaFolderRulesModule {
|
export class AcaFolderRulesModule {
|
||||||
constructor(translation: TranslationService, extensions: ExtensionService) {
|
constructor(translation: TranslationService, extensions: ExtensionService) {
|
||||||
translation.addTranslationFolder('aca-folder-rules', 'assets/aca-folder-rules');
|
translation.addTranslationFolder('folder-rules', 'assets/folder-rules');
|
||||||
|
|
||||||
extensions.setEvaluators({
|
extensions.setEvaluators({
|
||||||
'rules.canManageFolderRules': rules.canManageFolderRules
|
'rules.canManageFolderRules': rules.canManageFolderRules
|
@@ -23,7 +23,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { AcaFolderRulesModule, ManageRulesSmartComponent } from '@alfresco/aca-folder-rules';
|
import { AcaFolderRulesModule } from '../folder-rules.module';
|
||||||
|
import { ManageRulesSmartComponent } from './manage-rules.smart-component';
|
||||||
import { DebugElement, Predicate } from '@angular/core';
|
import { DebugElement, Predicate } from '@angular/core';
|
||||||
import { CoreTestingModule } from '@alfresco/adf-core';
|
import { CoreTestingModule } from '@alfresco/adf-core';
|
||||||
import { FolderRulesService } from '../services/folder-rules.service';
|
import { FolderRulesService } from '../services/folder-rules.service';
|
||||||
@@ -37,7 +38,7 @@ import {
|
|||||||
ruleSetWithLinkMock
|
ruleSetWithLinkMock
|
||||||
} from '../mock/rule-sets.mock';
|
} from '../mock/rule-sets.mock';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { owningFolderIdMock, owningFolderMock } from '../mock/node.mock';
|
import { getOwningFolderEntryMock, owningFolderIdMock, owningFolderMock } from '../mock/node.mock';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { ActionsService } from '../services/actions.service';
|
import { ActionsService } from '../services/actions.service';
|
||||||
import { FolderRuleSetsService } from '../services/folder-rule-sets.service';
|
import { FolderRuleSetsService } from '../services/folder-rule-sets.service';
|
||||||
@@ -53,6 +54,7 @@ describe('ManageRulesSmartComponent', () => {
|
|||||||
let folderRuleSetsService: FolderRuleSetsService;
|
let folderRuleSetsService: FolderRuleSetsService;
|
||||||
let folderRulesService: FolderRulesService;
|
let folderRulesService: FolderRulesService;
|
||||||
let actionsService: ActionsService;
|
let actionsService: ActionsService;
|
||||||
|
let callApiSpy: jasmine.Spy;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -81,6 +83,19 @@ describe('ManageRulesSmartComponent', () => {
|
|||||||
actionsService = TestBed.inject(ActionsService);
|
actionsService = TestBed.inject(ActionsService);
|
||||||
|
|
||||||
spyOn(actionsService, 'loadActionDefinitions').and.stub();
|
spyOn(actionsService, 'loadActionDefinitions').and.stub();
|
||||||
|
spyOn(folderRulesService, 'getRuleSettings').and.returnValue(Promise.resolve(ruleSettingsMock));
|
||||||
|
callApiSpy = spyOn<any>(folderRuleSetsService, 'callApi');
|
||||||
|
callApiSpy
|
||||||
|
.withArgs(`/nodes/${owningFolderIdMock}/rule-sets?include=isLinkedTo,owningFolder,linkedToBy&skipCount=0&maxItems=100`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve(ownedRuleSetMock))
|
||||||
|
.withArgs(`/nodes/${owningFolderIdMock}/rule-sets/-default-?include=isLinkedTo,owningFolder,linkedToBy`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve(ownedRuleSetMock))
|
||||||
|
.withArgs(`/nodes/${owningFolderIdMock}?include=path%2Cproperties%2CallowableOperations%2Cpermissions`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve(getOwningFolderEntryMock));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
fixture.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should show a list of rule sets and rules', () => {
|
it('should show a list of rule sets and rules', () => {
|
@@ -22,5 +22,5 @@
|
|||||||
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export * from './lib/folder-rules.module';
|
export * from './folder-rules.module';
|
||||||
export { ManageRulesSmartComponent } from './lib/manage-rules/manage-rules.smart-component';
|
export { ManageRulesSmartComponent } from './manage-rules/manage-rules.smart-component';
|
@@ -36,7 +36,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin: 20px 0
|
margin: 20px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@@ -24,7 +24,8 @@
|
|||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
|
||||||
& > label, & > .label {
|
& > label,
|
||||||
|
& > .label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
@@ -75,12 +76,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.read-only, .mat-form-field-disabled {
|
&.read-only,
|
||||||
.mat-form-field-underline, .mat-select-arrow-wrapper {
|
.mat-form-field-disabled {
|
||||||
|
.mat-form-field-underline,
|
||||||
|
.mat-select-arrow-wrapper {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
*:disabled, .mat-select-disabled .mat-select-value {
|
*:disabled,
|
||||||
|
.mat-select-disabled .mat-select-value {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -28,7 +28,7 @@ import { ruleListGroupingItemsMock, rulesMock } from '../../mock/rules.mock';
|
|||||||
import { DebugElement } from '@angular/core';
|
import { DebugElement } from '@angular/core';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { CoreTestingModule } from '@alfresco/adf-core';
|
import { CoreTestingModule } from '@alfresco/adf-core';
|
||||||
import { AcaFolderRulesModule } from '@alfresco/aca-folder-rules';
|
import { AcaFolderRulesModule } from '../../folder-rules.module';
|
||||||
|
|
||||||
describe('RuleListGroupingUiComponent', () => {
|
describe('RuleListGroupingUiComponent', () => {
|
||||||
let component: RuleListGroupingUiComponent;
|
let component: RuleListGroupingUiComponent;
|
@@ -25,11 +25,12 @@
|
|||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { RuleSetPickerOptions, RuleSetPickerSmartComponent } from './rule-set-picker.smart-component';
|
import { RuleSetPickerOptions, RuleSetPickerSmartComponent } from './rule-set-picker.smart-component';
|
||||||
import { CoreTestingModule } from '@alfresco/adf-core';
|
import { CoreTestingModule } from '@alfresco/adf-core';
|
||||||
import { folderToLinkMock } from '../mock/node.mock';
|
import { folderToLinkMock, otherFolderMock } from '../mock/node.mock';
|
||||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import { FolderRuleSetsService } from '../services/folder-rule-sets.service';
|
import { FolderRuleSetsService } from '../services/folder-rule-sets.service';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { ruleSetWithLinkMock, ruleSetWithNoRulesToLinkMock, ruleSetWithOwnedRulesToLinkMock } from '../mock/rule-sets.mock';
|
import { ownedRuleSetMock, ruleSetWithLinkMock, ruleSetWithNoRulesToLinkMock, ruleSetWithOwnedRulesToLinkMock } from '../mock/rule-sets.mock';
|
||||||
|
import { ContentApiService } from '@alfresco/aca-shared';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
|
|
||||||
describe('RuleSetPickerSmartComponent', () => {
|
describe('RuleSetPickerSmartComponent', () => {
|
||||||
@@ -38,6 +39,7 @@ describe('RuleSetPickerSmartComponent', () => {
|
|||||||
let folderRuleSetsService: FolderRuleSetsService;
|
let folderRuleSetsService: FolderRuleSetsService;
|
||||||
|
|
||||||
let loadRuleSetsSpy: jasmine.Spy;
|
let loadRuleSetsSpy: jasmine.Spy;
|
||||||
|
let callApiSpy: jasmine.Spy;
|
||||||
|
|
||||||
const dialogRef = {
|
const dialogRef = {
|
||||||
close: jasmine.createSpy('close'),
|
close: jasmine.createSpy('close'),
|
||||||
@@ -54,7 +56,18 @@ describe('RuleSetPickerSmartComponent', () => {
|
|||||||
imports: [CoreTestingModule],
|
imports: [CoreTestingModule],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: MatDialogRef, useValue: dialogRef },
|
{ provide: MatDialogRef, useValue: dialogRef },
|
||||||
{ provide: MAT_DIALOG_DATA, useValue: dialogOptions }
|
{ provide: MAT_DIALOG_DATA, useValue: dialogOptions },
|
||||||
|
{
|
||||||
|
provide: ContentApiService,
|
||||||
|
useValue: {
|
||||||
|
getNode: () => {
|
||||||
|
return of({ entry: folderToLinkMock });
|
||||||
|
},
|
||||||
|
getNodeInfo: () => {
|
||||||
|
return of(otherFolderMock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -63,7 +76,19 @@ describe('RuleSetPickerSmartComponent', () => {
|
|||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
component['folderRuleSetsService'] = folderRuleSetsService;
|
component['folderRuleSetsService'] = folderRuleSetsService;
|
||||||
|
|
||||||
loadRuleSetsSpy = spyOn(folderRuleSetsService, 'loadRuleSets');
|
loadRuleSetsSpy = spyOn(folderRuleSetsService, 'loadRuleSets').and.callThrough();
|
||||||
|
callApiSpy = spyOn<any>(folderRuleSetsService, 'callApi');
|
||||||
|
callApiSpy
|
||||||
|
.withArgs(`/nodes/${dialogOptions.nodeId}/rule-sets?include=isLinkedTo,owningFolder,linkedToBy&skipCount=0&maxItems=100`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve(ownedRuleSetMock))
|
||||||
|
.withArgs(`/nodes/${dialogOptions.nodeId}/rule-sets/-default-?include=isLinkedTo,owningFolder,linkedToBy`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve(ownedRuleSetMock))
|
||||||
|
.withArgs(`/nodes/${folderToLinkMock.id}?include=path%2Cproperties%2CallowableOperations%2Cpermissions`, 'GET')
|
||||||
|
.and.returnValue(Promise.resolve({ entry: folderToLinkMock }));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
fixture.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should load the rule sets of a node once it has been selected', () => {
|
it('should load the rule sets of a node once it has been selected', () => {
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user