diff --git a/eform-client/e2e/Page objects/SettingsPage.ts b/eform-client/e2e/Page objects/SettingsPage.ts index 8fe223860a..7d91d621e1 100644 --- a/eform-client/e2e/Page objects/SettingsPage.ts +++ b/eform-client/e2e/Page objects/SettingsPage.ts @@ -2,21 +2,44 @@ import {SiteInformation} from './SettingsPageObjects/SiteInformation'; import {SiteHeader} from './SettingsPageObjects/SiteHeader'; import {LoginPage} from './SettingsPageObjects/LoginPage'; import {SMTPInformation} from './SettingsPageObjects/SMTPInformation'; -import {by, ElementFinder, element, $} from 'protractor'; +import {by, ElementFinder, element, $, browser, protractor} from 'protractor'; import {By} from '@angular/platform-browser'; export class SettingsPage { + // 4 general sections on Settings page public LoginPage: LoginPage; public SiteHeader: SiteHeader; public SiteInformation: SiteInformation; public SMTPInformation: SMTPInformation; + // matchers public headerImageMatcher: By; + public mainTextHeaderMatcher: By; + public secondaryTextHeaderMatcher: By; + // elements public saveButton: ElementFinder; + public headerMainText: ElementFinder; + public headerSecondaryText: ElementFinder; + + // helper functions + public saveAndRefresh(): void { + this.saveButton.click(); + browser.wait(protractor.ExpectedConditions.elementToBeClickable(this.saveButton)) + browser.refresh(); + browser.waitForAngular(); + } constructor() { + // parts of settings + this.SiteHeader = new SiteHeader(); + // matchers this.headerImageMatcher = by.xpath('//*[@id="header_full_top"]/div/div/div[1]/img'); + this.secondaryTextHeaderMatcher = by.css('#secondary-header-text'); + this.mainTextHeaderMatcher = by.css('#main-header-text'); + // elements this.saveButton = $('button.btn-ar.btn-danger'); - this.SiteHeader = new SiteHeader(); + this.headerMainText = element(this.mainTextHeaderMatcher); + this.headerSecondaryText = element(this.secondaryTextHeaderMatcher); + } } diff --git a/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts b/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts index da7f523851..698f38b0d7 100644 --- a/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts +++ b/eform-client/e2e/Page objects/SettingsPageObjects/SiteHeader.ts @@ -1,13 +1,27 @@ -import {by, element, ElementFinder} from 'protractor'; +import {$, browser, by, element, ElementFinder} from 'protractor'; export class SiteHeader { public resetButton: ElementFinder; - public logoButton: ElementFinder; + public headerImageHideButton: ElementFinder; + public mainTextInput: ElementFinder; + public secondaryTextInput: ElementFinder; + public hideMainTextButton: ElementFinder; + public hideSecondaryTextButton: ElementFinder; + public secondaryTextHeader: ElementFinder; + + public resetAndRefresh(): void { + browser.sleep(2000); + this.resetButton.click(); + browser.refresh(); + browser.waitForAngularEnabled(); + } constructor() { - this.logoButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admi' + - 'n-settings/div/div/form/div[1]/div/div[2]/div/table/tbody/tr[3]/td[2]/div/div[3]/span')); - this.resetButton = element(by.xpath('/html/body/eform-root/eform-fulllayout/app-admin-settings/div/div/form/' + - 'div[1]/div/div[2]/div/div/div/div[2]/button')); + this.headerImageHideButton = $('#imageSiteHeaderHide'); + this.resetButton = $('#siteHeaderReset'); + this.mainTextInput = $('#headerSettingsMainText'); + this.secondaryTextInput = $('#headerSettingsSecondaryText'); + this.hideMainTextButton = $('#mainTextSiteHeaderHide'); + this.hideSecondaryTextButton = $('#secondaryTextSiteHeaderHide'); } } diff --git a/eform-client/e2e/data.ts b/eform-client/e2e/data.ts index ad70e48bde..40a99d74d0 100644 --- a/eform-client/e2e/data.ts +++ b/eform-client/e2e/data.ts @@ -1,4 +1,17 @@ export default { - login: "admin", - password: "Qq1234567$" + login: 'admin', + password: 'Qq1234567$', + SiteHeaderSettings: { + defaultSettings: { + headerMainText: 'Microting eForm', + headerSecondaryText: 'No more paper-forms and back-office data entry' + }, + customSettings: { + mainTextSample: 'Sample main text', + secondaryTextSample: 'Sample secondary text' + } + + } + }; + diff --git a/eform-client/e2e/settings.site-header.e2e-spec.ts b/eform-client/e2e/settings.site-header.e2e-spec.ts new file mode 100644 index 0000000000..7f7f09ec4a --- /dev/null +++ b/eform-client/e2e/settings.site-header.e2e-spec.ts @@ -0,0 +1,120 @@ +/// +import {browser, by, element, ExpectedConditions, $} from 'protractor'; +import {default as data} from './data'; +import {SettingsPage} from './Page objects/SettingsPage'; +import {LoginPage} from './Page objects/LoginPage'; +import {MainPage} from './Page objects/MainPage'; + +const loginPage: LoginPage = new LoginPage(); +const mainPage: MainPage = new MainPage(); +const settingsPage: SettingsPage = new SettingsPage(); + + +beforeAll((done) => { + browser.get('/'); + loginPage.usernameInput.sendKeys(data.login); + loginPage.passwordInput.sendKeys(data.password); + loginPage.loginButton.click(); + mainPage.advancedButton.click(); + mainPage.settingsButton.click(); + done(); +}); + +describe('Reset button in Settings', function () { + + beforeAll(function (done) { + settingsPage.SiteHeader.resetButton.click(); + browser.refresh(); + done(); + }); + + it('should reset image', function (done) { + + /*const isExit: Boolean = */ + expect(browser.isElementPresent(settingsPage.headerImageMatcher)) + .toBeTruthy(); + /*if (isExit) { + browser.driver.close().then(function () { + process.exit(1); + }); + }*/ + done(); + }); + it('should reset header main text', function (done) { + /*const isExit: Boolean =*/ + expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeTruthy(); + expect(settingsPage.headerMainText.getText()) + .toEqual(data.SiteHeaderSettings.defaultSettings.headerMainText); + /*if (isExit) { + browser.driver.close().then(function () { + process.exit(1); + }); + }*/ + done(); + }); + it('should reset header secondary text', function (done) { + /*const isExit: Boolean = */ + expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeTruthy(); + expect(settingsPage.headerSecondaryText.getText()) + .toEqual(data.SiteHeaderSettings.defaultSettings.headerSecondaryText); + /*if (isExit) { + browser.driver.close().then(function () { + process.exit(1); + }); + }*/ + done(); + }); +}); + +describe('Settings in Site header section', () => { + + afterEach((done) => { + settingsPage.SiteHeader.resetAndRefresh(); + done(); + }); + + it('should hide logo in header', (done) => { + + expect(element(settingsPage.headerImageMatcher).isDisplayed()).toBeTruthy(); + settingsPage.SiteHeader.headerImageHideButton.click(); + settingsPage.saveAndRefresh(); + expect(browser.isElementPresent(settingsPage.headerImageMatcher)).toBeFalsy(); + done(); + }); + + it('should change Main text in header', function (done) { + settingsPage.SiteHeader.mainTextInput.clear(); + settingsPage.SiteHeader.mainTextInput.sendKeys(data.SiteHeaderSettings.customSettings.mainTextSample); + settingsPage.saveAndRefresh(); + expect(settingsPage.headerMainText.getText()) + .toEqual(data.SiteHeaderSettings.customSettings.mainTextSample); + done(); + }); + + it('should change secondary text', function (done) { + settingsPage.SiteHeader.secondaryTextInput.clear(); + settingsPage.SiteHeader.secondaryTextInput.sendKeys(data.SiteHeaderSettings.customSettings.secondaryTextSample); + settingsPage.saveAndRefresh(); + expect(settingsPage.headerSecondaryText.getText()).toEqual(data.SiteHeaderSettings.customSettings.secondaryTextSample); + done(); + }); + + it('should hide main text', function (done) { + settingsPage.SiteHeader.hideMainTextButton.click(); + settingsPage.saveAndRefresh(); + expect(browser.isElementPresent(settingsPage.mainTextHeaderMatcher)).toBeFalsy(); + done(); + }); + + it('should hide secodary text', function (done) { + settingsPage.SiteHeader.hideSecondaryTextButton.click(); + settingsPage.saveAndRefresh(); + expect(browser.isElementPresent(settingsPage.secondaryTextHeaderMatcher)).toBeFalsy(); + done(); + }); + + xit('should be able to change logo file', function () { + // Will be implemented soon + }); + +}); diff --git a/eform-client/e2e/spec.e2e-spec.ts b/eform-client/e2e/spec.e2e-spec.ts deleted file mode 100644 index 4bcce68fc0..0000000000 --- a/eform-client/e2e/spec.e2e-spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -/// -import {browser, by, element, ExpectedConditions, $} from 'protractor'; -import {default as data} from './data'; -import {SettingsPage} from './Page objects/SettingsPage'; -import {LoginPage} from './Page objects/LoginPage'; -import {MainPage} from './Page objects/MainPage'; - -const loginPage: LoginPage = new LoginPage(); -const mainPage: MainPage = new MainPage(); -const settingsPage: SettingsPage = new SettingsPage(); - - -describe('Header image button', () => { - it('should hide logo in header', (done) => { - - browser.get('/'); - loginPage.usernameInput.sendKeys(data.login); - loginPage.passwordInput.sendKeys(data.password); - loginPage.loginButton.click(); - mainPage.advancedButton.click(); - mainPage.settingsButton.click(); - expect(element(settingsPage.headerImageMatcher).isDisplayed()).toBeTruthy(); - settingsPage.SiteHeader.logoButton.click(); - settingsPage.saveButton.click(); - browser.refresh(); - expect(browser.isElementPresent(settingsPage.headerImageMatcher)).toBeFalsy(); - browser.sleep(2000); - settingsPage.SiteHeader.resetButton.click(); - done(); - }); -}); diff --git a/eform-client/protractor.conf.js b/eform-client/protractor.conf.js index 57a7711671..d89d7d8eb5 100644 --- a/eform-client/protractor.conf.js +++ b/eform-client/protractor.conf.js @@ -29,4 +29,5 @@ exports.config = { onPrepare: function () { jasmine.getEnv().addReporter(new SpecReporter()); } + }; diff --git a/eform-client/src/app/components/header/header.component.html b/eform-client/src/app/components/header/header.component.html index beca42a8f5..3e1ce19fcc 100644 --- a/eform-client/src/app/components/header/header.component.html +++ b/eform-client/src/app/components/header/header.component.html @@ -9,9 +9,9 @@

- {{headerSettingsModel.mainText}} + {{headerSettingsModel.mainText}}

-
+
{{headerSettingsModel.secondaryText}}
diff --git a/eform-client/src/app/modules/cases/cases.module.ts b/eform-client/src/app/modules/cases/cases.module.ts index 61387b2a6a..90840b0312 100644 --- a/eform-client/src/app/modules/cases/cases.module.ts +++ b/eform-client/src/app/modules/cases/cases.module.ts @@ -25,7 +25,7 @@ import { ElementSignatureComponent, TrumbowygComponent } from './components/case-elements'; -import {CollapseModule} from 'ngx-bootstrap'; +import {CollapseModule, TooltipModule} from 'ngx-bootstrap'; import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal'; @NgModule({ @@ -35,7 +35,8 @@ import {Ng2Bs3ModalModule} from 'ng2-bs3-modal/ng2-bs3-modal'; FormsModule, CasesRoutingModule, CollapseModule.forRoot(), - Ng2Bs3ModalModule + Ng2Bs3ModalModule, + TooltipModule.forRoot(), ], declarations: [CasesComponent, TrumbowygComponent, diff --git a/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html b/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html index a63efdbabc..6819cc4cb5 100644 --- a/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html +++ b/eform-client/src/app/modules/settings/components/admin-settings/admin-settings.component.html @@ -26,7 +26,7 @@

Login page
-
@@ -43,6 +43,7 @@

Site header
-
@@ -133,6 +136,7 @@