Skip to content

Commit b8520e1

Browse files
committed
Tests added & tooltip fix
1 parent 3d6c6e1 commit b8520e1

File tree

9 files changed

+194
-47
lines changed

9 files changed

+194
-47
lines changed

eform-client/e2e/Page objects/SettingsPage.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,44 @@ import {SiteInformation} from './SettingsPageObjects/SiteInformation';
22
import {SiteHeader} from './SettingsPageObjects/SiteHeader';
33
import {LoginPage} from './SettingsPageObjects/LoginPage';
44
import {SMTPInformation} from './SettingsPageObjects/SMTPInformation';
5-
import {by, ElementFinder, element, $} from 'protractor';
5+
import {by, ElementFinder, element, $, browser, protractor} from 'protractor';
66
import {By} from '@angular/platform-browser';
77

88

99
export class SettingsPage {
10+
// 4 general sections on Settings page
1011
public LoginPage: LoginPage;
1112
public SiteHeader: SiteHeader;
1213
public SiteInformation: SiteInformation;
1314
public SMTPInformation: SMTPInformation;
15+
// matchers
1416
public headerImageMatcher: By;
17+
public mainTextHeaderMatcher: By;
18+
public secondaryTextHeaderMatcher: By;
19+
// elements
1520
public saveButton: ElementFinder;
21+
public headerMainText: ElementFinder;
22+
public headerSecondaryText: ElementFinder;
23+
24+
// helper functions
25+
public saveAndRefresh(): void {
26+
this.saveButton.click();
27+
browser.wait(protractor.ExpectedConditions.elementToBeClickable(this.saveButton))
28+
browser.refresh();
29+
browser.waitForAngular();
30+
}
1631

1732
constructor() {
33+
// parts of settings
34+
this.SiteHeader = new SiteHeader();
35+
// matchers
1836
this.headerImageMatcher = by.xpath('//*[@id="header_full_top"]/div/div/div[1]/img');
37+
this.secondaryTextHeaderMatcher = by.css('#secondary-header-text');
38+
this.mainTextHeaderMatcher = by.css('#main-header-text');
39+
// elements
1940
this.saveButton = $('button.btn-ar.btn-danger');
20-
this.SiteHeader = new SiteHeader();
41+
this.headerMainText = element(this.mainTextHeaderMatcher);
42+
this.headerSecondaryText = element(this.secondaryTextHeaderMatcher);
43+
2144
}
2245
}
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,27 @@
1-
import {by, element, ElementFinder} from 'protractor';
1+
import {$, browser, by, element, ElementFinder} from 'protractor';
22

33
export class SiteHeader {
44
public resetButton: ElementFinder;
5-
public logoButton: ElementFinder;
5+
public headerImageHideButton: ElementFinder;
6+
public mainTextInput: ElementFinder;
7+
public secondaryTextInput: ElementFinder;
8+
public hideMainTextButton: ElementFinder;
9+
public hideSecondaryTextButton: ElementFinder;
10+
public secondaryTextHeader: ElementFinder;
11+
12+
public resetAndRefresh(): void {
13+
browser.sleep(2000);
14+
this.resetButton.click();
15+
browser.refresh();
16+
browser.waitForAngularEnabled();
17+
}
618

719
constructor() {
8-
this.logoButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admi' +
9-
'n-settings/div/div/form/div[1]/div/div[2]/div/table/tbody/tr[3]/td[2]/div/div[3]/span'));
10-
this.resetButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admin-settings/div/div/form/' +
11-
'div[1]/div/div[2]/div/div/div/div[2]/button'));
20+
this.headerImageHideButton = $('#imageSiteHeaderHide');
21+
this.resetButton = $('#siteHeaderReset');
22+
this.mainTextInput = $('#headerSettingsMainText');
23+
this.secondaryTextInput = $('#headerSettingsSecondaryText');
24+
this.hideMainTextButton = $('#mainTextSiteHeaderHide');
25+
this.hideSecondaryTextButton = $('#secondaryTextSiteHeaderHide');
1226
}
1327
}

eform-client/e2e/data.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
11
export default {
2-
login: "admin",
3-
password: "Qq1234567$"
2+
login: 'admin',
3+
password: 'Qq1234567$',
4+
SiteHeaderSettings: {
5+
defaultSettings: {
6+
headerMainText: 'Microting eForm',
7+
headerSecondaryText: 'No more paper-forms and back-office data entry'
8+
},
9+
customSettings: {
10+
mainTextSample: 'Sample main text',
11+
secondaryTextSample: 'Sample secondary text'
12+
}
13+
14+
}
15+
416
};
17+
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
///<reference path="Page objects/LoginPage.ts"/>
2+
import {browser, by, element, ExpectedConditions, $} from 'protractor';
3+
import {default as data} from './data';
4+
import {SettingsPage} from './Page objects/SettingsPage';
5+
import {LoginPage} from './Page objects/LoginPage';
6+
import {MainPage} from './Page objects/MainPage';
7+
8+
const loginPage: LoginPage = new LoginPage();
9+
const mainPage: MainPage = new MainPage();
10+
const settingsPage: SettingsPage = new SettingsPage();
11+
12+
13+
beforeAll((done) => {
14+
browser.get('/');
15+
loginPage.usernameInput.sendKeys(data.login);
16+
loginPage.passwordInput.sendKeys(data.password);
17+
loginPage.loginButton.click();
18+
mainPage.advancedButton.click();
19+
mainPage.settingsButton.click();
20+
done();
21+
});
22+
23+
describe('Reset button in Settings', function () {
24+
25+
beforeAll(function (done) {
26+
settingsPage.SiteHeader.resetButton.click();
27+
browser.refresh();
28+
done();
29+
});
30+
31+
it('should reset image', function (done) {
32+
33+
/*const isExit: Boolean = */
34+
expect(browser.isElementPresent(settingsPage.headerImageMatcher))
35+
.toBeTruthy();
36+
/*if (isExit) {
37+
browser.driver.close().then(function () {
38+
process.exit(1);
39+
});
40+
}*/
41+
done();
42+
});
43+
it('should reset header main text', function (done) {
44+
/*const isExit: Boolean =*/
45+
expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeTruthy();
46+
expect(settingsPage.headerMainText.getText())
47+
.toEqual(data.SiteHeaderSettings.defaultSettings.headerMainText);
48+
/*if (isExit) {
49+
browser.driver.close().then(function () {
50+
process.exit(1);
51+
});
52+
}*/
53+
done();
54+
});
55+
it('should reset header secondary text', function (done) {
56+
/*const isExit: Boolean = */
57+
expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeTruthy();
58+
expect(settingsPage.headerSecondaryText.getText())
59+
.toEqual(data.SiteHeaderSettings.defaultSettings.headerSecondaryText);
60+
/*if (isExit) {
61+
browser.driver.close().then(function () {
62+
process.exit(1);
63+
});
64+
}*/
65+
done();
66+
});
67+
});
68+
69+
describe('Settings in Site header section', () => {
70+
71+
afterEach((done) => {
72+
settingsPage.SiteHeader.resetAndRefresh();
73+
done();
74+
});
75+
76+
it('should hide logo in header', (done) => {
77+
78+
expect(element(settingsPage.headerImageMatcher).isDisplayed()).toBeTruthy();
79+
settingsPage.SiteHeader.headerImageHideButton.click();
80+
settingsPage.saveAndRefresh();
81+
expect(browser.isElementPresent(settingsPage.headerImageMatcher)).toBeFalsy();
82+
done();
83+
});
84+
85+
it('should change Main text in header', function (done) {
86+
settingsPage.SiteHeader.mainTextInput.clear();
87+
settingsPage.SiteHeader.mainTextInput.sendKeys(data.SiteHeaderSettings.customSettings.mainTextSample);
88+
settingsPage.saveAndRefresh();
89+
expect(settingsPage.headerMainText.getText())
90+
.toEqual(data.SiteHeaderSettings.customSettings.mainTextSample);
91+
done();
92+
});
93+
94+
it('should change secondary text', function (done) {
95+
settingsPage.SiteHeader.secondaryTextInput.clear();
96+
settingsPage.SiteHeader.secondaryTextInput.sendKeys(data.SiteHeaderSettings.customSettings.secondaryTextSample);
97+
settingsPage.saveAndRefresh();
98+
expect(settingsPage.headerSecondaryText.getText()).toEqual(data.SiteHeaderSettings.customSettings.secondaryTextSample);
99+
done();
100+
});
101+
102+
it('should hide main text', function (done) {
103+
settingsPage.SiteHeader.hideMainTextButton.click();
104+
settingsPage.saveAndRefresh();
105+
expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeFalsy();
106+
done();
107+
});
108+
109+
it('should hide secodary text', function (done) {
110+
settingsPage.SiteHeader.hideSecondaryTextButton.click();
111+
settingsPage.saveAndRefresh();
112+
expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeFalsy();
113+
done();
114+
});
115+
116+
xit('should be able to change logo file', function () {
117+
// Will be implemented soon
118+
});
119+
120+
});

eform-client/e2e/spec.e2e-spec.ts

Lines changed: 0 additions & 31 deletions
This file was deleted.

eform-client/protractor.conf.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@ exports.config = {
2929
onPrepare: function () {
3030
jasmine.getEnv().addReporter(new SpecReporter());
3131
}
32+
3233
};

eform-client/src/app/components/header/header.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
</div>
1010
<div class="header-product-title-description">
1111
<h4 class="text-right h4-wrapper" *ngIf="headerSettingsModel.mainTextVisible">
12-
<strong>{{headerSettingsModel.mainText}}</strong>
12+
<strong id="main-header-text">{{headerSettingsModel.mainText}}</strong>
1313
</h4>
14-
<h5 class="text-right h5-wrapper" *ngIf="headerSettingsModel.secondaryTextVisible">
14+
<h5 id="secondary-header-text" class="text-right h5-wrapper" *ngIf="headerSettingsModel.secondaryTextVisible">
1515
{{headerSettingsModel.secondaryText}}
1616
</h5>
1717
</div>

eform-client/src/app/modules/cases/cases.module.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
ElementSignatureComponent,
2626
TrumbowygComponent
2727
} from './components/case-elements';
28-
import {CollapseModule} from 'ngx-bootstrap';
28+
import {CollapseModule, TooltipModule} from 'ngx-bootstrap';
2929
import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal';
3030

3131
@NgModule({
@@ -35,7 +35,8 @@ import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal';
3535
FormsModule,
3636
CasesRoutingModule,
3737
CollapseModule.forRoot(),
38-
Ng2Bs3ModalModule
38+
Ng2Bs3ModalModule,
39+
TooltipModule.forRoot(),
3940
],
4041
declarations: [CasesComponent,
4142
TrumbowygComponent,

eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ <h1 class="page-title header-page-title">
2626
Login page
2727
</div>
2828
<div class="col-md-2 col-xs-2 text-right">
29-
<button class="btn btn-ar btn-default" tooltip="Reset" (click)="resetLoginPageSettings()">
29+
<button class="btn btn-ar btn-default" id="loginPageReset" tooltip="Reset" (click)="resetLoginPageSettings()">
3030
<i class="fa fa-repeat" aria-hidden="true"></i> </button>
3131

3232
</div>
@@ -43,6 +43,7 @@ <h1 class="page-title header-page-title">
4343
<input class="form-control" [(ngModel)]="adminSettingsModel.loginPageSettingsModel.mainText"
4444
type="text" #mainTextLoginPage="ngModel" name="mainTextLoginPage" id="mainTextLoginPage"/>
4545
<span class="input-group-addon btn glyphicon"
46+
id="mainTextLoginPageHide"
4647
[class.success]="adminSettingsModel.loginPageSettingsModel.mainTextVisible"
4748
[class.glyphicon-eye-open] = "adminSettingsModel.loginPageSettingsModel.mainTextVisible"
4849
[class.danger]="!adminSettingsModel.loginPageSettingsModel.mainTextVisible"
@@ -61,6 +62,7 @@ <h1 class="page-title header-page-title">
6162
<input class="form-control" [(ngModel)]="adminSettingsModel.loginPageSettingsModel.secondaryText" type="text" #secondaryTextLoginPage="ngModel"
6263
name="secondaryTextLoginPage" id="secondaryTextLoginPage"/>
6364
<span class="input-group-addon btn glyphicon"
65+
id="secondaryTextLoginPageHide"
6466
[class.success]="adminSettingsModel.loginPageSettingsModel.secondaryTextVisible"
6567
[class.glyphicon-eye-open] = "adminSettingsModel.loginPageSettingsModel.secondaryTextVisible"
6668
[class.danger]="!adminSettingsModel.loginPageSettingsModel.secondaryTextVisible"
@@ -87,6 +89,7 @@ <h1 class="page-title header-page-title">
8789
<input type="file" ng2FileSelect [uploader]="loginPageImageUploader" class="image-input-wrapper"/>
8890
<!--<input name="myFile" type="file" class="image-input-wrapper" /> -->
8991
<span class="btn glyphicon pull-right" style="border-radius: 0px"
92+
id="imageLoginPageHide"
9093
[class.btn-success]="adminSettingsModel.loginPageSettingsModel.imageLinkVisible"
9194
[class.glyphicon-eye-open] = "adminSettingsModel.loginPageSettingsModel.imageLinkVisible"
9295
[class.btn-danger]="!adminSettingsModel.loginPageSettingsModel.imageLinkVisible"
@@ -116,7 +119,7 @@ <h1 class="page-title header-page-title">
116119
Site header
117120
</div>
118121
<div class="col-md-2 col-xs-2 text-right">
119-
<button class="btn btn-ar btn-default" tooltip="Reset" (click)="resetHeaderSettings()">
122+
<button class="btn btn-ar btn-default" id="siteHeaderReset" tooltip="Reset" (click)="resetHeaderSettings()">
120123
<i class="fa fa-repeat" aria-hidden="true"></i>
121124
</button>
122125
</div>
@@ -133,6 +136,7 @@ <h1 class="page-title header-page-title">
133136
<input class="form-control" [(ngModel)]="adminSettingsModel.headerSettingsModel.mainText" type="text" #headerSettingsMainText="ngModel"
134137
name="headerSettingsMainText" id="headerSettingsMainText"/>
135138
<span class="input-group-addon btn glyphicon"
139+
id="mainTextSiteHeaderHide"
136140
[class.success]="adminSettingsModel.headerSettingsModel.mainTextVisible"
137141
[class.glyphicon-eye-open] = "adminSettingsModel.headerSettingsModel.mainTextVisible"
138142
[class.danger]="!adminSettingsModel.headerSettingsModel.mainTextVisible"
@@ -150,6 +154,7 @@ <h1 class="page-title header-page-title">
150154
<input class="form-control" [(ngModel)]="adminSettingsModel.headerSettingsModel.secondaryText" type="text" #headerSettingsSecondaryText="ngModel"
151155
name="headerSettingsSecondaryText" id="headerSettingsSecondaryText"/>
152156
<span class="input-group-addon btn glyphicon"
157+
id="secondaryTextSiteHeaderHide"
153158
[class.success]="adminSettingsModel.headerSettingsModel.secondaryTextVisible"
154159
[class.glyphicon-eye-open] = "adminSettingsModel.headerSettingsModel.secondaryTextVisible"
155160
[class.danger]="!adminSettingsModel.headerSettingsModel.secondaryTextVisible"
@@ -176,6 +181,7 @@ <h1 class="page-title header-page-title">
176181
<div class="col-md-5">
177182
<input type="file" ng2FileSelect [uploader]="headerImageUploader" class="image-input-wrapper"/>
178183
<span class="btn glyphicon pull-right" style="border-radius: 0px"
184+
id="imageSiteHeaderHide"
179185
[class.btn-success]="adminSettingsModel.headerSettingsModel.imageLinkVisible"
180186
[class.glyphicon-eye-open] = "adminSettingsModel.headerSettingsModel.imageLinkVisible"
181187
[class.btn-danger]="!adminSettingsModel.headerSettingsModel.imageLinkVisible"

0 commit comments

Comments
 (0)