Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ const updateUnitManagementRuleServiceMock = jasmine.createSpyObj('UpdateUnitMana
const managementRulesValidatorServiceMock = jasmine.createSpyObj('ManagementRulesValidatorService', {
uniquePreventRuleId: () => of({}),
uniqueRuleId: () => of({}),
ruleIdPattern: () => of({}),
checkRuleIdExistence: () => of({}),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import {
CriteriaDataType,
CriteriaOperator,
diff,
ManagementRuleValidators,
MiscValidators,
Rule,
RuleService,
SearchCriteriaDto,
Expand Down Expand Up @@ -136,7 +136,7 @@ export class AddManagementRulesComponent implements OnDestroy, OnInit {
this.ruleDetailsForm = this.formBuilder.group({
rule: [
null,
[Validators.required, ManagementRuleValidators.ruleIdPattern],
[Validators.required, MiscValidators.requiredIdentifier],
[this.managementRulesValidatorService.uniqueRuleId(this.ruleCategory), this.managementRulesValidatorService.checkRuleIdExistence()],
],
startDate: [null],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ const managementRulesSharedDataServiceMock = {
const managementRulesValidatorServiceMock = jasmine.createSpyObj('ManagementRulesValidatorService', {
uniquePreventRuleId: () => of({}),
uniqueRuleId: () => of({}),
ruleIdPattern: () => of({}),
checkRuleIdExistence: () => of({}),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ import { MatDialog } from '@angular/material/dialog';
import { ManagementRulesSharedDataService } from 'projects/archive-search/src/app/core/management-rules-shared-data.service';
import { merge, Observable, Subscription } from 'rxjs';
import { debounceTime, filter, map } from 'rxjs/operators';
import { diff, ManagementRuleValidators, Rule, RuleService, SearchCriteriaDto, VitamuiSelectOptions } from 'vitamui-library';
import { ArchiveSearchConstsEnum } from '../../../../../models/archive-search-consts-enum';
import { ManagementRules, RuleAction, RuleActionsEnum, RuleCategoryAction } from '../../../../../models/ruleAction.interface';
import { ManagementRulesValidatorService } from '../../../../../validators/management-rules-validator.service';
import { diff, MiscValidators, Rule, RuleService, SearchCriteriaDto, VitamuiSelectOptions } from 'vitamui-library';

@Component({
selector: 'app-block-rules-inheritance',
Expand Down Expand Up @@ -98,7 +98,7 @@ export class BlockRulesInheritanceComponent implements OnDestroy, OnInit {
this.ruleDetailsForm = this.formBuilder.group({
rule: [
null,
[Validators.required, ManagementRuleValidators.ruleIdPattern],
[Validators.required, MiscValidators.requiredIdentifier],
[this.managementRulesValidatorService.uniquePreventRuleId(), this.managementRulesValidatorService.checkRuleIdExistence()],
],
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ const updateUnitManagementRuleServiceMock = jasmine.createSpyObj('UpdateUnitMana
const managementRulesValidatorServiceMock = jasmine.createSpyObj('ManagementRulesValidatorService', {
uniquePreventRuleId: () => of({}),
uniqueRuleId: () => of({}),
ruleIdPattern: () => of({}),
checkRuleIdExistence: () => of({}),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,18 @@ import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core';
import { cloneDeep } from 'lodash-es';
import { ManagementRulesSharedDataService } from 'projects/archive-search/src/app/core/management-rules-shared-data.service';
import { merge, Subscription, Observable } from 'rxjs';
import { merge, Observable, Subscription } from 'rxjs';
import { debounceTime, filter, map } from 'rxjs/operators';
import {
CriteriaDataType,
CriteriaOperator,
ManagementRuleValidators,
diff,
MiscValidators,
Rule,
RuleService,
SearchCriteriaDto,
SearchCriteriaEltDto,
VitamuiSelectOptions,
diff,
} from 'vitamui-library';
import { ArchiveService } from '../../../../../archive.service';
import { UpdateUnitManagementRuleService } from '../../../../../common-services/update-unit-management-rule.service';
Expand Down Expand Up @@ -127,7 +127,7 @@ export class DeleteUnitRulesComponent implements OnDestroy, OnInit {
this.ruleDetailsForm = this.formBuilder.group({
rule: [
null,
[Validators.required, ManagementRuleValidators.ruleIdPattern],
[Validators.required, MiscValidators.requiredIdentifier],
[this.managementRulesValidatorService.uniqueRuleId(), this.managementRulesValidatorService.checkRuleIdExistence()],
],
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ const updateUnitManagementRuleServiceMock = jasmine.createSpyObj('UpdateUnitMana
const managementRulesValidatorServiceMock = jasmine.createSpyObj('ManagementRulesValidatorService', {
uniquePreventRuleId: () => of({}),
uniqueRuleId: () => of({}),
ruleIdPattern: () => of({}),
checkRuleIdExistence: () => of({}),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import {
CriteriaDataType,
CriteriaOperator,
diff,
ManagementRuleValidators,
MiscValidators,
Rule,
RuleService,
SearchCriteriaDto,
Expand Down Expand Up @@ -129,7 +129,7 @@ export class UnlockRulesInheritanceComponent implements OnDestroy, OnInit {
this.ruleDetailsForm = this.formBuilder.group({
rule: [
null,
[Validators.required, ManagementRuleValidators.ruleIdPattern],
[Validators.required, MiscValidators.requiredIdentifier],
[this.managementRulesValidatorService.uniquePreventRuleId(), this.managementRulesValidatorService.checkRuleIdExistence()],
],
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ const updateUnitManagementRuleServiceMock = jasmine.createSpyObj('UpdateUnitMana
const managementRulesValidatorServiceMock = jasmine.createSpyObj('ManagementRulesValidatorService', {
uniquePreventRuleId: () => of({}),
uniqueRuleId: () => of({}),
ruleIdPattern: () => of({}),
checkRuleIdExistence: () => of({}),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,23 +41,23 @@ import { TranslateService } from '@ngx-translate/core';
import { cloneDeep } from 'lodash-es';
import { finalize, merge, Observable, Subscription } from 'rxjs';
import { debounceTime, filter, map } from 'rxjs/operators';
import { ManagementRulesSharedDataService } from '../../../../../../core/management-rules-shared-data.service';
import { ArchiveService } from '../../../../../archive.service';
import { UpdateUnitManagementRuleService } from '../../../../../common-services/update-unit-management-rule.service';
import { ArchiveSearchConstsEnum } from '../../../../../models/archive-search-consts-enum';
import { ManagementRules, RuleAction, RuleActionsEnum, RuleCategoryAction } from '../../../../../models/ruleAction.interface';
import { ManagementRulesValidatorService } from '../../../../../validators/management-rules-validator.service';
import {
CriteriaDataType,
CriteriaOperator,
diff,
ManagementRuleValidators,
MiscValidators,
Rule,
RuleService,
SearchCriteriaDto,
SearchCriteriaEltDto,
VitamuiSelectOptions,
} from 'vitamui-library';
import { ManagementRulesSharedDataService } from '../../../../../../core/management-rules-shared-data.service';
import { ArchiveService } from '../../../../../archive.service';
import { UpdateUnitManagementRuleService } from '../../../../../common-services/update-unit-management-rule.service';
import { ArchiveSearchConstsEnum } from '../../../../../models/archive-search-consts-enum';
import { ManagementRules, RuleAction, RuleActionsEnum, RuleCategoryAction } from '../../../../../models/ruleAction.interface';
import { ManagementRulesValidatorService } from '../../../../../validators/management-rules-validator.service';

const MANAGEMENT_RULE_IDENTIFIER = 'MANAGEMENT_RULE_IDENTIFIER';
const ORIGIN_HAS_AT_LEAST_ONE = 'ORIGIN_HAS_AT_LEAST_ONE';
Expand Down Expand Up @@ -154,10 +154,10 @@ export class UpdateUnitRulesComponent implements OnDestroy, OnInit {
{
oldRule: [
null,
[Validators.required, ManagementRuleValidators.ruleIdPattern],
[Validators.required, MiscValidators.requiredIdentifier],
[this.managementRulesValidatorService.uniqueRuleId(), this.managementRulesValidatorService.checkRuleIdExistence()],
],
newRule: [null, [ManagementRuleValidators.ruleIdPattern], [this.managementRulesValidatorService.checkRuleIdExistence()]],
newRule: [null, [MiscValidators.requiredIdentifier], [this.managementRulesValidatorService.checkRuleIdExistence()]],
startDate: [null],
endDate: [{ value: null, disabled: true }],
ruleUpdated: [{ value: false, disabled: true }],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import {
CriteriaValue,
InjectorModule,
LoggerModule,
WINDOW_LOCATION,
Rule,
WINDOW_LOCATION,
} from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';
import { RuleValidator } from '../../rule.validator';
Expand All @@ -62,7 +62,6 @@ const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['close']);
const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

const ruleValidatorMock = jasmine.createSpyObj('RuleValidator', {
ruleIdPattern: () => of(),
uniqueRuleId: () => of(),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import {
CriteriaValue,
InjectorModule,
LoggerModule,
WINDOW_LOCATION,
Rule,
WINDOW_LOCATION,
} from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';
import { RuleValidator } from '../../rule.validator';
Expand All @@ -62,7 +62,6 @@ const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['close']);
const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

const ruleValidatorMock = jasmine.createSpyObj('RuleValidator', {
ruleIdPattern: () => of(),
uniqueRuleId: () => of(),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import {
CriteriaValue,
InjectorModule,
LoggerModule,
WINDOW_LOCATION,
Rule,
WINDOW_LOCATION,
} from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';
import { RuleValidator } from '../../rule.validator';
Expand All @@ -62,7 +62,6 @@ const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['close']);
const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

const ruleValidatorMock = jasmine.createSpyObj('RuleValidator', {
ruleIdPattern: () => of(),
uniqueRuleId: () => of(),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import {
CriteriaValue,
InjectorModule,
LoggerModule,
WINDOW_LOCATION,
Rule,
WINDOW_LOCATION,
} from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';
import { RuleValidator } from '../../rule.validator';
Expand All @@ -62,7 +62,6 @@ const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['close']);
const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

const ruleValidatorMock = jasmine.createSpyObj('RuleValidator', {
ruleIdPattern: () => of(),
uniqueRuleId: () => of(),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import {
CriteriaValue,
InjectorModule,
LoggerModule,
WINDOW_LOCATION,
Rule,
WINDOW_LOCATION,
} from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';
import { RuleValidator } from '../../rule.validator';
Expand All @@ -62,7 +62,6 @@ const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['close']);
const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);

const ruleValidatorMock = jasmine.createSpyObj('RuleValidator', {
ruleIdPattern: () => of(),
uniqueRuleId: () => of(),
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
* knowledge of the CeCILL-C license and that you accept its terms.
*/
import { Component } from '@angular/core';
import { InputComponent } from 'vitamui-library';
import { InputComponent, MiscValidators } from 'vitamui-library';
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';

@Component({
Expand Down Expand Up @@ -110,7 +110,7 @@ export class DesignSystemInputComponent {
}

private createControl(config?: { disabled?: boolean; error?: boolean; value?: any }): FormControl {
const validators = config?.error ? [Validators.required, Validators.pattern('.*TextContent.*')] : [];
const validators = config?.error ? [MiscValidators.requiredNotBlank, Validators.pattern('.*TextContent.*')] : [];

const fc = new FormControl(null, validators);
if (config?.disabled) fc.disable();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,38 +34,34 @@
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-C license and that you accept its terms.
*/
import { TestBed } from '@angular/core/testing';
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
import { ManagementRuleValidators } from './management-rule.validators';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { ReactiveFormsModule } from '@angular/forms';
import { ProfileInformationTabComponent } from './profile-information-tab.component';
import { ProfileService } from '../../../../core/services/profile.service';
import { MiscValidators, SnackBarService } from 'vitamui-library';
import { TranslateModule } from '@ngx-translate/core';

describe('ManagementRuleValidators', () => {
let formBuilder: FormBuilder;
describe('ProfileInformationTabComponent', () => {
let fixture: ComponentFixture<ProfileInformationTabComponent>;
let component: ProfileInformationTabComponent;

beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ReactiveFormsModule],
}).compileComponents();

formBuilder = TestBed.inject(FormBuilder);
});
beforeEach(waitForAsync(() => {
const profileServiceMock = jasmine.createSpyObj('ProfileService', ['updateProfilePa', 'updateProfilePua', 'refreshListProfiles']);

describe('ruleIdPattern', () => {
it('should detect allowed rule id pattern', () => {
const formGroup = formBuilder.group({
id: ['azerty', ManagementRuleValidators.ruleIdPattern],
});

expect(formGroup.valid).toBeTruthy('Form group must be valid');
expect(formGroup.get('id').errors).toBeNull('Id control must not have errors');
});
TestBed.configureTestingModule({
imports: [ReactiveFormsModule, TranslateModule.forRoot()],
declarations: [ProfileInformationTabComponent],
providers: [
{ provide: ProfileService, useValue: profileServiceMock },
{ provide: SnackBarService, useValue: {} },
],
}).compileComponents();

it('should detect not allowed rule id pattern', () => {
const formGroup = formBuilder.group({
id: ['ÀÖØöøÿ ', ManagementRuleValidators.ruleIdPattern],
});
fixture = TestBed.createComponent(ProfileInformationTabComponent);
component = fixture.componentInstance;
}));

expect(formGroup.invalid).toBeTruthy('Form group must be invalid');
expect(formGroup.get('id').errors).toBeTruthy('Id control must have errors');
});
it('applies MiscValidators.requiredIdentifier to identifier control', () => {
expect(component.form.get('identifier').hasValidator(MiscValidators.requiredIdentifier)).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export class ProfileInformationTabComponent {
private snackBarService: SnackBarService,
) {
this.form = this.formBuilder.group({
identifier: [null, [Validators.required, Validators.minLength(2), Validators.maxLength(10), MiscValidators.allowedIdentifier]],
identifier: [null, [MiscValidators.requiredIdentifier, Validators.minLength(2), Validators.maxLength(10)]],
id: [null, Validators.required],
type: [null],
description: [null],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dial
import { RouterTestingModule } from '@angular/router/testing';
import { TranslateModule } from '@ngx-translate/core';
import { of } from 'rxjs';
import { BASE_URL, LoggerModule, WINDOW_LOCATION } from 'vitamui-library';
import { BASE_URL, LoggerModule, MiscValidators, WINDOW_LOCATION } from 'vitamui-library';
import { PastisConfiguration } from '../../core/classes/pastis-configuration';
import { ProfileService } from '../../core/services/profile.service';

Expand Down Expand Up @@ -95,4 +95,8 @@ describe('CreateNoticeComponent', () => {
it('should create', () => {
expect(component).toBeTruthy();
});

it('applies MiscValidators.requiredIdentifier to identifier control', () => {
expect(component.form.get('identifier').hasValidator(MiscValidators.requiredIdentifier)).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export class CreateNoticeComponent implements OnInit, OnDestroy {
this.form = this.formBuilder.group({
identifier: [
{ value: this.notice.identifier, disabled: this.editNotice },
[Validators.required, Validators.minLength(2), Validators.maxLength(100), MiscValidators.allowedIdentifier],
[MiscValidators.requiredIdentifier, Validators.minLength(2), Validators.maxLength(100)],
],
name: [this.notice.name, Validators.required],
status: [this.notice.status],
Expand Down
Loading
Loading