Skip to content

Integer dictionary support in fragment inputs #15877

Integer dictionary support in fragment inputs

Integer dictionary support in fragment inputs #15877

GitHub Actions / REPORT-FrontendTests succeeded Dec 18, 2024 in 1s

224 passed, 0 failed and 0 skipped

Tests passed successfully

✅ junit.xml

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

Test suite Passed Failed Skipped Time
AggMapLikeParser 41✅ 3s
CommentContent#newContent 8✅ 19s
CompareVersionsDialog 2✅ 95s
CountsRangesButtons tests 4✅ 1s
CronEditor 1✅ 1s
CustomRadio component 4✅ 626ms
DateEditor 1✅ 1s
DateTimeEditor 1✅ 812ms
DictParameterEditor 2✅ 1s
DualParameterEditor 1✅ 3s
DurationEditor 1✅ 2s
edgeType retrieved 11✅ 2s
extendActivitiesWithUIData 3✅ 7s
FixedValuesEditor 1✅ 885ms
FixedValuesGroup 1✅ 63s
fragment schema aligner test 2✅ 173ms
GraphUtils 1✅ 170ms
Item 1✅ 70s
json utils 4✅ 120ms
JsonEditor 1✅ 743ms
PeriodEditor 1✅ 2s
PlainStyleLink 14✅ 303ms
process available variables finder 9✅ 10s
ProcessStateIcon tests 5✅ 1s
Reducer suite 5✅ 26s
SpelQuotesUtils 71✅ 560ms
SpelTemplateEditor 1✅ 519ms
SqlEditor 1✅ 573ms
StringEditor 1✅ 577ms
TextareaEditor 1✅ 831ms
TimeEditor 1✅ 511ms
undefined 1✅ 551ms
useActivitiesSearch 6✅ 491ms
useAnonymousStatistics 4✅ 1s
useProcessFormDataOptions 4✅ 14s
validating url counts extractors 5✅ 222ms
ValidationLabels 3✅ 614ms

✅ AggMapLikeParser

AggMapLikeParser should parse list: aaa => null
  ✅ AggMapLikeParser should parse list: aaa => null
AggMapLikeParser should parse list: "aaa" => null
  ✅ AggMapLikeParser should parse list: "aaa" => null
AggMapLikeParser should parse list: { => null
  ✅ AggMapLikeParser should parse list: { => null
AggMapLikeParser should parse list: {} => null
  ✅ AggMapLikeParser should parse list: {} => null
AggMapLikeParser should parse list: {123} => null
  ✅ AggMapLikeParser should parse list: {123} => null
AggMapLikeParser should parse list: {}.toString => []
  ✅ AggMapLikeParser should parse list: {}.toString => []
AggMapLikeParser should parse list: #COLLECTION.join({}, "|") => []
  ✅ AggMapLikeParser should parse list: #COLLECTION.join({}, "|") => []
AggMapLikeParser should parse list: {123}.toString => [ '123' ]
  ✅ AggMapLikeParser should parse list: {123}.toString => [ '123' ]
AggMapLikeParser should parse list: { 123 }.toString => [ '123' ]
  ✅ AggMapLikeParser should parse list: { 123 }.toString => [ '123' ]
AggMapLikeParser should parse list: {123,456}.toString => [ '123', '456' ]
  ✅ AggMapLikeParser should parse list: {123,456}.toString => [ '123', '456' ]
AggMapLikeParser should parse list: { 123, 456 }.toString => [ '123', '456' ]
  ✅ AggMapLikeParser should parse list: { 123, 456 }.toString => [ '123', '456' ]
AggMapLikeParser should parse list: { 123, aaa, 456 }.toString => [ '123', 'aaa', '456' ]
  ✅ AggMapLikeParser should parse list: { 123, aaa, 456 }.toString => [ '123', 'aaa', '456' ]
AggMapLikeParser should parse list: { 123, aaa.bbb }.toString => [ '123', 'aaa.bbb' ]
  ✅ AggMapLikeParser should parse list: { 123, aaa.bbb }.toString => [ '123', 'aaa.bbb' ]
AggMapLikeParser should parse list: { 123, aaa_bbb }.toString => [ '123', 'aaa_bbb' ]
  ✅ AggMapLikeParser should parse list: { 123, aaa_bbb }.toString => [ '123', 'aaa_bbb' ]
AggMapLikeParser should parse list: { 123, aaa bbb, ccc }.toString => [ '123', 'aaa bbb', 'ccc' ]
  ✅ AggMapLikeParser should parse list: { 123, aaa bbb, ccc }.toString => [ '123', 'aaa bbb', 'ccc' ]
AggMapLikeParser should parse list: { 123, "aaa bbb" }.toString => [ '123', '"aaa bbb"' ]
  ✅ AggMapLikeParser should parse list: { 123, "aaa bbb" }.toString => [ '123', '"aaa bbb"' ]
AggMapLikeParser should parse list: { 123, 'aaa bbb' }.toString => [ '123', "'aaa bbb'" ]
  ✅ AggMapLikeParser should parse list: { 123, 'aaa bbb' }.toString => [ '123', "'aaa bbb'" ]
AggMapLikeParser should parse list: { 123, #aaa.bbb }.toString => [ '123', '#aaa.bbb' ]
  ✅ AggMapLikeParser should parse list: { 123, #aaa.bbb }.toString => [ '123', '#aaa.bbb' ]
AggMapLikeParser should parse list: { 123, 123.bbb }.toString => [ '123', '123.bbb' ]
  ✅ AggMapLikeParser should parse list: { 123, 123.bbb }.toString => [ '123', '123.bbb' ]
AggMapLikeParser should parse list: { 123, 123.456.bbb }.toString => [ '123', '123.456.bbb' ]
  ✅ AggMapLikeParser should parse list: { 123, 123.456.bbb }.toString => [ '123', '123.456.bbb' ]
AggMapLikeParser should parse list: { 123, "{ 123, 456 }" }.toString => [ '123', '"{ 123, 456 }"' ]
  ✅ AggMapLikeParser should parse list: { 123, "{ 123, 456 }" }.toString => [ '123', '"{ 123, 456 }"' ]
AggMapLikeParser should parse list: { 123, { 123, "456" } }.toString => [ '123', '{ 123, "456" }' ]
  ✅ AggMapLikeParser should parse list: { 123, { 123, "456" } }.toString => [ '123', '{ 123, "456" }' ]
AggMapLikeParser should parse list: { 123, { aaa: 123, bbb: "456" } }.toString => [ '123', '{ aaa: 123, bbb: "456" }' ]
  ✅ AggMapLikeParser should parse list: { 123, { aaa: 123, bbb: "456" } }.toString => [ '123', '{ aaa: 123, bbb: "456" }' ]
AggMapLikeParser should parse list: #COLLECTION.join({ 123, 456 }, "|") => [ '123', '456' ]
  ✅ AggMapLikeParser should parse list: #COLLECTION.join({ 123, 456 }, "|") => [ '123', '456' ]
AggMapLikeParser should parse map: aaa => null
  ✅ AggMapLikeParser should parse map: aaa => null
AggMapLikeParser should parse map: "aaa" => null
  ✅ AggMapLikeParser should parse map: "aaa" => null
AggMapLikeParser should parse map: {} => {}
  ✅ AggMapLikeParser should parse map: {} => {}
AggMapLikeParser should parse map: #AGG.map({}) => {}
  ✅ AggMapLikeParser should parse map: #AGG.map({}) => {}
AggMapLikeParser should parse map: {aaa:123} => { aaa: '123' }
  ✅ AggMapLikeParser should parse map: {aaa:123} => { aaa: '123' }
AggMapLikeParser should parse map: #AGG.map({aaa:123}) => { aaa: '123' }
  ✅ AggMapLikeParser should parse map: #AGG.map({aaa:123}) => { aaa: '123' }
AggMapLikeParser should parse map: { aaa: 123, bbb: "456" } => { aaa: '123', bbb: '"456"' }
  ✅ AggMapLikeParser should parse map: { aaa: 123, bbb: "456" } => { aaa: '123', bbb: '"456"' }
AggMapLikeParser should parse map: { a: 123, b c: 123 } => { a: '123', 'b c': '123' }
  ✅ AggMapLikeParser should parse map: { a: 123, b c: 123 } => { a: '123', 'b c': '123' }
AggMapLikeParser should parse map: { aaa: 1 2 3 } => { aaa: '1 2 3' }
  ✅ AggMapLikeParser should parse map: { aaa: 1 2 3 } => { aaa: '1 2 3' }
AggMapLikeParser should parse map: { "a a a": 123 } => { 'a a a': '123' }
  ✅ AggMapLikeParser should parse map: { "a a a": 123 } => { 'a a a': '123' }
AggMapLikeParser should parse map: { aaa: #aaa.bbb } => { aaa: '#aaa.bbb' }
  ✅ AggMapLikeParser should parse map: { aaa: #aaa.bbb } => { aaa: '#aaa.bbb' }
AggMapLikeParser should parse map: { aaa: aaa.bbb } => { aaa: 'aaa.bbb' }
  ✅ AggMapLikeParser should parse map: { aaa: aaa.bbb } => { aaa: 'aaa.bbb' }
AggMapLikeParser should parse map: { aaa: "aaa bbb" } => { aaa: '"aaa bbb"' }
  ✅ AggMapLikeParser should parse map: { aaa: "aaa bbb" } => { aaa: '"aaa bbb"' }
AggMapLikeParser should parse map: { aaa: {} } => { aaa: '{}' }
  ✅ AggMapLikeParser should parse map: { aaa: {} } => { aaa: '{}' }
AggMapLikeParser should parse map: { aaa: { bbb: 123, ccc: "456" } } => { aaa: '{ bbb: 123, ccc: "456" }' }
  ✅ AggMapLikeParser should parse map: { aaa: { bbb: 123, ccc: "456" } } => { aaa: '{ bbb: 123, ccc: "456" }' }
AggMapLikeParser should parse map: { aaa: { 123, "456" } } => { aaa: '{ 123, "456" }' }
  ✅ AggMapLikeParser should parse map: { aaa: { 123, "456" } } => { aaa: '{ 123, "456" }' }
AggMapLikeParser should parse map: { aaa: "{ 123, '456' }" } => { aaa: `"{ 123, '456' }"` }
  ✅ AggMapLikeParser should parse map: { aaa: "{ 123, '456' }" } => { aaa: `"{ 123, '456' }"` }

✅ CommentContent#newContent

CommentContent#newContent replaces matched expressions with links
  ✅ CommentContent#newContent replaces matched expressions with links
CommentContent#newContent replaces multiple matched expressions with links
  ✅ CommentContent#newContent replaces multiple matched expressions with links
CommentContent#newContent leaves content unchanged when it does not match with expression
  ✅ CommentContent#newContent leaves content unchanged when it does not match with expression
CommentContent#newContent leaves content unchanged when settings are not provided
  ✅ CommentContent#newContent leaves content unchanged when settings are not provided
CommentContent#newContent should replace string value when issues search and <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> value
  ✅ CommentContent#newContent should replace string value when issues search and <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> value
CommentContent#newContent should replace string value when val search and single value value
  ✅ CommentContent#newContent should replace string value when val search and single value value
CommentContent#newContent should replace string value when issues search and issues <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> end value value
  ✅ CommentContent#newContent should replace string value when issues search and issues <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> end value value
CommentContent#newContent should replace string value when ITDEVRTM search and <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-f06hvx" href="https://jira.playmobile.pl/jira/browse/ITDEVRTM-2279" target="_blank">ITDEVRTM-2279</a> issues <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> end value <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/555" target="_blank">issues/555</a> value
  ✅ CommentContent#newContent should replace string value when ITDEVRTM search and <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-f06hvx" href="https://jira.playmobile.pl/jira/browse/ITDEVRTM-2279" target="_blank">ITDEVRTM-2279</a> issues <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/234" target="_blank">issues/234</a> end value <a class="MuiTypography-root MuiTypography-inherit MuiLink-root MuiLink-underlineAlways css-1xhj5go-MuiTypography-root-MuiLink-root" href="https://github.com/TouK/nussknacker/issues/555" target="_blank">issues/555</a> value

✅ CompareVersionsDialog

CompareVersionsDialog should provide remote prefix for remote options and call correct remote endpoint when remote version selected
  ✅ CompareVersionsDialog should provide remote prefix for remote options and call correct remote endpoint when remote version selected
CompareVersionsDialog should select history version and call correct processes endpoint when history version selected
  ✅ CompareVersionsDialog should select history version and call correct processes endpoint when history version selected

✅ CountsRangesButtons tests

CountsRangesButtons tests should render buttons
  ✅ CountsRangesButtons tests should render buttons
CountsRangesButtons tests should handle click
  ✅ CountsRangesButtons tests should handle click
CountsRangesButtons tests should collapse buttons
  ✅ CountsRangesButtons tests should collapse buttons
CountsRangesButtons tests should hide expand button when not needed
  ✅ CountsRangesButtons tests should hide expand button when not needed

✅ CronEditor

CronEditor should display validation error when the field is required
  ✅ CronEditor should display validation error when the field is required

✅ CustomRadio component

CustomRadio component renders correctly with default props
  ✅ CustomRadio component renders correctly with default props
CustomRadio component renders correctly when disabled
  ✅ CustomRadio component renders correctly when disabled
CustomRadio component renders correctly when active
  ✅ CustomRadio component renders correctly when active
CustomRadio component fires onChange callback when clicked
  ✅ CustomRadio component fires onChange callback when clicked

✅ DateEditor

DateEditor should display validation error when the field is required
  ✅ DateEditor should display validation error when the field is required

✅ DateTimeEditor

DateTimeEditor should display validation error when the field is required
  ✅ DateTimeEditor should display validation error when the field is required

✅ DictParameterEditor

DictParameterEditor should display validation error when the field contain errors
  ✅ DictParameterEditor should display validation error when the field contain errors
DictParameterEditor should not show validation error when the field not contain errors
  ✅ DictParameterEditor should not show validation error when the field not contain errors

✅ DualParameterEditor

DualParameterEditor should display validation error when the field is required
  ✅ DualParameterEditor should display validation error when the field is required

✅ DurationEditor

DurationEditor should display validation error when the field is required
  ✅ DurationEditor should display validation error when the field is required

✅ edgeType retrieved

edgeType retrieved should choose unused edge type
  ✅ edgeType retrieved should choose unused edge type
edgeType retrieved should get edge types for node
  ✅ edgeType retrieved should get edge types for node
edgeType retrieved should get empty types for defaultNode
  ✅ edgeType retrieved should get empty types for defaultNode
can make link cannot make link from non-last node to sink
  ✅ can make link cannot make link from non-last node to sink
can make link cannot connect from sink to any node
  ✅ can make link cannot connect from sink to any node
can make link can connect from variable to sink
  ✅ can make link can connect from variable to sink
can make link cannot connect to source
  ✅ can make link cannot connect to source
can make link cannot make more than 2 links for Filter
  ✅ can make link cannot make more than 2 links for Filter
can make link can edit link if Filter if fully linked
  ✅ can make link can edit link if Filter if fully linked
isAvailable should be available
  ✅ isAvailable should be available
isAvailable should not be available for unknown node
  ✅ isAvailable should not be available for unknown node

✅ extendActivitiesWithUIData

extendActivitiesWithUIData should render activities with metadata when items are not grouped
  ✅ extendActivitiesWithUIData should render activities with metadata when items are not grouped
extendActivitiesWithUIData should render activities with metadata and date range when items are grouped in the date range
  ✅ extendActivitiesWithUIData should render activities with metadata and date range when items are grouped in the date range
extendActivitiesWithUIData should render activities with metadata without date range when items are grouped in the same day
  ✅ extendActivitiesWithUIData should render activities with metadata without date range when items are grouped in the same day

✅ FixedValuesEditor

FixedValuesEditor should display validation error when the field is required
  ✅ FixedValuesEditor should display validation error when the field is required

✅ FixedValuesGroup

FixedValuesGroup should clear initialValue on Preset type change
  ✅ FixedValuesGroup should clear initialValue on Preset type change

✅ fragment schema aligner test

fragment schema aligner test should remove redundant and add missing parameters according to schema
  ✅ fragment schema aligner test should remove redundant and add missing parameters according to schema
fragment schema aligner test should not change anything if fragment is valid with schema
  ✅ fragment schema aligner test should not change anything if fragment is valid with schema

✅ GraphUtils

GraphUtils prepareNewNodesWithLayout should update union output expression parameter with an updated node name when new unique node ids created
  ✅ GraphUtils prepareNewNodesWithLayout should update union output expression parameter with an updated node name when new unique node ids created

✅ Item

Item should set inputMode to a default value when parameter type change
  ✅ Item should set inputMode to a default value when parameter type change

✅ json utils

json utils should flatten object #1
  ✅ json utils should flatten object #1
json utils should flatten object #2
  ✅ json utils should flatten object #2
json utils should diff objects
  ✅ json utils should diff objects
json utils should work with empty objects/properties
  ✅ json utils should work with empty objects/properties

✅ JsonEditor

JsonEditor should display validation error when the field is required
  ✅ JsonEditor should display validation error when the field is required

✅ PeriodEditor

PeriodEditor should display validation error when the field is required
  ✅ PeriodEditor should display validation error when the field is required

✅ PlainStyleLink

PlainStyleLink isExternalUrl should pass http://
  ✅ PlainStyleLink isExternalUrl should pass http://
PlainStyleLink isExternalUrl should pass https://
  ✅ PlainStyleLink isExternalUrl should pass https://
PlainStyleLink isExternalUrl should pass //
  ✅ PlainStyleLink isExternalUrl should pass //
PlainStyleLink isExternalUrl should drop /
  ✅ PlainStyleLink isExternalUrl should drop /
PlainStyleLink isExternalUrl should drop ?
  ✅ PlainStyleLink isExternalUrl should drop ?
PlainStyleLink isExternalUrl should drop #
  ✅ PlainStyleLink isExternalUrl should drop #
PlainStyleLink isExternalUrl should drop other
  ✅ PlainStyleLink isExternalUrl should drop other
PlainStyleLink should support http://
  ✅ PlainStyleLink should support http://
PlainStyleLink should support https://
  ✅ PlainStyleLink should support https://
PlainStyleLink should support //
  ✅ PlainStyleLink should support //
PlainStyleLink should support /
  ✅ PlainStyleLink should support /
PlainStyleLink should support ?
  ✅ PlainStyleLink should support ?
PlainStyleLink should support #
  ✅ PlainStyleLink should support #
PlainStyleLink should support plain string
  ✅ PlainStyleLink should support plain string

✅ process available variables finder

process available variables finder should find available variables with its types in process at the beginning of the process
  ✅ process available variables finder should find available variables with its types in process at the beginning of the process
process available variables finder should find available variables with its types in process in the end of the process
  ✅ process available variables finder should find available variables with its types in process in the end of the process
process available variables finder should find fragment parameters as variables with its types
  ✅ process available variables finder should find fragment parameters as variables with its types
process available variables finder should return only empty variables for dangling node
  ✅ process available variables finder should return only empty variables for dangling node
process available variables finder should use variables from validation results if exist
  ✅ process available variables finder should use variables from validation results if exist
process available variables finder should fallback to variables decoded from graph if typing via validation fails
  ✅ process available variables finder should fallback to variables decoded from graph if typing via validation fails
process available variables finder add additional variables to node if defined
  ✅ process available variables finder add additional variables to node if defined
process available variables finder hide variables in parameter if defined
  ✅ process available variables finder hide variables in parameter if defined
process utils should convert to readable type
  ✅ process utils should convert to readable type

✅ ProcessStateIcon tests

ProcessStateIcon tests should show defaults for missing process.state and stateProcess
  ✅ ProcessStateIcon tests should show defaults for missing process.state and stateProcess
ProcessStateIcon tests should show defaults for loaded process.state without data
  ✅ ProcessStateIcon tests should show defaults for loaded process.state without data
ProcessStateIcon tests should show data from loaded process.state
  ✅ ProcessStateIcon tests should show data from loaded process.state
ProcessStateIcon tests should show defaults if loadedProcess is empty
  ✅ ProcessStateIcon tests should show defaults if loadedProcess is empty
ProcessStateIcon tests should show loadedProcess data
  ✅ ProcessStateIcon tests should show loadedProcess data

✅ Reducer suite

Reducer suite Display process
  ✅ Reducer suite Display process
Nodes added should add single node
  ✅ Nodes added should add single node
Nodes added should add single node with unique id
  ✅ Nodes added should add single node with unique id
Nodes added should add multiple nodes with unique id
  ✅ Nodes added should add multiple nodes with unique id
Nodes added should add nodes with edges
  ✅ Nodes added should add nodes with edges

✅ SpelQuotesUtils

SpelQuotesUtils escapeQuotes should return escaped text
  ✅ SpelQuotesUtils escapeQuotes should return escaped text
SpelQuotesUtils escapeQuotes should use replaceAll when available
  ✅ SpelQuotesUtils escapeQuotes should use replaceAll when available
SpelQuotesUtils unescapeQuotes should return unescaped text
  ✅ SpelQuotesUtils unescapeQuotes should return unescaped text
SpelQuotesUtils unescapeQuotes should ignore QuotationMark.double marks
  ✅ SpelQuotesUtils unescapeQuotes should ignore QuotationMark.double marks
SpelQuotesUtils unescapeQuotes should use replaceAll when available
  ✅ SpelQuotesUtils unescapeQuotes should use replaceAll when available
SpelQuotesUtils quote should return wrapped text
  ✅ SpelQuotesUtils quote should return wrapped text
SpelQuotesUtils quote should ignore unknown marks
  ✅ SpelQuotesUtils quote should ignore unknown marks
SpelQuotesUtils unquote should return unwrapped text
  ✅ SpelQuotesUtils unquote should return unwrapped text
SpelQuotesUtils unquote should ignore wrong quotes
  ✅ SpelQuotesUtils unquote should ignore wrong quotes
SpelQuotesUtils unquote should ignore unknown marks
  ✅ SpelQuotesUtils unquote should ignore unknown marks
SpelQuotesUtils isQuoted should not match ## ## ##
  ✅ SpelQuotesUtils isQuoted should not match ## ## ##
SpelQuotesUtils isQuoted should not match '## ## ##"
  ✅ SpelQuotesUtils isQuoted should not match '## ## ##"
SpelQuotesUtils isQuoted should not match "## ## ##'
  ✅ SpelQuotesUtils isQuoted should not match "## ## ##'
SpelQuotesUtils isQuoted should not match '##'##'##'
  ✅ SpelQuotesUtils isQuoted should not match '##'##'##'
SpelQuotesUtils isQuoted should not match ''## ## ##''
  ✅ SpelQuotesUtils isQuoted should not match ''## ## ##''
SpelQuotesUtils isQuoted should not match '''##'##'##'''
  ✅ SpelQuotesUtils isQuoted should not match '''##'##'##'''
SpelQuotesUtils isQuoted should not match ""##'##'##""
  ✅ SpelQuotesUtils isQuoted should not match ""##'##'##""
SpelQuotesUtils isQuoted should not match "##"##"##"
  ✅ SpelQuotesUtils isQuoted should not match "##"##"##"
SpelQuotesUtils isQuoted should not match """##"##"##"""
  ✅ SpelQuotesUtils isQuoted should not match """##"##"##"""
SpelQuotesUtils isQuoted should match '##''##''##'
  ✅ SpelQuotesUtils isQuoted should match '##''##''##'
SpelQuotesUtils isQuoted should match '''##''##''##'''
  ✅ SpelQuotesUtils isQuoted should match '''##''##''##'''
SpelQuotesUtils isQuoted should match '''##"##"##'''
  ✅ SpelQuotesUtils isQuoted should match '''##"##"##'''
SpelQuotesUtils isQuoted should match "##'##'##"
  ✅ SpelQuotesUtils isQuoted should match "##'##'##"
SpelQuotesUtils isQuoted should match "##""##""##"
  ✅ SpelQuotesUtils isQuoted should match "##""##""##"
SpelQuotesUtils isQuoted should match """##'##'##"""
  ✅ SpelQuotesUtils isQuoted should match """##'##'##"""
SpelQuotesUtils isQuoted should match """##""##""##"""
  ✅ SpelQuotesUtils isQuoted should match """##""##""##"""
SpelQuotesUtils getQuotationMark should return current quotation mark
  ✅ SpelQuotesUtils getQuotationMark should return current quotation mark
SpelQuotesUtils getQuotationMark should return default quotation mark when none
  ✅ SpelQuotesUtils getQuotationMark should return default quotation mark when none
SpelQuotesUtils getQuotationMark should return default quotation mark when wrong used
  ✅ SpelQuotesUtils getQuotationMark should return default quotation mark when wrong used
stringSpelFormatter should decode encoded value ###
  ✅ stringSpelFormatter should decode encoded value ###
stringSpelFormatter should decode encoded value "###"
  ✅ stringSpelFormatter should decode encoded value "###"
stringSpelFormatter should decode encoded value '###'
  ✅ stringSpelFormatter should decode encoded value '###'
stringSpelFormatter should decode encoded value '###"
  ✅ stringSpelFormatter should decode encoded value '###"
stringSpelFormatter should decode encoded value "###
  ✅ stringSpelFormatter should decode encoded value "###
stringSpelFormatter should decode encoded value '###
  ✅ stringSpelFormatter should decode encoded value '###
stringSpelFormatter should decode encoded value ###'###
  ✅ stringSpelFormatter should decode encoded value ###'###
stringSpelFormatter should decode encoded value ###"###
  ✅ stringSpelFormatter should decode encoded value ###"###
stringSpelFormatter should decode encoded value #{123}#aaa
  ✅ stringSpelFormatter should decode encoded value #{123}#aaa
stringSpelFormatter should decode encoded value aaa#{123}#bbb
  ✅ stringSpelFormatter should decode encoded value aaa#{123}#bbb
stringSpelFormatter encoder should encode value ###
  ✅ stringSpelFormatter encoder should encode value ###
stringSpelFormatter encoder should encode value "###"
  ✅ stringSpelFormatter encoder should encode value "###"
stringSpelFormatter encoder should encode value '###'
  ✅ stringSpelFormatter encoder should encode value '###'
stringSpelFormatter encoder should encode value '###"
  ✅ stringSpelFormatter encoder should encode value '###"
stringSpelFormatter encoder should encode value "###
  ✅ stringSpelFormatter encoder should encode value "###
stringSpelFormatter encoder should encode value '###
  ✅ stringSpelFormatter encoder should encode value '###
stringSpelFormatter encoder should encode value ###'###
  ✅ stringSpelFormatter encoder should encode value ###'###
stringSpelFormatter encoder should encode value ###"###
  ✅ stringSpelFormatter encoder should encode value ###"###
stringSpelFormatter encoder should encode value #{123}#aaa
  ✅ stringSpelFormatter encoder should encode value #{123}#aaa
stringSpelFormatter encoder should encode value aaa#{123}#bbb
  ✅ stringSpelFormatter encoder should encode value aaa#{123}#bbb
stringSpelFormatter decoder should decode value '###'
  ✅ stringSpelFormatter decoder should decode value '###'
stringSpelFormatter decoder should decode value "###"
  ✅ stringSpelFormatter decoder should decode value "###"
stringSpelFormatter decoder should decode value ""###""
  ✅ stringSpelFormatter decoder should decode value ""###""
  ✅ stringSpelFormatter decoder should decode value ""###""
stringSpelFormatter decoder should decode value ''###''
  ✅ stringSpelFormatter decoder should decode value ''###''
  ✅ stringSpelFormatter decoder should decode value ''###''
stringSpelFormatter decoder should decode value ''###"'
  ✅ stringSpelFormatter decoder should decode value ''###"'
  ✅ stringSpelFormatter decoder should decode value ''###"'
stringSpelFormatter decoder should decode value ""###"
  ✅ stringSpelFormatter decoder should decode value ""###"
  ✅ stringSpelFormatter decoder should decode value ""###"
stringSpelFormatter decoder should decode value ''###'
  ✅ stringSpelFormatter decoder should decode value ''###'
  ✅ stringSpelFormatter decoder should decode value ''###'
stringSpelFormatter decoder should decode value '###'###'
  ✅ stringSpelFormatter decoder should decode value '###'###'
stringSpelFormatter decoder should decode value "###'###"
  ✅ stringSpelFormatter decoder should decode value "###'###"
stringSpelFormatter decoder should decode value '###"###'
  ✅ stringSpelFormatter decoder should decode value '###"###'
stringSpelFormatter decoder should decode value "###"###"
  ✅ stringSpelFormatter decoder should decode value "###"###"
stringSpelFormatter decoder should decode value '#{123}#aaa'
  ✅ stringSpelFormatter decoder should decode value '#{123}#aaa'
stringSpelFormatter decoder should decode value 'aaa#{123}#bbb'
  ✅ stringSpelFormatter decoder should decode value 'aaa#{123}#bbb'
  ✅ stringSpelFormatter decoder should decode value 'aaa#{123}#bbb'
stringSpelFormatter decoder should decode value "aaa#{123}#bbb"
  ✅ stringSpelFormatter decoder should decode value "aaa#{123}#bbb"
stringSpelFormatter decoder should decode value "aaa#{123}#bbb'
  ✅ stringSpelFormatter decoder should decode value "aaa#{123}#bbb'
stringSpelFormatter decoder should decode value 'aaa#{123}#bbb"
  ✅ stringSpelFormatter decoder should decode value 'aaa#{123}#bbb"

✅ SpelTemplateEditor

SpelTemplateEditor should display validation error when the field is required
  ✅ SpelTemplateEditor should display validation error when the field is required

✅ SqlEditor

SqlEditor should display validation error when the field is required
  ✅ SqlEditor should display validation error when the field is required

✅ StringEditor

StringEditor should display validation error when the field is required
  ✅ StringEditor should display validation error when the field is required

✅ TextareaEditor

TextareaEditor should display validation error when the field is required
  ✅ TextareaEditor should display validation error when the field is required

✅ TimeEditor

TimeEditor should display validation error when the field is required
  ✅ TimeEditor should display validation error when the field is required

✅ undefined

undefined should display validation error when the field is required
  ✅ undefined should display validation error when the field is required

✅ useActivitiesSearch

useActivitiesSearch should find elements when query is 'atta'
  ✅ useActivitiesSearch should find elements when query is 'atta'
useActivitiesSearch should find elements when query is '3 saved'
  ✅ useActivitiesSearch should find elements when query is '3 saved'
useActivitiesSearch should find elements when query is '2024-09-27'
  ✅ useActivitiesSearch should find elements when query is '2024-09-27'
useActivitiesSearch should find elements when query is 'tests save'
  ✅ useActivitiesSearch should find elements when query is 'tests save'
useActivitiesSearch should find elements when query is 'newName: old marketing campaign'
  ✅ useActivitiesSearch should find elements when query is 'newName: old marketing campaign'
useActivitiesSearch should find elements when query is '.png'
  ✅ useActivitiesSearch should find elements when query is '.png'

✅ useAnonymousStatistics

useAnonymousStatistics should fetch the statistics URLs and append them to the document body
  ✅ useAnonymousStatistics should fetch the statistics URLs and append them to the document body
useAnonymousStatistics should not fetch the statistics URLs when the feature is disabled
  ✅ useAnonymousStatistics should not fetch the statistics URLs when the feature is disabled
useAnonymousStatistics should fetch the statistics URLs when the cache becomes expired
  ✅ useAnonymousStatistics should fetch the statistics URLs when the cache becomes expired
useAnonymousStatistics should not fetch the statistics URLs when the cache is still valid
  ✅ useAnonymousStatistics should not fetch the statistics URLs when the cache is still valid

✅ useProcessFormDataOptions

useProcessFormDataOptions should return unique formOptions based on the form values
  ✅ useProcessFormDataOptions should return unique formOptions based on the form values
useProcessFormDataOptions should return isEngineFieldVisible true when for each category and processingMode combination, there is more than one engine
  ✅ useProcessFormDataOptions should return isEngineFieldVisible true when for each category and processingMode combination, there is more than one engine
useProcessFormDataOptions should return isEngineFieldVisible false when for each category and processingMode combination, there is only one engine
  ✅ useProcessFormDataOptions should return isEngineFieldVisible false when for each category and processingMode combination, there is only one engine
useProcessFormDataOptions should return isCategoryFieldVisible false when there is only one category available
  ✅ useProcessFormDataOptions should return isCategoryFieldVisible false when there is only one category available

✅ validating url counts extractors

validating url counts extractors extract time from string timestamps (from)
  ✅ validating url counts extractors extract time from string timestamps (from)
validating url counts extractors extract time from string timestamps (to)
  ✅ validating url counts extractors extract time from string timestamps (to)
validating url counts extractors extract time from string date (from)
  ✅ validating url counts extractors extract time from string date (from)
validating url counts extractors extract time from string date (to)
  ✅ validating url counts extractors extract time from string date (to)
validating url counts extractors extract duration from string
  ✅ validating url counts extractors extract duration from string

✅ ValidationLabels

ValidationLabels should display validation error when error available
  ✅ ValidationLabels should display validation error when error available
ValidationLabels should display validation error when validationLabelInfo provided AND validation error available
  ✅ ValidationLabels should display validation error when validationLabelInfo provided AND validation error available
ValidationLabels should display multiple validation errors when multiple validation errors provided
  ✅ ValidationLabels should display multiple validation errors when multiple validation errors provided