@@ -179,3 +179,65 @@ test('can publish variant content node', async ({umbracoApi, umbracoUi}) => {
179179 const contentData = await umbracoApi . document . getByName ( contentName ) ;
180180 expect ( contentData . variants [ 0 ] . state ) . toBe ( 'Published' ) ;
181181} ) ;
182+
183+ test ( 'can duplicate a content node to root' , async ( { umbracoApi, umbracoUi} ) => {
184+ // Arrange
185+ const duplicatedContentName = contentName + ' (1)' ;
186+ const dataTypeData = await umbracoApi . dataType . getByName ( dataTypeName ) ;
187+ documentTypeId = await umbracoApi . documentType . createDocumentTypeWithPropertyEditor ( documentTypeName , dataTypeName , dataTypeData . id ) ;
188+ contentId = await umbracoApi . document . createDocumentWithTextContent ( contentName , documentTypeId , contentText , dataTypeName ) ;
189+ await umbracoUi . goToBackOffice ( ) ;
190+ await umbracoUi . content . goToSection ( ConstantHelper . sections . content ) ;
191+
192+ // Act
193+ await umbracoUi . content . clickActionsMenuForContent ( contentName ) ;
194+ // Duplicate to root
195+ await umbracoUi . content . clickDuplicateToActionMenuOption ( ) ;
196+ await umbracoUi . content . clickLabelWithName ( 'Content' ) ;
197+ await umbracoUi . content . clickDuplicateButton ( ) ;
198+
199+ // Assert
200+ await umbracoUi . content . doesSuccessNotificationHaveText ( NotificationConstantHelper . success . duplicated ) ;
201+ expect ( await umbracoApi . document . doesNameExist ( contentName ) ) . toBeTruthy ( ) ;
202+ expect ( await umbracoApi . document . doesNameExist ( duplicatedContentName ) ) . toBeTruthy ( ) ;
203+ await umbracoUi . content . isContentInTreeVisible ( contentName ) ;
204+ await umbracoUi . content . isContentInTreeVisible ( duplicatedContentName ) ;
205+ const contentData = await umbracoApi . document . getByName ( contentName ) ;
206+ const duplicatedContentData = await umbracoApi . document . getByName ( duplicatedContentName ) ;
207+ expect ( contentData . values [ 0 ] . value ) . toEqual ( duplicatedContentData . values [ 0 ] . value ) ;
208+
209+ // Clean
210+ await umbracoApi . document . ensureNameNotExists ( duplicatedContentName ) ;
211+ } ) ;
212+
213+ test ( 'can duplicate a content node to other parent' , async ( { umbracoApi, umbracoUi} ) => {
214+ // Arrange
215+ const parentDocumentTypeName = 'ParentDocumentType' ;
216+ const parentContentName = 'ParentContent' ;
217+ const listViewDataTypeName = 'List View - Content' ;
218+ const listViewDataTypeData = await umbracoApi . dataType . getByName ( listViewDataTypeName ) ;
219+ const dataTypeData = await umbracoApi . dataType . getByName ( dataTypeName ) ;
220+ documentTypeId = await umbracoApi . documentType . createDocumentTypeWithPropertyEditor ( documentTypeName , dataTypeName , dataTypeData . id ) ;
221+ contentId = await umbracoApi . document . createDocumentWithTextContent ( contentName , documentTypeId , contentText , dataTypeName ) ;
222+ const parentDocumentTypeId = await umbracoApi . documentType . createDocumentTypeWithAllowedChildNodeAndCollectionId ( parentDocumentTypeName , documentTypeId , listViewDataTypeData . id ) ;
223+ await umbracoApi . document . createDefaultDocument ( parentContentName , parentDocumentTypeId ) ;
224+ await umbracoUi . goToBackOffice ( ) ;
225+ await umbracoUi . content . goToSection ( ConstantHelper . sections . content ) ;
226+
227+ // Act
228+ await umbracoUi . content . clickActionsMenuForContent ( contentName ) ;
229+ await umbracoUi . content . clickDuplicateToActionMenuOption ( ) ;
230+ await umbracoUi . content . clickModalMenuItemWithName ( parentContentName ) ;
231+ await umbracoUi . content . clickDuplicateButton ( ) ;
232+
233+ // Assert
234+ await umbracoUi . content . doesSuccessNotificationHaveText ( NotificationConstantHelper . success . duplicated ) ;
235+ await umbracoUi . content . isContentInTreeVisible ( contentName ) ;
236+ await umbracoUi . content . isContentInTreeVisible ( parentContentName ) ;
237+ await umbracoUi . content . openContentCaretButtonForName ( parentContentName ) ;
238+ await umbracoUi . content . isChildContentInTreeVisible ( parentContentName , contentName ) ;
239+
240+ // Clean
241+ await umbracoApi . document . ensureNameNotExists ( parentContentName ) ;
242+ await umbracoApi . document . ensureNameNotExists ( parentDocumentTypeName ) ;
243+ } ) ;
0 commit comments