diff --git a/config/karma.conf.js b/config/karma.conf.js index 4aab8848d..7db54c254 100644 --- a/config/karma.conf.js +++ b/config/karma.conf.js @@ -39,6 +39,8 @@ module.exports = function(config){ 'public/js/app/shared/services/cookie-svc.js', 'public/js/app/shared/services/site-settings-rest.js', 'public/js/app/shared/filters/filters.js', + 'public/js/app/shared/filters/show-number-of-items-filter.js', + 'public/js/app/shared/filters/sum-by-key-filter.js', 'public/js/app/shared/services/global-data.js', 'public/js/app/shared/services/site-settings-rest.js', 'public/js/app/shared/services/configuration-service.js', @@ -155,7 +157,8 @@ module.exports = function(config){ 'test/unit/orders/*.js', 'test/unit/products/*.js', 'test/unit/search/*.js', - 'test/unit/shared/*.js' + 'test/unit/shared/*.js', + 'test/unit/shared/*/*.js' ], diff --git a/config/protractor-conf.js b/config/protractor-conf.js index 9a3354aa1..32ed32832 100644 --- a/config/protractor-conf.js +++ b/config/protractor-conf.js @@ -2,6 +2,7 @@ var ScreenShotReporter = require('protractor-screenshot-reporter'); exports.config = { allScriptsTimeout: 45000, + //comment out keys to run locally sauceUser: process.env.SAUCE_USERNAME, sauceKey: process.env.SAUCE_ACCESS_KEY, @@ -19,7 +20,7 @@ exports.config = { 'browserName': 'chrome', 'maxInstances': 6, 'shardTestFiles': true, - //comment out the following capabilities to run locally + //comment out the following Saucelabs capabilities to run locally 'platform': 'OS X 10.8', 'screen-resolution': '1280x1024', 'record-video': false, @@ -28,7 +29,7 @@ exports.config = { // not currently using phantomjs // 'browserName': 'phantomjs', - 'phantomjs.cli.args': ['--ignore-ssl-errors=true', '--web-security=false', '--ssl-protocol=any'] + // 'phantomjs.cli.args': ['--ignore-ssl-errors=true', '--web-security=false', '--ssl-protocol=any'] }, diff --git a/public/index.html b/public/index.html index 604c71fa2..02e35f57d 100644 --- a/public/index.html +++ b/public/index.html @@ -84,6 +84,8 @@ + + diff --git a/public/js/app/account/controllers/account-ctrl.js b/public/js/app/account/controllers/account-ctrl.js index 3c51bd627..0c3742486 100644 --- a/public/js/app/account/controllers/account-ctrl.js +++ b/public/js/app/account/controllers/account-ctrl.js @@ -47,18 +47,8 @@ angular.module('ds.account') $scope.showAllOrdersButton = true; $scope.showOrderButtons = ($scope.orders.length >= $scope.showOrdersDefault); $scope.showOrdersFilter = $scope.showOrdersDefault; - - $scope.titles = []; - var titlesToTranslate = ['MR', 'MS', 'MRS', 'DR']; - /* - need to translate titles on page load - */ - angular.forEach(titlesToTranslate, function (title) { - $translate(title).then(function (translatedValue) { - $scope.titles.push(translatedValue); - }); - }); + $scope.titles = GlobalData.getUserTitles(); $scope.editAccountInfo = function(mtype){ $scope.mtype = mtype; @@ -227,8 +217,6 @@ angular.module('ds.account') // show filtered list or show all orders. Hide if all data is shown within filter. $scope.showOrdersFilter = $scope.showAllOrdersButton ? $scope.showOrdersDefault : $scope.orders.length; $scope.showOrderButtons = ($scope.orders.length > $scope.showOrdersDefault); - - }); }; diff --git a/public/js/app/account/templates/account.html b/public/js/app/account/templates/account.html index b6180a976..ceff83e8e 100644 --- a/public/js/app/account/templates/account.html +++ b/public/js/app/account/templates/account.html @@ -25,11 +25,11 @@
{{'A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO' | translate}} {{confirmationDetails.emailAddress}}
+{{'THE_SHIPMENT_IS_SCHEDULED_TO_ARRIVE_AT_THE_FOLLOWING_LOCATION' | translate}}:
@@ -34,7 +34,7 @@+
Eine Kopie Ihrer Bestelldetails wurde an {{emailAddress}}
gesendet', + A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO:'Eine Kopie Ihrer Bestelldetails wurde an {{emailAddress}} gesendet
', //XMSG ENJOY_YOUR_ITEMS:'Viel Freude an Ihrem Einkauf!', //XMSG @@ -239,7 +239,7 @@ angular.module('ds.i18n') //XMSG ITEMS_IN_YOUR_ORDER:'Positionen in Ihrer Bestellung', //XMSG - QUESTIONS:'Bei Fragen kontaktieren Sie uns unter {{questionsContactInfo}}.
', + QUESTIONS:'Bei Fragen kontaktieren Sie uns unter {{contactInfo}}.
', //XFLD ORDER:'Bestellung', //XBUT @@ -361,13 +361,19 @@ angular.module('ds.i18n') //XFLD STREET_NUMBER:'Hausnummer', //XTIT - WELCOME:'Willkommen, ,A copy of your order details has been sent to {{emailAddress}}
', //XMSG ENJOY_YOUR_ITEMS: 'Enjoy your items!', //XMSG @@ -249,7 +249,7 @@ angular.module('ds.i18n') //XMSG ITEMS_IN_YOUR_ORDER: 'Items in your order', //XMSG - QUESTIONS: 'If you have any questions, contact us at', + QUESTIONS: 'If you have any questions, contact us at {{contactInfo}}.
', //XFLD ORDER: 'Order', //XBUT @@ -267,9 +267,7 @@ angular.module('ds.i18n') //XMSG YOUR_ORDER_IS: 'Your order # is ', //XMSG - ONE_MORE_STEP: 'One More Step to Create an Account', - //XMSG - ONE_MORE_STEP_MESSAGE: 'for a Fast Checkout and Easy Access to Previous Orders', + ONE_MORE_STEP: 'One More Step to Create an Account for a Fast Checkout and Easy Access to Previous Orders', //XFLD SKU: 'SKU', @@ -387,8 +385,6 @@ angular.module('ds.i18n') //XTIT WELCOME: 'Welcome', //XFLD - ITEMS_IN_ORDER: 'Items In Order', - //XFLD NOT_SET: 'Not Set', //XGRP ORDER_HISTORY: 'Order History', @@ -396,6 +392,12 @@ angular.module('ds.i18n') ORDER_NUMBER: 'Order Number', //XFLD ORDER_STATUS: 'Order Status', + + //XSEL + ORDER_ITEM_COUNT: '{{number}} Item', + //XSEL + ORDER_ITEMS_COUNT: '{{number}} Items', + //XFLD SHIPPING_DETAILS: 'SHIPPING DETAILS', //XBUT @@ -418,6 +420,8 @@ angular.module('ds.i18n') SHOW_ALL: 'Show all', //XFLD SHOW_LESS: 'Show less', + //XFLD + ITEMS_IN_ORDER: 'Items in Order', //XFLD @@ -577,7 +581,7 @@ angular.module('ds.i18n') //------------------------------------------------- //XFLD - FOUND_FOR: 'found for', + FOUND_FOR: '{{total}} found for {{searchString}}', //XACT SEARCH: 'Search', //XFLD @@ -605,4 +609,4 @@ angular.module('ds.i18n') //XFLD SITE_MAP: 'Site Map', - }); \ No newline at end of file + }); diff --git a/public/js/app/shared/router.js b/public/js/app/shared/router.js index 25e115468..52875558f 100644 --- a/public/js/app/shared/router.js +++ b/public/js/app/shared/router.js @@ -82,9 +82,10 @@ angular.module('ds.router', []) } }, resolve:{ - searchString: function ($stateParams) { + searchString: ['$sanitize', '$stateParams', function ($sanitize, $stateParams) { + $stateParams.searchString = $sanitize($stateParams.searchString); return $stateParams.searchString; - } + }] } }) diff --git a/public/js/app/shared/services/global-data.js b/public/js/app/shared/services/global-data.js index d281c374c..65b6405b5 100644 --- a/public/js/app/shared/services/global-data.js +++ b/public/js/app/shared/services/global-data.js @@ -362,6 +362,10 @@ angular.module('ds.shared') getEmailRegEx: function(){ return (/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i); + }, + + getUserTitles: function () { + return ['', 'MR', 'MS', 'MRS', 'DR']; } }; diff --git a/public/less/_cart.less b/public/less/_cart.less index 93f64e7a4..77a895a99 100644 --- a/public/less/_cart.less +++ b/public/less/_cart.less @@ -1,6 +1,6 @@ #cart{ background: @lightergrey; - + .cartContainer{ height: 100%; } @@ -9,7 +9,7 @@ padding: 10px 0; } - /* TOP BUTTON ROW */ + /* TOP BUTTON ROW */ .btn-group{ &.checkout{ &.disabled{ @@ -23,7 +23,7 @@ .btn{ font-size: 14px; padding: 26px; - } + } } .empty-cart-text{ @@ -32,8 +32,8 @@ } .summary{ padding: 10px 15px 0; - - + + } /* PROMO MESSAGE */ @@ -60,7 +60,7 @@ margin: 0; } - /* QTY SELECTOR */ + /* QTY SELECTOR */ .input-group{ max-width: 145px; .form-control{ @@ -85,7 +85,7 @@ .visible-sm; .visible-xs; } - + .detail-col .delete{ position: absolute; top: 0; diff --git a/public/less/_checkout.less b/public/less/_checkout.less index 03741a99c..570e152f8 100644 --- a/public/less/_checkout.less +++ b/public/less/_checkout.less @@ -117,7 +117,7 @@ } .excerpt{ - border-bottom: 1px solid #bebebe; + border-bottom: 1px solid #bebebe; overflow: hidden; padding-top: 4px; } @@ -199,14 +199,15 @@ .couponApplyContainer{ padding: 15px 0 40px 15px; + overflow: hidden; input{ - width: 75%; + width: 60%; } .couponInputBtn{ height: 34px; - + width: 40%; } } diff --git a/scripts/e2e-test.sh b/scripts/e2e-test.sh old mode 100644 new mode 100755 diff --git a/scripts/test.sh b/scripts/test.sh old mode 100644 new mode 100755 diff --git a/test/e2e/cart-tests.js b/test/e2e/cart-tests.js index cad1fce24..6cefd94c0 100644 --- a/test/e2e/cart-tests.js +++ b/test/e2e/cart-tests.js @@ -15,6 +15,7 @@ describe("cart:", function () { }); afterEach(function () { + //dismisses any alerts left open browser.switchTo().alert().then( function (alert) { alert.dismiss(); }, function (err) { } @@ -29,7 +30,7 @@ describe("cart:", function () { tu.loadProductIntoCart('1', '$14.92'); tu.clickElement('id', tu.removeFromCart); browser.wait(function () { - return element(by.xpath("//div[@id='cart']/div/div[2]")).isDisplayed(); + return element(by.xpath("//div[@id='cart']/div/div[2]")).isDisplayed(); //checks to see if cart text is displayed }); expect(element(by.xpath("//div[@id='cart']/div/div[2]")).getText()).toEqual('YOUR CART IS EMPTY'); }); @@ -50,7 +51,7 @@ describe("cart:", function () { browser.wait(function () { return element(by.xpath("//div[@id='cart']/div/div[2]")).isDisplayed(); }); - expect(element(by.xpath("//div[@id='cart']/div/div[2]")).getText()).toEqual('KEINE ARTIKEL IM KORB'); + expect(element(by.xpath("//div[@id='cart']/div/div[2]")).getText()).toEqual('IHR WARENKORB IST LEER'); }); it('should load one product into cart in USD and change to Euros', function () { @@ -141,7 +142,7 @@ describe("cart:", function () { }); it('should retrieve previous cart', function () { - tu.loginHelper('cart@hybristest.com', 'password'); + tu.loginHelper('cart@hybristest.com', 'password'); //existing user with previous cart tu.clickElement('id', tu.cartButtonId); browser.sleep(250); tu.verifyCartTotal('$7.77'); diff --git a/test/e2e/checkout-tests.js b/test/e2e/checkout-tests.js index 9e71ad412..705142c52 100644 --- a/test/e2e/checkout-tests.js +++ b/test/e2e/checkout-tests.js @@ -14,7 +14,6 @@ function continueAsGuest(){ } function fillCheckoutFormExceptEmail(form) { - // tu.sendKeysById('contactName' + form, 'Mike Night'); browser.wait(function () { return element(by.id('address1' + form)).isPresent(); }); @@ -29,9 +28,9 @@ function fillCheckoutFormExceptEmail(form) { function verifyCartContents(itemPrice, totalPrice, quantity) { - expect(element(by.xpath('//div[2]/div/section[2]/div/div/div[2]/div[2]/span')).getText()).toContain(itemPrice); //item price - expect(element(by.xpath('//div[2]/div/section[3]/table/tfoot/tr/td[2]')).getText()).toContain(totalPrice); - expect(element(by.xpath("//div[2]/div/section[2]/div/div/div[2]/div[3]/div/span")).getText()).toContain(quantity); + expect(element(by.xpath('//div[2]/div/section[2]/div/div/div[2]/div[2]/span')).getText()).toContain(itemPrice); //xpath for price per first item + expect(element(by.xpath('//div[2]/div/section[3]/table/tfoot/tr/td[2]')).getText()).toContain(totalPrice); //xpath for complete price + expect(element(by.xpath("//div[2]/div/section[2]/div/div/div[2]/div[3]/div/span")).getText()).toContain(quantity); //xpath for quantity of first product } @@ -39,16 +38,16 @@ function validateField(field, form, text, buttonType, button) { element(by.id(field + form)).clear(); tu.clickElement(buttonType, button); browser.sleep(500); - browser.executeScript("document.getElementById('" + field + form + "').style.display='block';"); + browser.executeScript("document.getElementById('" + field + form + "').style.display='block';"); //forces 2nd input to display after error browser.sleep(200); tu.sendKeysById(field + form, text); } -function verifyValidationForEachField(form, buttonType, button) { - validateField('zipCode', form, '80301', buttonType, button); - validateField('contactName', form, 'Mike Night', buttonType, button); - validateField('address1', form, '123', buttonType, button); - validateField('city', form, 'Boulder', buttonType, button); +function verifyValidationForEachField(form, elementType, button) { + validateField('zipCode', form, '80301', elementType, button); + validateField('contactName', form, 'Mike Night', elementType, button); + validateField('address1', form, '123', elementType, button); + validateField('city', form, 'Boulder', elementType, button); } @@ -93,9 +92,9 @@ function verifyOrderOnAccountPageBigScreen(account, total) { tu.waitForAccountPage(); expect(element(by.repeater('xrder in orders').row(0).column('xrder.created')).getText()).toContain(currentDate); expect(element(by.repeater('xrder in orders').row(0).column('xrder.totalPrice')).getText()).toEqual(total); - expect(element(by.repeater('xrder in orders').row(0).column('xrder.status')).getText()).toEqual("Created"); + expect(element(by.repeater('xrder in orders').row(0).column('xrder.status')).getText()).toEqual("CREATED"); element(by.repeater('xrder in orders').row(0).column('xrder.created')).click(); - expect(element(by.repeater('xrder in orders').row(0).column('xrder.status')).getText()).toEqual("Created"); + expect(element(by.repeater('xrder in orders').row(0).column('xrder.status')).getText()).toEqual("CREATED"); } function clickOnModal() { @@ -133,14 +132,12 @@ describe("checkout:", function () { browser.sleep(2000); }); - - // afterEach(function() { - // browser.manage().logs().get('browser').then(function(browserLog) { - // // expect(browserLog.length).toEqual(0); - // // Uncomment to actually see the log. - // console.log('log: ' + require('util').inspect(browserLog)); - // }); - // }); + //dumps logs, if there are failing services uncomment + // afterEach(function() { + // browser.manage().logs().get('browser').then(function(browserLog) { + // console.log('log: ' + require('util').inspect(browserLog)); + // }); + // }); it('should load one product into cart and move to checkout', function () { diff --git a/test/e2e/coupon-tests.js b/test/e2e/coupon-tests.js index 4d092a245..42c7580f5 100644 --- a/test/e2e/coupon-tests.js +++ b/test/e2e/coupon-tests.js @@ -88,10 +88,10 @@ describe('coupons:', function () { browser.sleep(200); category.click(); tu.loadProductIntoCart('1', '€18.89'); - tu.clickElement('linkText', 'GUTSCHEINCODE HINZUFÜGEN'); + tu.clickElement('linkText', 'COUPONCODE HINZUFÜGEN'); tu.sendKeysById('coupon-code', '10DOLLAR'); tu.clickElement('id', 'apply-coupon'); - expect(element(by.binding('couponErrorMessage')).getText()).toEqual('WÄHRUNGS UNGÜLTIGE GUTSCHEIN'); + expect(element(by.binding('couponErrorMessage')).getText()).toEqual('WÄHRUNG FÜR COUPON UNGÜLTIG'); browser.sleep(1000); tu.clickElement('id', tu.removeFromCart); browser.sleep(500); diff --git a/test/e2e/login-tests.js b/test/e2e/login-tests.js index 54dcc6ac4..429daf7fe 100644 --- a/test/e2e/login-tests.js +++ b/test/e2e/login-tests.js @@ -3,15 +3,10 @@ var tu = require('./protractor-utils.js'); var timestamp = Number(new Date()); -function updateAccountField(fieldName, text) { - tu.clickElement('id', fieldName); - tu.sendKeysByXpath("(//input[@type='text'])[3]", text); - tu.clickElement('xpath', "//button[@type='submit']"); -} -function updateTitleField(fieldName, text) { - tu.clickElement('id', fieldName); - element(by.xpath("//select[@ng-model='$data']")).sendKeys(text); - tu.clickElement('xpath', "//button[@type='submit']"); +function updateNameField(id, text) { + element(by.id(id)).clear(); + browser.executeScript("document.getElementById('" + id + "').style.display='block';"); + element(by.id(id)).sendKeys(text); } function waitForAccountPage() { @@ -38,8 +33,8 @@ describe("login:", function () { }); - - it('should not allow user to login', function () { + //disabled until KIWIS-2024 can be fixed + xit('should not allow user to login', function () { tu.loginHelper('bad@bad.com', 'bad'); expect(element(by.binding("error.message")).getText()).toEqual("You entered an invalid email or password."); }); @@ -50,7 +45,7 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); browser.sleep(1000); - expect(element(by.binding("account.firstName")).getText()).toEqual("Joe"); + expect(element(by.binding("account.firstName")).getText()).toEqual('JOE'); // tu.clickElement('id', 'logout-btn'); }); @@ -61,29 +56,19 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); browser.sleep(2000); - updateTitleField('title', 'Mr.'); - expect(element(by.binding("account.firstName")).getText()).toEqual("Joe"); - expect(element(by.binding("account.middleName")).getText()).toEqual("C"); - expect(element(by.binding("account.lastName")).getText()).toEqual("Cool"); - updateAccountField('first-name-edit', 'first'); - browser.sleep(1000); - expect(element(by.binding("account.firstName")).getText()).toEqual("first"); - updateAccountField('middle-name-edit', 'middle'); - browser.sleep(1000); - expect(element(by.binding("account.middleName")).getText()).toEqual("middle"); - updateAccountField('last-name-edit', 'last'); - browser.sleep(1000); - expect(element(by.binding("account.lastName")).getText()).toEqual("last"); - updateTitleField('title', 'Dr.'); - updateAccountField('email-edit', 'cool@cool.com'); - updateAccountField('first-name-edit', 'Joe'); - updateAccountField('middle-name-edit', 'C'); - browser.sleep(1000); - updateAccountField('last-name-edit', 'Cool'); - expect(element(by.binding("account.firstName")).getText()).toEqual("Joe"); - expect(element(by.binding("account.middleName")).getText()).toEqual("C"); - expect(element(by.binding("account.lastName")).getText()).toEqual("Cool"); - + expect(element(by.binding("account.lastName")).getText()).toContain('Joe C Cool'); + tu.clickElement('id', 'edit-user-info'); + updateNameField('firstNameAccount', 'first'); + tu.sendKeysById('middleNameAccount', 'middle'); + updateNameField('lastNameAccount', 'last'); + tu.clickElement('id', 'save-btn'); + expect(element(by.binding("account.lastName")).getText()).toContain('first middle last'); + tu.clickElement('id', 'edit-user-info'); + updateNameField('firstNameAccount', 'Joe'); + tu.sendKeysById('middleNameAccount', 'C'); + updateNameField('lastNameAccount', 'Cool'); + tu.clickElement('id', 'save-btn'); + expect(element(by.binding("account.lastName")).getText()).toContain('Joe C Cool'); }); it('should create a new user', function () { @@ -112,24 +97,23 @@ describe("login:", function () { tu.createAccount('addresstest'); tu.populateAddress('0', 'Address Test', '123 fake place', 'apt 419', 'Boulder', 'CO', '80301', '303-303-3333'); browser.sleep(500); - expect(element(by.binding("defaultAddress.street")).getText()).toEqual("123 fake place"); - expect(element(by.binding("defaultAddress.city")).getText()).toEqual("Boulder"); - expect(element(by.binding("defaultAddress.state")).getText()).toContain("CO"); - expect(element(by.binding("defaultAddress.zipCode")).getText()).toContain("80301"); - expect(element(by.binding("defaultAddress.country")).getText()).toEqual("US"); - expect(element(by.binding("defaultAddress.contactPhone")).getText()).toEqual("303-303-3333"); + // expect(element(by.binding("defaultAddress.street")).getText()).toEqual("123 fake place"); + expect(element(by.repeater('address in addresses').row(0).column('address.street')).getText()).toEqual('123 fake place, apt 419'); + expect(element(by.repeater('address in addresses').row(0).column('address.city')).getText()).toEqual('Boulder, CO 80301'); + expect(element(by.repeater('address in addresses').row(0).column('address.country')).getText()).toEqual('US'); + expect(element(by.repeater('address in addresses').row(0).column('address.contactPhone')).getText()).toEqual('303-303-3333'); tu.populateAddress('1', '2nd Test', '321 phony street', 'apt 420', 'Toronto', 'ON', 'M4M 1H7', '720-555-1234'); expect(element(by.repeater('address in addresses').row(1).column('address.contactName')).getText()).toEqual('2nd Test'); - expect(element(by.repeater('address in addresses').row(1).column('address.street')).getText()).toEqual("321 phony street, apt 420"); - expect(element(by.repeater('address in addresses').row(1).column('address.city')).getText()).toEqual("Toronto, ON M4M 1H7"); - expect(element(by.repeater('address in addresses').row(1).column('address.country')).getText()).toEqual("CA"); - expect(element(by.repeater('address in addresses').row(1).column('address.contactPhone')).getText()).toEqual("720-555-1234"); + expect(element(by.repeater('address in addresses').row(1).column('address.street')).getText()).toEqual('321 phony street, apt 420'); + expect(element(by.repeater('address in addresses').row(1).column('address.city')).getText()).toEqual('Toronto, ON M4M 1H7'); + expect(element(by.repeater('address in addresses').row(1).column('address.country')).getText()).toEqual('CA'); + expect(element(by.repeater('address in addresses').row(1).column('address.contactPhone')).getText()).toEqual('720-555-1234'); tu.clickElement('xpath', "(//button[@id='set-default-btn'])[2]"); browser.sleep(1500); - expect(element(by.binding("defaultAddress.street")).getText()).toEqual("321 phony street"); + expect(element(by.repeater('address in addresses').row(0).column('address.street')).getText()).toEqual('321 phony street, apt 420'); tu.clickElement('xpath', "( //button[@id='set-default-btn'])[2]"); browser.sleep(1000); - expect(element(by.binding("defaultAddress.street")).getText()).toEqual("123 fake place"); + expect(element(by.repeater('address in addresses').row(0).column('address.street')).getText()).toEqual('123 fake place, apt 419'); tu.clickElement('id', 'delete-address-btn'); browser.wait(function () { return element(by.id('delete-address-btn')).isPresent(); @@ -139,13 +123,14 @@ describe("login:", function () { }); - it('should not allow user to update their password with incorrect password', function () { + //disabled until KIWIS-2024 can be fixed + xit('should not allow user to update their password with incorrect password', function () { tu.loginHelper('badpassword@test.com', 'password'); browser.sleep(1000); tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); waitForAccountPage(); - tu.clickElement('id', 'password-edit'); + tu.clickElement('id', 'update-password'); tu.sendKeysById('currentPassword', 'incorrect'); tu.sendKeysById('newPassword', 'notnew'); tu.sendKeysById('confirmNewPassword', 'notnew'); @@ -162,7 +147,7 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); waitForAccountPage(); - tu.clickElement('id', 'password-edit'); + tu.clickElement('id', 'update-password'); tu.sendKeysById('currentPassword', 'password'); tu.sendKeysById('newPassword', '123'); tu.sendKeysById('confirmNewPassword', '123'); @@ -178,7 +163,7 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); waitForAccountPage(); - tu.clickElement('id', 'password-edit'); + tu.clickElement('id', 'update-password'); tu.sendKeysById('currentPassword', 'password'); tu.sendKeysById('newPassword', 'incorrect1'); tu.sendKeysById('confirmNewPassword', 'incorrect2'); @@ -193,7 +178,7 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); waitForAccountPage(); - tu.clickElement('id', 'password-edit'); + tu.clickElement('id', 'update-password'); tu.sendKeysById('currentPassword', 'password'); tu.sendKeysById('newPassword', 'password2'); tu.sendKeysById('confirmNewPassword', 'password2'); @@ -210,7 +195,7 @@ describe("login:", function () { tu.clickElement('id', 'my-account-dropdown'); tu.clickElement('id', 'my-account'); browser.sleep(1000); - tu.clickElement('id', 'password-edit'); + tu.clickElement('id', 'update-password'); tu.sendKeysById('currentPassword', 'password2'); tu.sendKeysById('newPassword', 'password'); tu.sendKeysById('confirmNewPassword', 'password'); diff --git a/test/e2e/protractor-utils.js b/test/e2e/protractor-utils.js index 5fe6ee3f4..a511c065c 100644 --- a/test/e2e/protractor-utils.js +++ b/test/e2e/protractor-utils.js @@ -171,7 +171,7 @@ var switchSite = exports.switchSite = function (site) { var siteRow = '0' } - var siteSelector = element(by.id(siteSelectorButton)); + var siteSelector = element(by.id('siteSelectorButton')); browser.driver.actions().mouseMove(siteSelector).perform(); siteSelector.click(); var newSite = element(by.repeater('site in sites').row(siteRow)); @@ -269,7 +269,7 @@ var verifyOrderConfirmation = exports.verifyOrderConfirmation = function(account return element(by.css('address > span.ng-binding')).isPresent(); }); browser.sleep(1000); - expect(element(by.binding('confirmationDetails.emailAddress')).getText()).toContain(email); + expect(element(by.css('strong')).getText()).toContain(email); expect(element(by.binding('confirmationDetails.shippingAddressName')).getText()).toContain(name); expect(element(by.binding('confirmationDetails.shippingAddressStreetLine1')).getText()).toContain(number); expect(element(by.binding('confirmationDetails.shippingAddressCityStateZip')).getText()).toContain(cityStateZip); diff --git a/test/unit/account/account-ctrl-spec.js b/test/unit/account/account-ctrl-spec.js index 343d69169..7e866bbe2 100644 --- a/test/unit/account/account-ctrl-spec.js +++ b/test/unit/account/account-ctrl-spec.js @@ -28,7 +28,8 @@ describe('AccountCtrl Test', function () { meta: { total: 0 } - } + }, + getUserTitles: jasmine.createSpy().andReturn(['', 'MR', 'MS', 'MRS', 'DR']) }; var AccountSvc = { }; diff --git a/test/unit/checkout/checkout-ctrl-spec.js b/test/unit/checkout/checkout-ctrl-spec.js index c7e4a2d27..b365b9a87 100644 --- a/test/unit/checkout/checkout-ctrl-spec.js +++ b/test/unit/checkout/checkout-ctrl-spec.js @@ -10,7 +10,8 @@ describe('CheckoutCtrl', function () { user: null }, getCurrencyId: jasmine.createSpy().andReturn('USD'), - getCurrencySymbol: jasmine.createSpy().andReturn('$') + getCurrencySymbol: jasmine.createSpy().andReturn('$'), + getUserTitles: jasmine.createSpy().andReturn(['', 'MR', 'MS', 'MRS', 'DR']) }; var CouponSvc = { }; diff --git a/test/unit/shared/filters/show-number-of-items-filter-spec.js b/test/unit/shared/filters/show-number-of-items-filter-spec.js new file mode 100644 index 000000000..1aeefc86c --- /dev/null +++ b/test/unit/shared/filters/show-number-of-items-filter-spec.js @@ -0,0 +1,43 @@ +/** + * [y] hybris Platform + * + * Copyright (c) 2000-2015 hybris AG + * All rights reserved. + * + * This software is the confidential and proprietary information of hybris + * ("Confidential Information"). You shall not disclose such Confidential + * Information and shall use it only in accordance with the terms of the + * license agreement you entered into with hybris. + */ + +'use strict'; + +describe('ShowNumberOfItemsFilter filter', function () { + 'use strict'; + + var $filter; + + beforeEach(function () { + module('ds.shared'); + + inject(function (_$filter_) { + $filter = _$filter_; + }); + }); + + it('should return correct string made of number and Item or Items depending of number', function () { + var result = $filter('showNoOfItems')(10); + expect(result).toEqual('10 Items'); + + result = $filter('showNoOfItems')(1); + expect(result).toEqual('1 Item'); + + result = $filter('showNoOfItems')('a'); + expect(result).toEqual('a Item'); + }); + + it('should return 0 Items when parameter is undefined', function () { + var result = $filter('showNoOfItems')(); + expect(result).toEqual('0 Item'); + }); +}); \ No newline at end of file diff --git a/test/unit/shared/filters/sum-by-key-filter-spec.js b/test/unit/shared/filters/sum-by-key-filter-spec.js new file mode 100644 index 000000000..a14a17efe --- /dev/null +++ b/test/unit/shared/filters/sum-by-key-filter-spec.js @@ -0,0 +1,42 @@ +/** + * [y] hybris Platform + * + * Copyright (c) 2000-2015 hybris AG + * All rights reserved. + * + * This software is the confidential and proprietary information of hybris + * ("Confidential Information"). You shall not disclose such Confidential + * Information and shall use it only in accordance with the terms of the + * license agreement you entered into with hybris. + */ + +'use strict'; + +describe('sumByKey filter', function () { + 'use strict'; + + var $filter; + + beforeEach(function () { + module('ds.shared'); + + inject(function (_$filter_) { + $filter = _$filter_; + }); + }); + + it('should return correct string made of number and Item or Items depending of number', function () { + var items = [{ val: 3 }, { val: 8 }, { val: 2 }]; + + var result = $filter('sumByKey')(items, 'val'); + expect(result).toEqual(13); + + items = [{ test: 8 }, { test: 1 }, { val: 2 }]; + + result = $filter('sumByKey')(items, 'test'); + expect(result).toEqual(9); + + result = $filter('sumByKey')(); + expect(result).toEqual(0); + }); +}); \ No newline at end of file