+
diff --git a/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.compoment.ts b/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.compoment.ts
index a97cde6c3943..14caeebdc66a 100644
--- a/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.compoment.ts
+++ b/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.compoment.ts
@@ -11,6 +11,7 @@ import { SearchParams } from '@dotcms/edit-content/fields/dot-edit-content-relat
import { DotMessagePipe } from '@dotcms/ui';
import { LanguageFieldComponent } from './components/language-field/language-field.component';
+import { SiteFieldComponent } from './components/site-field/site-field.component';
/**
* A standalone component that provides search functionality with language and site filtering.
@@ -32,7 +33,8 @@ import { LanguageFieldComponent } from './components/language-field/language-fie
DotMessagePipe,
DropdownModule,
ReactiveFormsModule,
- LanguageFieldComponent
+ LanguageFieldComponent,
+ SiteFieldComponent
],
templateUrl: './search.compoment.html'
})
diff --git a/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.component.spec.ts b/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.component.spec.ts
index 07b358a2649f..0e8f2c149b9b 100644
--- a/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.component.spec.ts
+++ b/core-web/libs/edit-content/src/lib/fields/dot-edit-content-relationship-field/components/dot-select-existing-content/components/search/search.component.spec.ts
@@ -1,5 +1,6 @@
-import { createComponentFactory, Spectator } from '@ngneat/spectator/jest';
+import { createComponentFactory, mockProvider, Spectator } from '@ngneat/spectator/jest';
import { MockComponent } from 'ng-mocks';
+import { of } from 'rxjs';
import { ReactiveFormsModule } from '@angular/forms';
@@ -9,8 +10,12 @@ import { InputGroupModule } from 'primeng/inputgroup';
import { InputTextModule } from 'primeng/inputtext';
import { OverlayPanelModule } from 'primeng/overlaypanel';
+import { DotLanguagesService, DotMessageService } from '@dotcms/data-access';
import { SearchParams } from '@dotcms/edit-content/fields/dot-edit-content-relationship-field/models/search.model';
+import { TreeNodeItem } from '@dotcms/edit-content/models/dot-edit-content-host-folder-field.interface';
+import { DotEditContentService } from '@dotcms/edit-content/services/dot-edit-content.service';
import { DotMessagePipe } from '@dotcms/ui';
+import { MockDotMessageService, mockLocales } from '@dotcms/utils-testing';
import { LanguageFieldComponent } from './components/language-field/language-field.component';
import { SearchComponent } from './search.compoment';
@@ -19,6 +24,48 @@ describe('SearchComponent', () => {
let spectator: Spectator;
let component: SearchComponent;
+ const messageServiceMock = new MockDotMessageService({
+ 'dot.file.relationship.dialog.search.language.failed': 'Failed to load languages'
+ });
+
+ const mockSites: TreeNodeItem[] = [
+ {
+ label: 'demo.dotcms.com',
+ data: {
+ id: '123',
+ hostname: 'demo.dotcms.com',
+ path: '',
+ type: 'site'
+ },
+ icon: 'pi pi-globe',
+ leaf: false,
+ children: []
+ }
+ ];
+
+ const mockFolders = {
+ parent: {
+ id: 'parent-id',
+ hostName: 'demo.dotcms.com',
+ path: '/parent',
+ addChildrenAllowed: true
+ },
+ folders: [
+ {
+ label: 'folder1',
+ data: {
+ id: 'folder1',
+ hostname: 'demo.dotcms.com',
+ path: 'folder1',
+ type: 'folder' as const
+ },
+ icon: 'pi pi-folder',
+ leaf: true,
+ children: []
+ }
+ ]
+ };
+
const createComponent = createComponentFactory({
component: SearchComponent,
imports: [
@@ -31,7 +78,17 @@ describe('SearchComponent', () => {
],
declarations: [MockComponent(LanguageFieldComponent)],
mocks: [DotMessagePipe],
- detectChanges: true
+ detectChanges: true,
+ providers: [
+ { provide: DotMessageService, useValue: messageServiceMock },
+ mockProvider(DotEditContentService, {
+ getSitesTreePath: jest.fn().mockReturnValue(of(mockSites)),
+ getFoldersTreeNode: jest.fn().mockReturnValue(of(mockFolders))
+ }),
+ mockProvider(DotLanguagesService, {
+ get: jest.fn().mockReturnValue(of(mockLocales))
+ })
+ ]
});
beforeEach(() => {
@@ -155,7 +212,7 @@ describe('SearchComponent', () => {
component.form.patchValue({
query: 'test search',
languageId: 1,
- siteId: 'site1'
+ siteId: 'site123'
});
const openFiltersButton = spectator.query(
@@ -169,7 +226,7 @@ describe('SearchComponent', () => {
expect(searchSpy).toHaveBeenCalledWith({
query: 'test search',
languageId: 1,
- siteId: 'site1'
+ siteId: 'site123'
});
});
@@ -177,7 +234,7 @@ describe('SearchComponent', () => {
component.form.patchValue({
query: 'test query',
languageId: 1,
- siteId: 'site1'
+ siteId: 'site123'
});
const openFiltersButton = spectator.query(
diff --git a/dotCMS/src/main/webapp/WEB-INF/messages/Language.properties b/dotCMS/src/main/webapp/WEB-INF/messages/Language.properties
index 7109db6f36da..d97929fa9387 100644
--- a/dotCMS/src/main/webapp/WEB-INF/messages/Language.properties
+++ b/dotCMS/src/main/webapp/WEB-INF/messages/Language.properties
@@ -1236,6 +1236,8 @@ dot.file.relationship.dialog.search.btn.clear=Clear All
dot.file.relationship.dialog.search.btn.search=Search
dot.file.relationship.dialog.search.language.label=Language
dot.file.relationship.dialog.search.language.placeholder=Select Language
+dot.file.relationship.dialog.search.site.label=Site or Folder
+dot.file.relationship.dialog.search.site.placeholder=Select Site or Folder
dot.file.relationship.dialog.search.language.failed=Failed to load languages
dot.file.relationship.dialog.content.id.required=ContentId is required
dot.file.relationship.dialog.content.request.failed=Failed to load content