Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the StackMainContent component #2754

Open
wants to merge 1 commit into
base: grid-and-form-layout-examples
Choose a base branch
from

Add the `StackMainContent` component

eadd5f0
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Open

Add the StackMainContent component #2754

Add the `StackMainContent` component
eadd5f0
Select commit
Loading
Failed to load commit list.
GitHub Actions / Tests succeeded Nov 15, 2024 in 0s

208 passed, 0 failed and 1 skipped

Tests passed successfully

Report Passed Failed Skipped Time
admin/admin-rte/junit.xml 7✅ 12s
admin/blocks-admin/junit.xml 3✅ 13s
admin/cms-admin/junit.xml 16✅ 1⚪ 9s
admin/cms-admin/node_modules/@comet/admin-rte/junit.xml 7✅ 12s
admin/cms-admin/node_modules/@comet/blocks-admin/junit.xml 3✅ 13s
api/blocks-api/junit.xml 7✅ 5s
api/cms-api/junit.xml 151✅ 90s
api/cms-api/node_modules/@comet/blocks-api/junit.xml 7✅ 5s
site/cms-site/junit.xml 7✅ 7s

✅ admin/admin-rte/junit.xml

7 tests were completed in 12s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
htmlToState 1✅ 11s
stateToHtml 6✅ 11s

✅ htmlToState

htmlToState should convert html to state to html with the html staying the same
  ✅ htmlToState should convert html to state to html with the html staying the same

✅ stateToHtml

stateToHtml should convert the rte editor state with styling into html while keeping the format via tags - formats part 1
  ✅ stateToHtml should convert the rte editor state with styling into html while keeping the format via tags - formats part 1
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 2 (unordered list)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 2 (unordered list)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 3 (ordered list)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 3 (ordered list)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 4 (links)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 4 (links)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 5 (custom styles)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 5 (custom styles)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 6 (custom block styles)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 6 (custom block styles)

✅ admin/blocks-admin/junit.xml

3 tests were completed in 13s with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
composeBlocks 2✅ 12s
createCompositeSetting 1✅ 9s

✅ composeBlocks

composeBlocks composes values of 1 BlockInterface and 1 settings - flattened
  ✅ composeBlocks composes values of 1 BlockInterface and 1 settings - flattened
composeBlocks composes values of 1 BlockInterface and 1 setting with value undefined
  ✅ composeBlocks composes values of 1 BlockInterface and 1 setting with value undefined

✅ createCompositeSetting

createCompositeSetting should work with an array value
  ✅ createCompositeSetting should work with an array value

✅ admin/cms-admin/junit.xml

17 tests were completed in 9s with 16 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
createImageLinkBlock 1⚪ 432ms
TreeMapUtils 3✅ 8s
TreeMapUtils 5✅ 8s
TreeMapUtils 8✅ 9s

✅ createImageLinkBlock

createImageLinkBlock should allow overriding the name
  ⚪ createImageLinkBlock should allow overriding the name

✅ TreeMapUtils

TreeMapUtils subTreeFromNodes  - empty
  ✅ TreeMapUtils subTreeFromNodes  - empty
TreeMapUtils subTreeFromNodes  - first level
  ✅ TreeMapUtils subTreeFromNodes  - first level
TreeMapUtils subTreeFromNodes - nested levels
  ✅ TreeMapUtils subTreeFromNodes - nested levels

✅ TreeMapUtils

TreeMapUtils subTreeFromNodes  - empty
  ✅ TreeMapUtils subTreeFromNodes  - empty
TreeMapUtils subTreeFromNodes  - first level
  ✅ TreeMapUtils subTreeFromNodes  - first level
TreeMapUtils subTreeFromNodes - nested levels
  ✅ TreeMapUtils subTreeFromNodes - nested levels
TreeMap traverse pre order
  ✅ TreeMap traverse pre order
TreeMap traverse post order
  ✅ TreeMap traverse post order

✅ TreeMapUtils

TreeMapUtils subTreeFromNodes  - empty
  ✅ TreeMapUtils subTreeFromNodes  - empty
TreeMapUtils subTreeFromNodes  - first level
  ✅ TreeMapUtils subTreeFromNodes  - first level
TreeMapUtils subTreeFromNodes - nested levels
  ✅ TreeMapUtils subTreeFromNodes - nested levels
areAllSubTreesFullSelected nothing selected
  ✅ areAllSubTreesFullSelected nothing selected
areAllSubTreesFullSelected everything selected
  ✅ areAllSubTreesFullSelected everything selected
areAllSubTreesFullSelected sub tree selected
  ✅ areAllSubTreesFullSelected sub tree selected
areAllSubTreesFullSelected nested leaf selected
  ✅ areAllSubTreesFullSelected nested leaf selected
areAllSubTreesFullSelected nested not selected
  ✅ areAllSubTreesFullSelected nested not selected

✅ admin/cms-admin/node_modules/@comet/admin-rte/junit.xml

7 tests were completed in 12s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
htmlToState 1✅ 11s
stateToHtml 6✅ 11s

✅ htmlToState

htmlToState should convert html to state to html with the html staying the same
  ✅ htmlToState should convert html to state to html with the html staying the same

✅ stateToHtml

stateToHtml should convert the rte editor state with styling into html while keeping the format via tags - formats part 1
  ✅ stateToHtml should convert the rte editor state with styling into html while keeping the format via tags - formats part 1
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 2 (unordered list)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 2 (unordered list)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 3 (ordered list)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 3 (ordered list)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 4 (links)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 4 (links)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 5 (custom styles)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 5 (custom styles)
stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 6 (custom block styles)
  ✅ stateToHtml should convert the rte editor state with formating into html while keeping the format via tags - formats part 6 (custom block styles)

✅ admin/cms-admin/node_modules/@comet/blocks-admin/junit.xml

3 tests were completed in 13s with 3 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
composeBlocks 2✅ 12s
createCompositeSetting 1✅ 9s

✅ composeBlocks

composeBlocks composes values of 1 BlockInterface and 1 settings - flattened
  ✅ composeBlocks composes values of 1 BlockInterface and 1 settings - flattened
composeBlocks composes values of 1 BlockInterface and 1 setting with value undefined
  ✅ composeBlocks composes values of 1 BlockInterface and 1 setting with value undefined

✅ createCompositeSetting

createCompositeSetting should work with an array value
  ✅ createCompositeSetting should work with an array value

✅ api/blocks-api/junit.xml

7 tests were completed in 5s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
FlatBlocks 2✅ 5s
Search 3✅ 5s
transform to save index 2✅ 5s

✅ FlatBlocks

FlatBlocks visits all BlockData-references breadth first
  ✅ FlatBlocks visits all BlockData-references breadth first
FlatBlocks visits childblocks of blockBlock
  ✅ FlatBlocks visits childblocks of blockBlock

✅ Search

Search gets SearchData
  ✅ Search gets SearchData
Search gets SearchData and respects invisible blocks
  ✅ Search gets SearchData and respects invisible blocks
Search gets SearchData and respects nested invisible blocks
  ✅ Search gets SearchData and respects nested invisible blocks

✅ transform to save index

transform to save index build correctly
  ✅ transform to save index build correctly
transform to save index extract id of DamFile
  ✅ transform to save index extract id of DamFile

✅ api/cms-api/junit.xml

151 tests were completed in 90s with 151 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
AbstractAccessControlService 1✅ 746ms
BuildsService 5✅ 3s
createImageLinkBlock 1✅ 1s
Files Utils 3✅ 1s
generate-crud relations two levels 1✅ 5s
GenerateCrud 4✅ 7s
GenerateCrud dedicatedResolverArg 3✅ 7s
GenerateCrud Relation n:m with additional column 2✅ 6s
GenerateCrud Status with active 5✅ 14s
GenerateCrud with ScopedEntity 2✅ 5s
GenerateCrud without find condition 1✅ 4s
GenerateCrudEnumArray 2✅ 13s
GenerateCrudEnumMultiUse 1✅ 9s
GenerateCrudEnumOptional 1✅ 12s
GenerateCrudInput 8✅ 26s
GenerateCrudInputArray 1✅ 10s
GenerateCrudInputEmbedded 6✅ 18s
GenerateCrudInputInteger 1✅ 4s
GenerateCrudInputJson 3✅ 10s
GenerateCrudInputRelations 2✅ 4s
GenerateCrudPosition 4✅ 11s
GenerateCrudRelations 3✅ 7s
GenerateCrudRelationsIdNumber 2✅ 6s
GenerateCrudRelationsIdString 1✅ 5s
GenerateCrudRelationsMultiUse 1✅ 4s
GenerateCrudRelationsNested 1✅ 4s
GenerateCrudResolveField 1✅ 3s
GenerateCrudResolveIdInteger 1✅ 4s
GenerateDefinedValidatorDecorators 6✅ 31s
IsSlug 3✅ 909ms
KubernetesJobsService 2✅ 2s
PageTreeReadApi 11✅ 1s
RootBlockDataScalar 2✅ 3s
RootBlockInputScalar 2✅ 6s
splitSearchString 32✅ 938ms
UserPermissionsGuard 26✅ 16s

✅ AbstractAccessControlService

AbstractAccessControlService isAllowed should treat null and undefined scope dimensions the same
  ✅ AbstractAccessControlService isAllowed should treat null and undefined scope dimensions the same

✅ BuildsService

BuildsService getBuilderCronJobsToStart should return single job for exact match
  ✅ BuildsService getBuilderCronJobsToStart should return single job for exact match
BuildsService getBuilderCronJobsToStart should return two jobs if two jobs have the exact same scope
  ✅ BuildsService getBuilderCronJobsToStart should return two jobs if two jobs have the exact same scope
BuildsService getBuilderCronJobsToStart should return multiple jobs for multiple exact matches
  ✅ BuildsService getBuilderCronJobsToStart should return multiple jobs for multiple exact matches
BuildsService getBuilderCronJobsToStart should return all partially matching jobs
  ✅ BuildsService getBuilderCronJobsToStart should return all partially matching jobs
BuildsService getBuilderCronJobsToStart should throw an error if no job is found
  ✅ BuildsService getBuilderCronJobsToStart should throw an error if no job is found

✅ createImageLinkBlock

createImageLinkBlock should allow overriding the name
  ✅ createImageLinkBlock should allow overriding the name

✅ Files Utils

Files Utils svgContainsJavaScript should return false if the svg doesn't contain a script tag or event handler
  ✅ Files Utils svgContainsJavaScript should return false if the svg doesn't contain a script tag or event handler
Files Utils svgContainsJavaScript should return true if the svg contains a script tag
  ✅ Files Utils svgContainsJavaScript should return true if the svg contains a script tag
Files Utils svgContainsJavaScript should return true if the svg contains an event handler
  ✅ Files Utils svgContainsJavaScript should return true if the svg contains an event handler

✅ generate-crud relations two levels

generate-crud relations two levels should be a valid generated ts file
  ✅ generate-crud relations two levels should be a valid generated ts file

✅ GenerateCrud

GenerateCrud resolver class should be a valid generated ts file
  ✅ GenerateCrud resolver class should be a valid generated ts file
GenerateCrud string filter should be a valid generated ts file
  ✅ GenerateCrud string filter should be a valid generated ts file
GenerateCrud number filter should be a valid generated ts file
  ✅ GenerateCrud number filter should be a valid generated ts file
GenerateCrud text type filter should be a valid generated ts file
  ✅ GenerateCrud text type filter should be a valid generated ts file

✅ GenerateCrud dedicatedResolverArg

GenerateCrud dedicatedResolverArg resolver class input type must not include product relation
  ✅ GenerateCrud dedicatedResolverArg resolver class input type must not include product relation
GenerateCrud dedicatedResolverArg resolver class query list must include product arg
  ✅ GenerateCrud dedicatedResolverArg resolver class query list must include product arg
GenerateCrud dedicatedResolverArg resolver class create mutation must include product arg
  ✅ GenerateCrud dedicatedResolverArg resolver class create mutation must include product arg

✅ GenerateCrud Relation n:m with additional column

GenerateCrud Relation n:m with additional column should inject 2 nested deep repository
  ✅ GenerateCrud Relation n:m with additional column should inject 2 nested deep repository
GenerateCrud Relation n:m with additional column should call loadItems on collection
  ✅ GenerateCrud Relation n:m with additional column should call loadItems on collection

✅ GenerateCrud Status with active

GenerateCrud Status with active input should contain status
  ✅ GenerateCrud Status with active input should contain status
GenerateCrud Status with active resolver should not include update status mutation
  ✅ GenerateCrud Status with active resolver should not include update status mutation
GenerateCrud Status with active args should use status enum as defined for enitity
  ✅ GenerateCrud Status with active args should use status enum as defined for enitity
GenerateCrud Status with published/unpublished args should include default value
  ✅ GenerateCrud Status with published/unpublished args should include default value
GenerateCrud Status with published/unpublished args should not include status filter as all are active ones
  ✅ GenerateCrud Status with published/unpublished args should not include status filter as all are active ones

✅ GenerateCrud with ScopedEntity

GenerateCrud with ScopedEntity resolver must not have skipScopeCheck
  ✅ GenerateCrud with ScopedEntity resolver must not have skipScopeCheck
GenerateCrud with Scope resolver must not have skipScopeCheck
  ✅ GenerateCrud with Scope resolver must not have skipScopeCheck

✅ GenerateCrud without find condition

GenerateCrud without find condition where should be typed as ObjectQuery as it is when findCondition is used
  ✅ GenerateCrud without find condition where should be typed as ObjectQuery as it is when findCondition is used

✅ GenerateCrudEnumArray

GenerateCrudEnumArray should correctly add EnumArrayType in input type
  ✅ GenerateCrudEnumArray should correctly add EnumArrayType in input type
GenerateCrudEnumArray should correctly add EnumArrayType in filter type
  ✅ GenerateCrudEnumArray should correctly add EnumArrayType in filter type

✅ GenerateCrudEnumMultiUse

GenerateCrudEnumMultiUse should import a enum reference only once if used multiple times
  ✅ GenerateCrudEnumMultiUse should import a enum reference only once if used multiple times

✅ GenerateCrudEnumOptional

GenerateCrudEnumOptional should correctly determine enum import path
  ✅ GenerateCrudEnumOptional should correctly determine enum import path

✅ GenerateCrudInput

GenerateCrudInput string input class should be a valid generated ts file
  ✅ GenerateCrudInput string input class should be a valid generated ts file
GenerateCrudInput date input class should be a valid generated ts file
  ✅ GenerateCrudInput date input class should be a valid generated ts file
GenerateCrudInput boolean input class should be a valid generated ts file
  ✅ GenerateCrudInput boolean input class should be a valid generated ts file
GenerateCrudInput enum input class should be a valid generated ts file
  ✅ GenerateCrudInput enum input class should be a valid generated ts file
GenerateCrudInput uuid input class should be a valid generated ts file
  ✅ GenerateCrudInput uuid input class should be a valid generated ts file
GenerateCrudInput text type input class should be a valid generated ts file
  ✅ GenerateCrudInput text type input class should be a valid generated ts file
GenerateCrudInput nullable props input class with initializer should be a valid generated ts file
  ✅ GenerateCrudInput nullable props input class with initializer should be a valid generated ts file
GenerateCrudInput nullable props input class without initializer should be a valid generated ts file
  ✅ GenerateCrudInput nullable props input class without initializer should be a valid generated ts file

✅ GenerateCrudInputArray

GenerateCrudInputArray should support all string array variants
  ✅ GenerateCrudInputArray should support all string array variants

✅ GenerateCrudInputEmbedded

GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object filter for embedded field should exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object filter for embedded field should exist
GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object input for embedded field should exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object input for embedded field should exist
GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object sort for embedded field should exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input enabled for embedded object sort for embedded field should exist
GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object filter for embedded field should not exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object filter for embedded field should not exist
GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object input for embedded field should not exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object input for embedded field should not exist
GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object sort for embedded field should not exist
  ✅ GenerateCrudInputEmbedded crud classes with sort, filter, input disabled for embedded object sort for embedded field should not exist

✅ GenerateCrudInputInteger

GenerateCrudInputInteger should generate correct input type for integer values
  ✅ GenerateCrudInputInteger should generate correct input type for integer values

✅ GenerateCrudInputJson

GenerateCrudInputJson input class literal array should be a valid generated ts file
  ✅ GenerateCrudInputJson input class literal array should be a valid generated ts file
GenerateCrudInputJson input class json object should be a valid generated ts file
  ✅ GenerateCrudInputJson input class json object should be a valid generated ts file
GenerateCrudInputJson input class record should be a valid generated ts file
  ✅ GenerateCrudInputJson input class record should be a valid generated ts file

✅ GenerateCrudInputRelations

GenerateCrudInputRelations n:1 input dto should contain relation id
  ✅ GenerateCrudInputRelations n:1 input dto should contain relation id
GenerateCrudInputRelations 1:n input dto should contain relation id
  ✅ GenerateCrudInputRelations 1:n input dto should contain relation id

✅ GenerateCrudPosition

GenerateCrudPosition input should contain optional position with Int and Min(1)
  ✅ GenerateCrudPosition input should contain optional position with Int and Min(1)
GenerateCrudPosition service should implement position-functions
  ✅ GenerateCrudPosition service should implement position-functions
GenerateCrudPosition service should implement getPositionGroupCondition-function if scope existent
  ✅ GenerateCrudPosition service should implement getPositionGroupCondition-function if scope existent
GenerateCrudPosition service should implement getPositionGroupCondition-function if configured
  ✅ GenerateCrudPosition service should implement getPositionGroupCondition-function if configured

✅ GenerateCrudRelations

GenerateCrudRelations resolver class should be a valid generated ts file
  ✅ GenerateCrudRelations resolver class should be a valid generated ts file
  ✅ GenerateCrudRelations resolver class should be a valid generated ts file
GenerateCrudRelations resolver class input type to category relation should be string with uuid validator
  ✅ GenerateCrudRelations resolver class input type to category relation should be string with uuid validator

✅ GenerateCrudRelationsIdNumber

GenerateCrudRelationsIdNumber resolver class input type to category relation with primary key type integer should be number with integer validator
  ✅ GenerateCrudRelationsIdNumber resolver class input type to category relation with primary key type integer should be number with integer validator
GenerateCrudRelationsIdNumber resolver class input type to category relation with primary key type int should be number with integer validator
  ✅ GenerateCrudRelationsIdNumber resolver class input type to category relation with primary key type int should be number with integer validator

✅ GenerateCrudRelationsIdString

GenerateCrudRelationsIdString resolver class input type to category relation should be string with isString and not IsUuid validator
  ✅ GenerateCrudRelationsIdString resolver class input type to category relation should be string with isString and not IsUuid validator

✅ GenerateCrudRelationsMultiUse

GenerateCrudRelationsMultiUse should import a relation reference only once if used multiple times
  ✅ GenerateCrudRelationsMultiUse should import a relation reference only once if used multiple times

✅ GenerateCrudRelationsNested

GenerateCrudRelationsNested resolver class should be a valid generated ts file
  ✅ GenerateCrudRelationsNested resolver class should be a valid generated ts file

✅ GenerateCrudResolveField

GenerateCrudResolveField Resolve field should not include categories in resolver
  ✅ GenerateCrudResolveField Resolve field should not include categories in resolver

✅ GenerateCrudResolveIdInteger

GenerateCrudResolveIdInteger should generate item resolver with correctly typed id parameter
  ✅ GenerateCrudResolveIdInteger should generate item resolver with correctly typed id parameter

✅ GenerateDefinedValidatorDecorators

GenerateDefinedValidatorDecorators simple validator should set IsEmail decorator
  ✅ GenerateDefinedValidatorDecorators simple validator should set IsEmail decorator
GenerateDefinedValidatorDecorators simple validator case sensitive validator should set IsISO8601 decorator
  ✅ GenerateDefinedValidatorDecorators simple validator case sensitive validator should set IsISO8601 decorator
GenerateDefinedValidatorDecorators simple validator shortened decorator name should set Length decorator
  ✅ GenerateDefinedValidatorDecorators simple validator shortened decorator name should set Length decorator
GenerateDefinedValidatorDecorators simple validator decorator with arguments should set defined arguments
  ✅ GenerateDefinedValidatorDecorators simple validator decorator with arguments should set defined arguments
GenerateDefinedValidatorDecorators simple validator relative path should set IsValidRedirectSource decorator
  ✅ GenerateDefinedValidatorDecorators simple validator relative path should set IsValidRedirectSource decorator
GenerateDefinedValidatorDecorators validator defined in file should set IsTrueAsString decorator
  ✅ GenerateDefinedValidatorDecorators validator defined in file should set IsTrueAsString decorator

✅ IsSlug

IsSlug findAll should accept a valid slug
  ✅ IsSlug findAll should accept a valid slug
IsSlug findAll should not accept space
  ✅ IsSlug findAll should not accept space
IsSlug findAll should not accept umlaut
  ✅ IsSlug findAll should not accept umlaut

✅ KubernetesJobsService

KubernetesJobsService should create job name with full date
  ✅ KubernetesJobsService should create job name with full date
KubernetesJobsService should shorten job name if result would be longer than 63 chars
  ✅ KubernetesJobsService should shorten job name if result would be longer than 63 chars

✅ PageTreeReadApi

PageTreeReadApi sortPreloadedNodes should skip sorting if only sort criteria is by pos ascending
  ✅ PageTreeReadApi sortPreloadedNodes should skip sorting if only sort criteria is by pos ascending
PageTreeReadApi sortPreloadedNodes should sort by pos descending
  ✅ PageTreeReadApi sortPreloadedNodes should sort by pos descending
PageTreeReadApi sortPreloadedNodes should sort by updatedAt ascending
  ✅ PageTreeReadApi sortPreloadedNodes should sort by updatedAt ascending
PageTreeReadApi sortPreloadedNodes should sort by updatedAt descending
  ✅ PageTreeReadApi sortPreloadedNodes should sort by updatedAt descending
PageTreeReadApi sortPreloadedNodes should sort first by position, then by updatedAt
  ✅ PageTreeReadApi sortPreloadedNodes should sort first by position, then by updatedAt
PageTreeReadApi sortPreloadedNodes should sort first by updatedAt, then by position
  ✅ PageTreeReadApi sortPreloadedNodes should sort first by updatedAt, then by position
PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return [1] with offset 0 limit 1
  ✅ PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return [1] with offset 0 limit 1
PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return [2, 3] with offset 1 limit 2
  ✅ PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return [2, 3] with offset 1 limit 2
PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return empty array with offset 3 limit 1
  ✅ PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with correct offset and limit options Should return empty array with offset 3 limit 1
PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with incorrect offset and limit options Should throw Error with offset -1 limit 2
  ✅ PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with incorrect offset and limit options Should throw Error with offset -1 limit 2
PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with incorrect offset and limit options Should throw Error with offset 1 limit -1
  ✅ PageTreeReadApi paginatePreloadedNodes Nodes [1, 2, 3] with incorrect offset and limit options Should throw Error with offset 1 limit -1

✅ RootBlockDataScalar

RootBlockDataScalar should work
  ✅ RootBlockDataScalar should work
RootBlockDataScalar should work with multiple instances of the same scalar
  ✅ RootBlockDataScalar should work with multiple instances of the same scalar

✅ RootBlockInputScalar

RootBlockInputScalar should work
  ✅ RootBlockInputScalar should work
RootBlockInputScalar should work with multiple instances of the same scalar
  ✅ RootBlockInputScalar should work with multiple instances of the same scalar

✅ splitSearchString

splitSearchString should split a simple space-separated string
  ✅ splitSearchString should split a simple space-separated string
splitSearchString should handle quoted strings as single tokens
  ✅ splitSearchString should handle quoted strings as single tokens
splitSearchString should handle escaped quotes within quoted strings
  ✅ splitSearchString should handle escaped quotes within quoted strings
splitSearchString should handle single quotes
  ✅ splitSearchString should handle single quotes
splitSearchString should handle escaped quotes within single quoted strings
  ✅ splitSearchString should handle escaped quotes within single quoted strings
splitSearchString should handle mixed quotes
  ✅ splitSearchString should handle mixed quotes
splitSearchString should handle empty strings
  ✅ splitSearchString should handle empty strings
splitSearchString should handle strings with special characters
  ✅ splitSearchString should handle strings with special characters
splitSearchString should handle strings with only special characters
  ✅ splitSearchString should handle strings with only special characters
searchToMikroOrmQuery should work
  ✅ searchToMikroOrmQuery should work
searchToMikroOrmQuery should escape %
  ✅ searchToMikroOrmQuery should escape %
searchToMikroOrmQuery should escape _
  ✅ searchToMikroOrmQuery should escape _
searchToMikroOrmQuery should split by spaces
  ✅ searchToMikroOrmQuery should split by spaces
searchToMikroOrmQuery should ignore leading and trailing spaces
  ✅ searchToMikroOrmQuery should ignore leading and trailing spaces
filterToMikroOrmQuery string equal
  ✅ filterToMikroOrmQuery string equal
filterToMikroOrmQuery string not equal
  ✅ filterToMikroOrmQuery string not equal
filterToMikroOrmQuery string contains
  ✅ filterToMikroOrmQuery string contains
filterToMikroOrmQuery string contains escape %
  ✅ filterToMikroOrmQuery string contains escape %
filterToMikroOrmQuery string contains escape _
  ✅ filterToMikroOrmQuery string contains escape _
filterToMikroOrmQuery string starts with
  ✅ filterToMikroOrmQuery string starts with
filterToMikroOrmQuery string ends with
  ✅ filterToMikroOrmQuery string ends with
filterToMikroOrmQuery string starts with and contains
  ✅ filterToMikroOrmQuery string starts with and contains
filterToMikroOrmQuery number equals
  ✅ filterToMikroOrmQuery number equals
filterToMikroOrmQuery number not equals
  ✅ filterToMikroOrmQuery number not equals
filterToMikroOrmQuery number gt
  ✅ filterToMikroOrmQuery number gt
filterToMikroOrmQuery boolean equals
  ✅ filterToMikroOrmQuery boolean equals
filtersToMikroOrmQuery string equal
  ✅ filtersToMikroOrmQuery string equal
filtersToMikroOrmQuery and filter
  ✅ filtersToMikroOrmQuery and filter
filtersToMikroOrmQuery or filter
  ✅ filtersToMikroOrmQuery or filter
filtersToMikroOrmQuery custom apply filter
  ✅ filtersToMikroOrmQuery custom apply filter
filtersToMikroOrmQuery custom apply filter with default fallback
  ✅ filtersToMikroOrmQuery custom apply filter with default fallback
filtersToMikroOrmQuery empty filter
  ✅ filtersToMikroOrmQuery empty filter

✅ UserPermissionsGuard

UserPermissionsGuard allows bypassing
  ✅ UserPermissionsGuard allows bypassing
UserPermissionsGuard denies if no user is provided
  ✅ UserPermissionsGuard denies if no user is provided
UserPermissionsGuard allows user with exact permission
  ✅ UserPermissionsGuard allows user with exact permission
UserPermissionsGuard allows user with at least one permission
  ✅ UserPermissionsGuard allows user with at least one permission
UserPermissionsGuard denies user with a wrong permission
  ✅ UserPermissionsGuard denies user with a wrong permission
UserPermissionsGuard denies user with only a partial permission
  ✅ UserPermissionsGuard denies user with only a partial permission
UserPermissionsGuard denies user with empty permission
  ✅ UserPermissionsGuard denies user with empty permission
UserPermissionsGuard denies user without permissions
  ✅ UserPermissionsGuard denies user without permissions
UserPermissionsGuard allows user with at least one of the required permissions
  ✅ UserPermissionsGuard allows user with at least one of the required permissions
UserPermissionsGuard denies user without one the the required permissions
  ✅ UserPermissionsGuard denies user without one the the required permissions
UserPermissionsGuard allows user with scope
  ✅ UserPermissionsGuard allows user with scope
UserPermissionsGuard allows user with scope when submitted scope is partial
  ✅ UserPermissionsGuard allows user with scope when submitted scope is partial
UserPermissionsGuard allows user with scope when submitted scope is empty
  ✅ UserPermissionsGuard allows user with scope when submitted scope is empty
UserPermissionsGuard denies user with wrong scope
  ✅ UserPermissionsGuard denies user with wrong scope
UserPermissionsGuard denies user with a partial scope
  ✅ UserPermissionsGuard denies user with a partial scope
UserPermissionsGuard allows user by affected entity
  ✅ UserPermissionsGuard allows user by affected entity
UserPermissionsGuard denies user with wrong scope by affected entity
  ✅ UserPermissionsGuard denies user with wrong scope by affected entity
UserPermissionsGuard allows user by multiple affected entities
  ✅ UserPermissionsGuard allows user by multiple affected entities
UserPermissionsGuard denies user without all requried scopes by multiple affected entities
  ✅ UserPermissionsGuard denies user without all requried scopes by multiple affected entities
UserPermissionsGuard allows user by scoped entity
  ✅ UserPermissionsGuard allows user by scoped entity
UserPermissionsGuard denies user with wrong scope by scoped entity
  ✅ UserPermissionsGuard denies user with wrong scope by scoped entity
UserPermissionsGuard allows user by multiple scopes from one scoped entity
  ✅ UserPermissionsGuard allows user by multiple scopes from one scoped entity
UserPermissionsGuard denies user with wrong scope by multiple scopes from one scoped entity
  ✅ UserPermissionsGuard denies user with wrong scope by multiple scopes from one scoped entity
UserPermissionsGuard fails when RequiredPermission decorator is missing
  ✅ UserPermissionsGuard fails when RequiredPermission decorator is missing
UserPermissionsGuard fails when RequiredPermission decorator has empty permissions
  ✅ UserPermissionsGuard fails when RequiredPermission decorator has empty permissions
UserPermissionsGuard fails when Content Scope cannot be acquired
  ✅ UserPermissionsGuard fails when Content Scope cannot be acquired

✅ api/cms-api/node_modules/@comet/blocks-api/junit.xml

7 tests were completed in 5s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
FlatBlocks 2✅ 5s
Search 3✅ 5s
transform to save index 2✅ 5s

✅ FlatBlocks

FlatBlocks visits all BlockData-references breadth first
  ✅ FlatBlocks visits all BlockData-references breadth first
FlatBlocks visits childblocks of blockBlock
  ✅ FlatBlocks visits childblocks of blockBlock

✅ Search

Search gets SearchData
  ✅ Search gets SearchData
Search gets SearchData and respects invisible blocks
  ✅ Search gets SearchData and respects invisible blocks
Search gets SearchData and respects nested invisible blocks
  ✅ Search gets SearchData and respects nested invisible blocks

✅ transform to save index

transform to save index build correctly
  ✅ transform to save index build correctly
transform to save index extract id of DamFile
  ✅ transform to save index extract id of DamFile

✅ site/cms-site/junit.xml

7 tests were completed in 7s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Image: parseAspectRatio 7✅ 7s

✅ Image: parseAspectRatio

Image: parseAspectRatio should throw Error if invalid value
  ✅ Image: parseAspectRatio should throw Error if invalid value
Image: parseAspectRatio should work with single integer value
  ✅ Image: parseAspectRatio should work with single integer value
Image: parseAspectRatio should work with single float value
  ✅ Image: parseAspectRatio should work with single float value
Image: parseAspectRatio should work with single string value
  ✅ Image: parseAspectRatio should work with single string value
Image: parseAspectRatio should work with string value with x
  ✅ Image: parseAspectRatio should work with string value with x
Image: parseAspectRatio should work with string value with /
  ✅ Image: parseAspectRatio should work with string value with /
Image: parseAspectRatio should work with string value with :
  ✅ Image: parseAspectRatio should work with string value with :