Skip to content
Closed
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 @@ -72,7 +72,7 @@ export interface ContainerPayload {
identifier: string;
contentletsId?: string[];
maxContentlets: number;
variantId: string;
variantId?: string; // Optional: containers don't have variantId, use page-level variantId instead
uuid: string;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ import {
MOCK_RESPONSE_HEADLESS,
MOCK_RESPONSE_VTL
} from '../../../shared/mocks';
import { ActionPayload } from '../../../shared/models';
import { ActionPayload, ContainerPayload } from '../../../shared/models';
import { getPersonalization, mapContainerStructureToArrayOfContainers } from '../../../utils';
import { UVEState } from '../../models';
import { withPageContext } from '../withPageContext';

const emptyParams = {} as DotPageApiParams;

Expand Down Expand Up @@ -64,6 +65,7 @@ const mockCanEditPage = signal(true);
export const uveStoreMock = signalStore(
{ protectedState: false },
withState<UVEState>(initialState),
withPageContext(),
withComputed(() => {
return {
$canEditPage: computed(() => mockCanEditPage())
Expand Down Expand Up @@ -933,19 +935,68 @@ describe('withEditor', () => {
});

describe('getCurrentTreeNode', () => {
it('should return the current TreeNode', () => {
it('should return the current TreeNode with variantId from store.$variantId()', () => {
const { container, contentlet } = ACTION_PAYLOAD_MOCK;

// When variantId is not set in pageParams, $variantId() returns empty string
expect(store.getCurrentTreeNode(container, contentlet)).toEqual({
containerId: 'container-identifier-123',
contentId: 'contentlet-identifier-123',
pageId: '123',
personalization: 'dot:persona:dot:persona',
relationType: 'uuid-123',
treeOrder: '-1',
variantId: '123'
variantId: '' // Uses store.$variantId() which comes from pageParams()?.variantId ?? ''
});
});

it('should use variantId from store.$variantId() when variantId is set in pageParams', () => {
const { container, contentlet } = ACTION_PAYLOAD_MOCK;
const testVariantId = 'test-variant-id-123';

// Set variantId in pageParams
patchState(store, {
pageParams: {
...store.pageParams(),
variantId: testVariantId
}
});

const result = store.getCurrentTreeNode(container, contentlet);

expect(result.variantId).toBe(testVariantId);
expect(result).toEqual({
containerId: 'container-identifier-123',
contentId: 'contentlet-identifier-123',
pageId: '123',
personalization: 'dot:persona:dot:persona',
relationType: 'uuid-123',
treeOrder: '-1',
variantId: testVariantId
});
});

it('should not use variantId from container payload', () => {
const { contentlet } = ACTION_PAYLOAD_MOCK;
// Create a container with a different variantId to verify it's not used
const containerWithVariantId: ContainerPayload = {
...ACTION_PAYLOAD_MOCK.container,
variantId: 'container-variant-id-should-not-be-used'
};

const testVariantId = 'store-variant-id';
patchState(store, {
pageParams: {
...store.pageParams(),
variantId: testVariantId
}
});

const result = store.getCurrentTreeNode(containerWithVariantId, contentlet);

expect(result.variantId).toBe(testVariantId);
expect(result.variantId).not.toBe(containerWithVariantId.variantId);
});
});

describe('setOgTags', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -355,13 +355,13 @@ export function withEditor() {
): DotTreeNode {
const { identifier: contentId } = contentlet;
const {
variantId,
uuid: relationType,
contentletsId,
identifier: containerId
} = container;

const { personalization, id: pageId } = store.$pageData();
const variantId = store.$variantId();

const treeOrder = contentletsId.findIndex((id) => id === contentId).toString();

Expand Down
1 change: 0 additions & 1 deletion core-web/libs/sdk/types/src/lib/editor/public.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,5 +219,4 @@ export interface EditableContainerData {
identifier: string;
acceptTypes: string;
maxContentlets: number;
variantId?: string;
}
4 changes: 0 additions & 4 deletions core-web/libs/sdk/uve/src/lib/dom/dom.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,6 @@ describe('getContainersData', () => {
containerStructures: [{ contentTypeVar: 'type1' }, { contentTypeVar: 'type2' }],
container: {
maxContentlets: 5,
parentPermissionable: {
variantId: 'variant-1'
},
path: '/test/path'
}
}
Expand All @@ -388,7 +385,6 @@ describe('getContainersData', () => {

expect(result).toEqual({
uuid: '123',
variantId: 'variant-1',
acceptTypes: 'type1,type2',
maxContentlets: 5,
identifier: '/test/path'
Expand Down
4 changes: 0 additions & 4 deletions core-web/libs/sdk/uve/src/lib/dom/dom.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,15 +318,11 @@ export const getContainersData = (
const acceptTypes =
containerStructures?.map((structure) => structure.contentTypeVar).join(',') ?? '';

// TODO: Check if the variantId is needed and we need to find another way to get it.
// Since the parentPermissionable is not available after: https://github.com/dotCMS/core/pull/32890
const variantId = container?.parentPermissionable?.variantId;
const maxContentlets = container?.maxContentlets ?? 0;
const path = container?.path;

return {
uuid,
variantId,
acceptTypes,
maxContentlets,
identifier: path ?? identifier
Expand Down
Loading
Loading