diff --git a/packages/accounts-ui-unstyled/accounts_ui_unstyled_tests.js b/packages/accounts-ui-unstyled/accounts_ui_unstyled_tests.js index aef7f5c2b4..6fd36a2c96 100644 --- a/packages/accounts-ui-unstyled/accounts_ui_unstyled_tests.js +++ b/packages/accounts-ui-unstyled/accounts_ui_unstyled_tests.js @@ -1,11 +1,23 @@ -Tinytest.add( - 'accounts-ui - getLoginServices retuns an array of service hashes', - function (test) { - // setup - var services; - Accounts._loginButtons.loginServices.push('password'); - services = Accounts._loginButtons.getLoginServices(); +(function(environment) { + // setup + Accounts._loginButtons.loginServices.push('password'); + environment.meteorServices = function() { + return Accounts._loginButtons.getLoginServices(); + }; + + Tinytest.add( + 'accounts-ui - getLoginServices retuns an array of service hashes', + function (test) { + test.equal(_.first(environment.meteorServices()), {name: "password"}); + } + ); + + Tinytest.add( + 'accounts-ui - getLoginServices should always return password last', + function (test) { + Accounts._loginButtons.loginServices.push('some_other_service'); + test.equal(_.last(environment.meteorServices()), {name: "password"}); + } + ); +})(Tinytest); - test.equal(_.first(services), {name: "password"}); - } -); diff --git a/packages/accounts-ui-unstyled/login_buttons.js b/packages/accounts-ui-unstyled/login_buttons.js index 7442209f4f..351043c10c 100644 --- a/packages/accounts-ui-unstyled/login_buttons.js +++ b/packages/accounts-ui-unstyled/login_buttons.js @@ -119,7 +119,17 @@ Accounts._loginButtons.getLoginServices = function () { var self = this, - services = self.loginServices; + services = self.loginServices, // memoize services array + passwordIndex = services.indexOf("password"), // memoize password idx. + lastServiceAt = services.length - 1; // memoize last service idx. + + // make sure to put password last, since this is how it is styled + // if we had found password, swap w last service + if (passwordIndex !== -1) { + services[lastServiceAt] = services[passwordIndex]; + services[passwordIndex] = services[lastServiceAt]; + } + return _.map(services, function(service) { return {name: service}; });