Skip to content

Commit f86c713

Browse files
author
Zoltán Takács
committed
Merge branch 'release/2021-05'
2 parents 1e3441e + 2bbbf4a commit f86c713

File tree

118 files changed

+3576
-3481
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+3576
-3481
lines changed

apps/sensenet/cypress.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"identityServer": "https://is.demo.sensenet.com",
88
"users": {
99
"admin": {
10-
"clientId": "businesscat",
10+
"clientId": "KxkgOTAxLLCicUx7",
1111
"clientSecret": "",
1212
"id": "/Root/IMS/Public('businesscat')"
1313
},
Lines changed: 89 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
import { pathWithQueryParams } from '../../../src/services/query-string-builder'
22

3+
const ctdExample = `<ContentType name="MyType" parentType="GenericContent" handler="SenseNet.ContentRepository.GenericContent" xmlns="http://schemas.sensenet.com/SenseNet/ContentRepository/ContentTypeDefinition">
4+
<DisplayName>MyType</DisplayName>
5+
<Description></Description>
6+
<Icon>Content</Icon>
7+
<AllowIncrementalNaming>true</AllowIncrementalNaming>
8+
<Fields>
9+
<Field name="ShortTextField" type="ShortText">
10+
<DisplayName>ShortTextFieldTest</DisplayName>
11+
<Description></Description>
12+
<Configuration>
13+
<MaxLength>100</MaxLength>
14+
<MinLength>0</MinLength>
15+
<ReadOnly>false</ReadOnly>
16+
<Compulsory>false</Compulsory>
17+
<DefaultValue>test</DefaultValue>
18+
<VisibleBrowse>Show</VisibleBrowse>
19+
<VisibleEdit>Show</VisibleEdit>
20+
<VisibleNew>Show</VisibleNew>
21+
</Configuration>
22+
</Field>
23+
</Fields>
24+
</ContentType>`
25+
326
describe('Content types', () => {
427
before(() => {
528
cy.login()
@@ -8,41 +31,79 @@ describe('Content types', () => {
831
.click()
932
})
1033

11-
beforeEach((done) => {
12-
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
13-
let scroll = 0
34+
context('create & delete', () => {
35+
it('should create a new content type', (done) => {
36+
cy.get('[data-test="add-button"]').should('not.be.disabled').click()
37+
cy.get('[data-test="listitem-content-type"]')
38+
.click()
39+
.then(() => {
40+
cy.get('.monaco-editor textarea')
41+
.click({ force: true })
42+
.focused()
43+
.type('{ctrl}a')
44+
.clear()
45+
.invoke('val', ctdExample)
46+
.trigger('input')
1447

15-
function timeout() {
16-
setTimeout(() => {
17-
scroll = scroll + 200
18-
grid.scrollTop(scroll)
48+
cy.contains('Submit').click()
1949

20-
const article = grid.find('[data-test="table-cell-article"]')
21-
if (!article.length) {
22-
timeout()
23-
} else {
24-
article[0].scrollIntoView()
25-
done()
26-
}
27-
}, 100)
28-
}
50+
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
51+
cy.scrollToItem({
52+
container: grid,
53+
selector: '[data-test="table-cell-mytype"]',
54+
done: (element) => {
55+
expect(!!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)).to.equal(
56+
true,
57+
)
58+
done()
59+
},
60+
})
61+
})
62+
})
63+
})
64+
65+
it('should delete a content type', () => {
66+
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
67+
cy.scrollToItem({
68+
container: grid,
69+
selector: '[data-test="table-cell-mytype"]',
70+
}).then(() => {
71+
cy.get(`[data-test="table-cell-mytype"]`).rightclick({ force: true })
2972

30-
timeout()
73+
cy.get('[data-test="content-context-menu-delete"]').click()
74+
cy.get('[data-test="delete-permanently"] input[type="checkbox"]').check()
75+
cy.get('[data-test="button-delete-confirm"]').click()
76+
77+
cy.get('[data-test="table-cell-mytype"]').should('not.exist')
78+
})
79+
})
3180
})
3281
})
3382

34-
afterEach(() => {
35-
cy.get('.ReactVirtualized__Table__Grid').then((grid) => grid.scrollTop(0))
36-
})
83+
context('read', () => {
84+
before((done) => {
85+
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
86+
cy.scrollToItem({
87+
container: grid,
88+
selector: '[data-test="table-cell-article"]',
89+
done: () => {
90+
done()
91+
},
92+
})
93+
})
94+
})
3795

38-
it('clicking on the content types menu item should show article', () => {
39-
cy.get('[data-test="table-cell-article"]').should('be.visible')
40-
})
96+
it('clicking on the content types menu item should show article', () => {
97+
cy.get('[data-test="table-cell-article"]').should('be.visible')
98+
})
4199

42-
it('double clicking on article should open binary editor', () => {
43-
cy.get('[data-test="table-cell-article"]').dblclick({ force: true })
44-
cy.get('div').contains('Article').should('be.visible')
45-
cy.get('.monaco-editor').should('be.visible')
46-
cy.get('[data-test="monaco-editor-cancel"]').click()
100+
it('double clicking on article should open binary editor', () => {
101+
cy.get('[data-test="table-cell-article"]').dblclick({ force: true })
102+
103+
cy.get('[data-test="editor-title"]').should('have.text', 'Article')
104+
cy.get('.monaco-editor').should('exist')
105+
106+
cy.get('[data-test="monaco-editor-cancel"]').click()
107+
})
47108
})
48109
})

apps/sensenet/cypress/integration/drawer/custom-menuitem.spec.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,7 @@ describe('Custom menu item', () => {
2828
},
2929
}
3030

31-
const items = [
32-
'Code review',
33-
'Infrastructure meeting',
34-
'Kickoff meeting',
35-
'Refinement',
36-
'Release',
37-
'Retrospective meeting',
38-
'Sales and product',
39-
'Scrum meeting',
40-
'Tech Call with Thorwell Group',
41-
'Upgrade',
42-
]
31+
const items = ['Awesome demo', 'Cruel deadline', 'Long event', 'Overrated meeting', 'Remarkable event']
4332

4433
cy.visit(
4534
pathWithQueryParams({
@@ -90,7 +79,7 @@ describe('Custom menu item', () => {
9079

9180
cy.intercept({
9281
method: 'GET',
93-
url: '/Root/Content/IT/Calendar',
82+
url: 'odata.svc/Root/Content/IT/Calendar?*',
9483
}).as('getCalendar')
9584

9685
cy.visit(

apps/sensenet/cypress/integration/groups/groups.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ describe('Groups', () => {
6363
it('ensures that deletion of a group is working properly', () => {
6464
cy.intercept({
6565
method: 'GET',
66-
url: '/Root/Trash',
66+
url: 'odata.svc/Root/Trash?*',
6767
}).as('getTrashChildren')
6868

6969
cy.get('[data-test="drawer-menu-item-users-and-groups"]').click()

apps/sensenet/cypress/integration/localization/localization.spec.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
import { pathWithQueryParams } from '../../../src/services/query-string-builder'
22

3+
const exampleLocalization = `<?xml version="1.0" encoding="utf-8"?>
4+
<?xml-stylesheet type="text/xsl" href="view.xslt"?>
5+
<Resources>
6+
<ResourceClass name="Test">
7+
<Languages>
8+
<Language cultureName="en">
9+
<data name="Test" xml:space="preserve">
10+
<value>Test</value>
11+
</data>
12+
</Language>
13+
<Language cultureName="hu">
14+
<data name="Test" xml:space="preserve">
15+
<value>Teszt</value>
16+
</data>
17+
</Language>
18+
</Languages>
19+
</ResourceClass>
20+
</Resources>`
21+
322
describe('Localization', () => {
423
beforeEach(() => {
524
cy.login()
@@ -38,4 +57,51 @@ describe('Localization', () => {
3857

3958
cy.get('[data-test="editor-title"]').should('not.exist')
4059
})
60+
61+
it('should create a new localization file', (done) => {
62+
cy.get('[data-test="add-button"]').should('not.be.disabled').click()
63+
cy.get('[data-test="listitem-resource"]')
64+
.click()
65+
.then(() => {
66+
cy.get('[data-test="editor-title"] input').type('testResource')
67+
68+
cy.get('.monaco-editor textarea')
69+
.click({ force: true })
70+
.focused()
71+
.type('{ctrl}a')
72+
.clear()
73+
.invoke('val', exampleLocalization)
74+
.trigger('input')
75+
76+
cy.contains('Submit').click()
77+
78+
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
79+
cy.scrollToItem({
80+
container: grid,
81+
selector: '[data-test="table-cell-testresource.xml"]',
82+
done: (element) => {
83+
expect(!!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)).to.equal(true)
84+
done()
85+
},
86+
})
87+
})
88+
})
89+
})
90+
91+
it('should delete a localization file', () => {
92+
cy.get('.ReactVirtualized__Table__Grid').then((grid) => {
93+
cy.scrollToItem({
94+
container: grid,
95+
selector: '[data-test="table-cell-testresource.xml"]',
96+
}).then(() => {
97+
cy.get(`[data-test="table-cell-testresource.xml"]`).rightclick({ force: true })
98+
99+
cy.get('[data-test="content-context-menu-delete"]').click()
100+
cy.get('[data-test="delete-permanently"] input[type="checkbox"]').check()
101+
cy.get('[data-test="button-delete-confirm"]').click()
102+
103+
cy.get('[data-test="table-cell-testresource.xml"]').should('not.exist')
104+
})
105+
})
106+
})
41107
})

apps/sensenet/cypress/integration/organizational-unit.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ describe('Organizational units', () => {
5555
cy.get('[data-test="delete-permanently"] input[type="checkbox"]').check()
5656
cy.get('[data-test="button-delete-confirm"]').click()
5757

58-
cy.get('[data-test="menu-item-test1').should('not.exist')
59-
cy.get('[data-test="menu-item-test2').should('not.exist')
58+
cy.get('[data-test="menu-item-test1]').should('not.exist')
59+
cy.get('[data-test="menu-item-test2]').should('not.exist')
6060
})
6161
})
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { pathWithQueryParams } from '../../../src/services/query-string-builder'
2+
3+
describe('Add new permission entry', () => {
4+
before(() => {
5+
cy.login()
6+
cy.visit(pathWithQueryParams({ path: '/', newParams: { repoUrl: Cypress.env('repoUrl') } }))
7+
})
8+
9+
it('opens a new dialog', () => {
10+
cy.viewport(1840, 890)
11+
cy.get('[data-test="drawer-menu-item-content"]').click()
12+
cy.get('[data-test="menu-item-it-workspace"]').rightclick()
13+
cy.get('[data-test="content-context-menu-setpermissions"]').click()
14+
cy.get('[data-test="assing-new-permission"]').click()
15+
cy.get('[data-test="member-select-dialog"]').should('contain.text', 'New permission entry')
16+
17+
cy.get('[data-test="reference-input"]').type('Developer D')
18+
cy.get('[data-test="suggestion-developer-dog"]').click()
19+
cy.get('[data-test="member-select-add"]').click()
20+
cy.get('[data-test="set-on-this-developer-dog"]').should('exist')
21+
cy.get('[data-test="permission-dialog-title"]').should('contain.text', 'Developer Dog')
22+
cy.get('[data-test="permission-editor-cancel"]').click()
23+
cy.get('[data-test="set-on-this-developer-dog"]').should('not.exist')
24+
cy.get('[data-test="permission-dialog-title"]').should('not.exist')
25+
})
26+
})
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { pathWithQueryParams } from '../../../src/services/query-string-builder'
2+
3+
const expectedMembers = ['Developer Dog']
4+
const expectedMembersAfterAdditon = ['Developer Dog', 'Business Cat']
5+
6+
describe('Editing group member in permission editor', () => {
7+
beforeEach(() => {
8+
cy.login()
9+
cy.visit(pathWithQueryParams({ path: '/', newParams: { repoUrl: Cypress.env('repoUrl') } }))
10+
})
11+
12+
it('adding a new member to a group works from permission editor', () => {
13+
cy.get('[data-test="drawer-menu-item-content"]').click()
14+
cy.get('[data-test="menu-item-it-workspace"]').rightclick()
15+
cy.get('[data-test="content-context-menu-setpermissions"]').click()
16+
cy.get('[data-test="permission-inherited-list"]').click()
17+
cy.get('[data-test="inherited-developers"]').click()
18+
cy.get('[data-test="members-tab"]').click()
19+
cy.get('[data-test="reference-list"] li')
20+
.should('have.length', expectedMembers.length)
21+
.each(($el) => {
22+
expect(expectedMembers).to.include($el.children().eq(0).children().eq(1).text())
23+
})
24+
cy.get('[data-test="reference-input"]').type('Business C')
25+
cy.get('[data-test="suggestion-business-cat"]').click()
26+
cy.get('[data-test="add-new-member"]').click()
27+
cy.get('[data-test="reference-list"] li')
28+
.should('have.length', expectedMembersAfterAdditon.length)
29+
.each(($el) => {
30+
expect(expectedMembersAfterAdditon).to.include($el.children().eq(0).children().eq(1).text())
31+
})
32+
cy.get('[data-test="permission-editor-submit"]').click()
33+
cy.get('[data-test="drawer-menu-item-users-and-groups"]').click()
34+
cy.get('[data-test="groups"]').click()
35+
cy.get(`[data-test="developers-members"]`).click()
36+
cy.get('[data-test="reference-list"] li')
37+
.should('have.length', expectedMembersAfterAdditon.length)
38+
.each(($el) => {
39+
expect(expectedMembersAfterAdditon).to.include($el.children().eq(0).children().eq(1).text())
40+
})
41+
cy.get(`[data-test="business-cat-delete"]`).click()
42+
})
43+
44+
it('contains the appropriate values', () => {
45+
cy.get('[data-test="drawer-menu-item-content"]').click()
46+
cy.get('[data-test="menu-item-it-workspace"]').rightclick()
47+
cy.get('[data-test="content-context-menu-setpermissions"]').click()
48+
cy.get('[data-test="permission-inherited-list"]').click()
49+
cy.get('[data-test="inherited-developers"]').click()
50+
cy.get('[data-test="members-tab"]').click()
51+
cy.get('[data-test="reference-list"] li')
52+
.should('have.length', expectedMembers.length)
53+
.each(($el) => {
54+
expect(expectedMembers).to.include($el.children().eq(0).children().eq(1).text())
55+
})
56+
})
57+
})

apps/sensenet/cypress/integration/permission-editor/permission_settings.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ describe('Permission.settings effect on permission dialog', () => {
1717
cy.get('[data-test="permission.settings-edit-button"]').click()
1818
cy.get('.react-monaco-editor-container textarea')
1919
.click({ force: true })
20-
.clear()
2120
.focused()
21+
.type('{ctrl}a')
22+
.clear()
2223
.type(newSettings, { parseSpecialCharSequences: false })
2324
cy.get('[data-test="monaco-editor-submit"]').click()
2425
cy.get('[data-test="drawer-menu-item-content"]').click()
@@ -71,8 +72,9 @@ describe('Permission.settings effect on permission dialog', () => {
7172
cy.get('[data-test="permission.settings-edit-button"]').click()
7273
cy.get('.react-monaco-editor-container textarea')
7374
.click({ force: true })
74-
.clear()
7575
.focused()
76+
.type('{ctrl}a')
77+
.clear()
7678
.type(defaultSettings, { parseSpecialCharSequences: false })
7779
cy.get('[data-test="monaco-editor-submit"]').click()
7880
cy.get('[data-test="drawer-menu-item-content"]').click()

0 commit comments

Comments
 (0)