Skip to content

Commit e4236e0

Browse files
committed
fix: added test cases
1 parent f712006 commit e4236e0

File tree

2 files changed

+203
-4
lines changed

2 files changed

+203
-4
lines changed

__test__/entry-editable.test.ts

Lines changed: 135 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import { EntryModel } from '../src'
21
import { addTags } from '../src/entry-editable'
3-
import { entry_global_field, entry_global_field_multiple, entry_modular_block, entry_reference, entry_with_text } from './mock/entry-editable-mock'
4-
import { entryMultipleContent } from './mock/entry-multiple-rich-text-content'
2+
import { entry_global_field, entry_global_field_multiple, entry_modular_block, entry_reference, entry_with_text, entry_with_applied_variants, entry_with_system_variants, entry_with_parent_path_variants } from './mock/entry-editable-mock'
53

64
describe('Entry editable test', () => {
75
it('Entry with text test', done => {
@@ -129,4 +127,138 @@ describe('Entry editable test', () => {
129127
done()
130128
})
131129

130+
// Tests for applied variants functionality
131+
describe('Applied Variants Tests', () => {
132+
it('Entry with applied variants should generate v2 tags with variant suffix', done => {
133+
addTags(entry_with_applied_variants, 'entry_asset', false)
134+
135+
// Field with direct variant match should get v2 prefix and variant suffix
136+
expect((entry_with_applied_variants as any)['$']['rich_text_editor']).toEqual('data-cslp=v2:entry_asset.entry_uid_1_variant_1.en-us.rich_text_editor')
137+
expect((entry_with_applied_variants as any)['$']['rich_text_editor_multiple']).toEqual('data-cslp=v2:entry_asset.entry_uid_1_variant_1.en-us.rich_text_editor_multiple')
138+
139+
// Nested field with direct variant match
140+
expect((entry_with_applied_variants as any)['nested']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_1_variant_2.en-us.nested.field')
141+
142+
// Field without variant should not have v2 prefix
143+
expect((entry_with_applied_variants as any)['nested']['$']['other_field']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.nested.other_field')
144+
145+
done()
146+
})
147+
148+
it('Entry with applied variants should return v2 objects when tagsAsObject is true', done => {
149+
addTags(entry_with_applied_variants, 'entry_asset', true)
150+
151+
// Field with direct variant match should get v2 prefix and variant suffix as object
152+
expect((entry_with_applied_variants as any)['$']['rich_text_editor']).toEqual({'data-cslp': 'v2:entry_asset.entry_uid_1_variant_1.en-us.rich_text_editor'})
153+
expect((entry_with_applied_variants as any)['$']['rich_text_editor_multiple']).toEqual({'data-cslp': 'v2:entry_asset.entry_uid_1_variant_1.en-us.rich_text_editor_multiple'})
154+
155+
// Nested field with direct variant match
156+
expect((entry_with_applied_variants as any)['nested']['$']['field']).toEqual({'data-cslp': 'v2:entry_asset.entry_uid_1_variant_2.en-us.nested.field'})
157+
158+
// Field without variant should not have v2 prefix
159+
expect((entry_with_applied_variants as any)['nested']['$']['other_field']).toEqual({'data-cslp': 'entry_asset.entry_uid_1.en-us.nested.other_field'})
160+
161+
done()
162+
})
163+
164+
it('Entry with system-level applied variants should work correctly', done => {
165+
addTags(entry_with_system_variants, 'entry_asset', false)
166+
167+
// Fields with system variants should get v2 prefix and variant suffix
168+
expect((entry_with_system_variants as any)['$']['title']).toEqual('data-cslp=v2:entry_asset.entry_uid_2_system_variant.en-us.title')
169+
expect((entry_with_system_variants as any)['$']['description']).toEqual('data-cslp=v2:entry_asset.entry_uid_2_desc_variant.en-us.description')
170+
171+
done()
172+
})
173+
174+
it('Entry with parent path variants should find correct variant', done => {
175+
addTags(entry_with_parent_path_variants, 'entry_asset', false)
176+
177+
// Field under 'group' parent should get parent variant
178+
expect((entry_with_parent_path_variants as any)['group']['$']['other']).toEqual('data-cslp=v2:entry_asset.entry_uid_3_parent_variant.en-us.group.other')
179+
180+
// Field under 'group.nested' should get parent variant (group is longer match)
181+
expect((entry_with_parent_path_variants as any)['group']['nested']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_3_parent_variant.en-us.group.nested.field')
182+
183+
// Field with exact deep path match should get deep variant
184+
expect((entry_with_parent_path_variants as any)['group']['nested']['deep']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_3_deep_variant.en-us.group.nested.deep.field')
185+
186+
done()
187+
})
188+
189+
it('Entry with modular block variants should apply variants correctly', done => {
190+
addTags(entry_with_applied_variants, 'entry_asset', false)
191+
192+
// Modular block content with variant should get v2 prefix and variant suffix
193+
expect((entry_with_applied_variants as any)['modular_blocks'][0]['$']['content']).toEqual('data-cslp=v2:entry_asset.entry_uid_1_variant_3.en-us.modular_blocks.0.content')
194+
195+
// Modular block field without variant should not have v2 prefix
196+
expect((entry_with_applied_variants as any)['modular_blocks'][0]['$']['title']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.modular_blocks.0.title')
197+
198+
done()
199+
})
200+
201+
it('Entry without applied variants should work normally', done => {
202+
addTags(entry_with_text, 'entry_asset', false)
203+
204+
// Should not have v2 prefix when no variants are applied
205+
expect((entry_with_text as any)['$']['rich_text_editor']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.rich_text_editor')
206+
expect((entry_with_text as any)['$']['rich_text_editor_multiple']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.rich_text_editor_multiple')
207+
208+
done()
209+
})
210+
211+
it('Entry with empty applied variants should work normally', done => {
212+
const entryWithEmptyVariants = {
213+
...entry_with_text,
214+
_applied_variants: {}
215+
}
216+
217+
addTags(entryWithEmptyVariants, 'entry_asset', false)
218+
219+
// Should not have v2 prefix when variants object is empty
220+
expect((entryWithEmptyVariants as any)['$']['rich_text_editor']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.rich_text_editor')
221+
expect((entryWithEmptyVariants as any)['$']['rich_text_editor_multiple']).toEqual('data-cslp=entry_asset.entry_uid_1.en-us.rich_text_editor_multiple')
222+
223+
done()
224+
})
225+
226+
it('Variant path sorting should work correctly for nested paths', done => {
227+
const entryWithComplexVariants = {
228+
"_version": 10,
229+
"locale": "en-us",
230+
"uid": "entry_uid_test",
231+
"ACL": {},
232+
"_applied_variants": {
233+
"a": "variant_a",
234+
"a.b": "variant_ab",
235+
"a.b.c": "variant_abc",
236+
"a.b.c.d": "variant_abcd"
237+
},
238+
"a": {
239+
"b": {
240+
"c": {
241+
"d": {
242+
"field": "deep field"
243+
},
244+
"field": "c field"
245+
},
246+
"field": "b field"
247+
},
248+
"field": "a field"
249+
}
250+
}
251+
252+
addTags(entryWithComplexVariants, 'entry_asset', false)
253+
254+
// Should use the longest matching path variant
255+
expect((entryWithComplexVariants as any)['a']['b']['c']['d']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_test_variant_abcd.en-us.a.b.c.d.field')
256+
expect((entryWithComplexVariants as any)['a']['b']['c']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_test_variant_abc.en-us.a.b.c.field')
257+
expect((entryWithComplexVariants as any)['a']['b']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_test_variant_ab.en-us.a.b.field')
258+
expect((entryWithComplexVariants as any)['a']['$']['field']).toEqual('data-cslp=v2:entry_asset.entry_uid_test_variant_a.en-us.a.field')
259+
260+
done()
261+
})
262+
})
263+
132264
})

__test__/mock/entry-editable-mock.ts

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,77 @@ const entry_global_field_multiple = {
150150
}
151151
]
152152
}
153+
// Mock entry with applied variants for testing variant functionality
154+
const entry_with_applied_variants = {
155+
"_version": 10,
156+
"locale": "en-us",
157+
"uid": "entry_uid_1",
158+
"ACL": {},
159+
"_applied_variants": {
160+
"rich_text_editor": "variant_1",
161+
"nested.field": "variant_2",
162+
"modular_blocks.content": "variant_3"
163+
},
164+
"rich_text_editor": "<p>Content with variant</p>",
165+
"rich_text_editor_multiple": [
166+
"<p>Multiple content with variant</p>"
167+
],
168+
"nested": {
169+
"field": "nested field content",
170+
"other_field": "other nested content"
171+
},
172+
"modular_blocks": [
173+
{
174+
"content": "modular content",
175+
"title": "modular title"
176+
}
177+
]
178+
}
179+
180+
// Mock entry with system-level applied variants
181+
const entry_with_system_variants = {
182+
"_version": 10,
183+
"locale": "en-us",
184+
"uid": "entry_uid_2",
185+
"ACL": {},
186+
"system": {
187+
"applied_variants": {
188+
"title": "system_variant",
189+
"description": "desc_variant"
190+
}
191+
},
192+
"title": "System variant title",
193+
"description": "System variant description"
194+
}
195+
196+
// Mock entry with nested parent path variants
197+
const entry_with_parent_path_variants = {
198+
"_version": 10,
199+
"locale": "en-us",
200+
"uid": "entry_uid_3",
201+
"ACL": {},
202+
"_applied_variants": {
203+
"group": "parent_variant",
204+
"group.nested.deep": "deep_variant"
205+
},
206+
"group": {
207+
"nested": {
208+
"field": "nested field",
209+
"deep": {
210+
"field": "deep field"
211+
}
212+
},
213+
"other": "other field"
214+
}
215+
}
216+
153217
export {
154218
entry_with_text,
155219
entry_reference,
156220
entry_global_field,
157221
entry_modular_block,
158-
entry_global_field_multiple
222+
entry_global_field_multiple,
223+
entry_with_applied_variants,
224+
entry_with_system_variants,
225+
entry_with_parent_path_variants
159226
}

0 commit comments

Comments
 (0)