1
1
import { describe , expect , test } from "vitest" ;
2
2
import * as baseMetas from "@webstudio-is/sdk-components-react/metas" ;
3
3
import { createDefaultPages } from "@webstudio-is/project-build" ;
4
- import { $ , renderData } from "@webstudio-is/template" ;
4
+ import { $ , renderData , ws } from "@webstudio-is/template" ;
5
5
import {
6
6
$instances ,
7
7
$pages ,
@@ -10,6 +10,7 @@ import {
10
10
import { registerContainers } from "~/shared/sync" ;
11
11
import { $awareness , selectInstance } from "~/shared/awareness" ;
12
12
import { deleteSelectedInstance , unwrap , wrapIn } from "./commands" ;
13
+ import { elementComponent } from "@webstudio-is/sdk" ;
13
14
14
15
registerContainers ( ) ;
15
16
@@ -81,71 +82,86 @@ describe("wrap in", () => {
81
82
test ( "wrap instance in link" , ( ) => {
82
83
$instances . set (
83
84
renderData (
84
- < $ . Body ws :id = "body" >
85
- < $ . Box ws :id = "box " > </ $ . Box >
86
- </ $ . Body >
85
+ < ws . element ws :tag = "body" ws : id = "bodyId ">
86
+ < ws . element ws :tag = "div" ws : id = "divId " > </ ws . element >
87
+ </ ws . element >
87
88
) . instances
88
89
) ;
89
- selectInstance ( [ "box " , "body " ] ) ;
90
- wrapIn ( "Link ") ;
90
+ selectInstance ( [ "divId " , "bodyId " ] ) ;
91
+ wrapIn ( elementComponent , "a ") ;
91
92
expect ( $instances . get ( ) ) . toEqual (
92
93
renderData (
93
- < $ . Body ws :id = "body" >
94
- < $ . Link ws :id = { expect . any ( String ) } >
95
- < $ . Box ws :id = "box " > </ $ . Box >
96
- </ $ . Link >
97
- </ $ . Body >
94
+ < ws . element ws :tag = "body" ws : id = "bodyId ">
95
+ < ws . element ws : tag = "a" ws :id = { expect . any ( String ) } >
96
+ < ws . element ws :tag = "div" ws : id = "divId " > </ ws . element >
97
+ </ ws . element >
98
+ </ ws . element >
98
99
) . instances
99
100
) ;
100
101
} ) ;
101
102
102
- test ( "wrap image in box " , ( ) => {
103
+ test ( "wrap image in element " , ( ) => {
103
104
$instances . set (
104
105
renderData (
105
- < $ . Body ws :id = "body" >
106
- < $ . Image ws :id = "image" / >
107
- </ $ . Body >
106
+ < ws . element ws :tag = "body" ws : id = "bodyId ">
107
+ < ws . element ws :tag = "img" ws : id = "imageId" > </ ws . element >
108
+ </ ws . element >
108
109
) . instances
109
110
) ;
110
- selectInstance ( [ "image " , "body " ] ) ;
111
- wrapIn ( "Box" ) ;
111
+ selectInstance ( [ "imageId " , "bodyId " ] ) ;
112
+ wrapIn ( elementComponent ) ;
112
113
expect ( $instances . get ( ) ) . toEqual (
113
114
renderData (
114
- < $ . Body ws :id = "body" >
115
- < $ . Box ws :id = { expect . any ( String ) } >
116
- < $ . Image ws :id = "image" / >
117
- </ $ . Box >
118
- </ $ . Body >
115
+ < ws . element ws :tag = "body" ws : id = "bodyId ">
116
+ < ws . element ws : tag = "div" ws :id = { expect . any ( String ) } >
117
+ < ws . element ws :tag = "img" ws : id = "imageId" > </ ws . element >
118
+ </ ws . element >
119
+ </ ws . element >
119
120
) . instances
120
121
) ;
121
122
} ) ;
122
123
123
124
test ( "avoid wrapping text with link in link" , ( ) => {
124
125
const { instances } = renderData (
125
- < $ . Body ws :id = "body" >
126
- < $ . Text ws :id = "text " >
127
- < $ . RichTextLink ws :id = "richtextlink " > </ $ . RichTextLink >
128
- </ $ . Text >
129
- </ $ . Body >
126
+ < ws . element ws :tag = "body" ws : id = "bodyId ">
127
+ < ws . element ws :tag = "p" ws : id = "textId " >
128
+ < ws . element ws :tag = "a" ws : id = "linkId " > </ ws . element >
129
+ </ ws . element >
130
+ </ ws . element >
130
131
) ;
131
132
$instances . set ( instances ) ;
132
- selectInstance ( [ "text " , "body " ] ) ;
133
- wrapIn ( "Link ") ;
133
+ selectInstance ( [ "textId " , "bodyId " ] ) ;
134
+ wrapIn ( elementComponent , "a ") ;
134
135
// nothing is changed
135
136
expect ( $instances . get ( ) ) . toEqual ( instances ) ;
136
137
} ) ;
137
138
138
139
test ( "avoid wrapping textual content" , ( ) => {
139
140
const { instances } = renderData (
140
- < $ . Body ws :id = "body" >
141
- < $ . Text ws :id = "text" >
142
- < $ . Bold ws :id = "bold" > </ $ . Bold >
143
- </ $ . Text >
144
- </ $ . Body >
141
+ < ws . element ws :tag = "body" ws :id = "bodyId" >
142
+ < ws . element ws :tag = "div" ws :id = "textId" >
143
+ < ws . element ws :tag = "bold" ws :id = "boldId" > </ ws . element >
144
+ </ ws . element >
145
+ </ ws . element >
146
+ ) ;
147
+ $instances . set ( instances ) ;
148
+ selectInstance ( [ "boldId" , "textId" , "bodyId" ] ) ;
149
+ wrapIn ( elementComponent ) ;
150
+ // nothing is changed
151
+ expect ( $instances . get ( ) ) . toEqual ( instances ) ;
152
+ } ) ;
153
+
154
+ test ( "avoid wrapping list item" , ( ) => {
155
+ const { instances } = renderData (
156
+ < ws . element ws :tag = "body" ws :id = "bodyId" >
157
+ < ws . element ws :tag = "ul" ws :id = "listId" >
158
+ < ws . element ws :tag = "li" ws :id = "listItemId" > </ ws . element >
159
+ </ ws . element >
160
+ </ ws . element >
145
161
) ;
146
162
$instances . set ( instances ) ;
147
- selectInstance ( [ "bold " , "text " , "body " ] ) ;
148
- wrapIn ( "Box" ) ;
163
+ selectInstance ( [ "listItemId " , "listId " , "bodyId " ] ) ;
164
+ wrapIn ( elementComponent ) ;
149
165
// nothing is changed
150
166
expect ( $instances . get ( ) ) . toEqual ( instances ) ;
151
167
} ) ;
0 commit comments