mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-14 13:44:41 +08:00
415d612458
Summary: Adds the new Account preferences page. This consists of two major React components, PreferencesAccountList and PreferencesAccountDetails, both of which use EditableList. I added a bunch of fixes and updated the API for EditableList, plus a bit of refactoring for PreferencesAccount component, and a bunch of CSS so its a big diff. The detailed changelog: Updates to EditableList: - Fix bug updating selection state when arrows pressed to move selection - Add new props: - allowEmptySelection to allow the list to have no selection - createInputProps to pass aditional props to the createInput - Add scroll region for list items - Update styles and refactor render methods Other Updates: - Updates Account model to hold aliases and a label - Adds getter for label to default to email - Update accountswitcher to display label, update styles and spec - Refactor PreferencesAccounts component: - Splits it into smaller components, - Removes unused code - Splits preferences styelsheets into smaller separate stylesheet for account page. Adds some updates and fixes (scroll-region padding) - Update AccountStore to be able to perform updates on an account. - Adds new Action to update account, and an action to remove account to be consistent with Action usage - Adds components for Account list and Aliases list using EditableList Test Plan: - All specs pass, but need to write new tests! Reviewers: bengotow, evan Reviewed By: bengotow Differential Revision: https://phab.nylas.com/D2332
51 lines
1.9 KiB
CoffeeScript
51 lines
1.9 KiB
CoffeeScript
React = require 'react/addons'
|
|
TestUtils = React.addons.TestUtils
|
|
AccountSwitcher = require './../lib/account-switcher'
|
|
{AccountStore} = require 'nylas-exports'
|
|
|
|
describe "AccountSwitcher", ->
|
|
switcher = null
|
|
|
|
beforeEach ->
|
|
spyOn(AccountStore, "items").andCallFake ->
|
|
[
|
|
AccountStore.current(),
|
|
{
|
|
emailAddress: "dillon@nylas.com",
|
|
provider: "exchange"
|
|
label: "work"
|
|
}
|
|
]
|
|
|
|
switcher = TestUtils.renderIntoDocument(
|
|
<AccountSwitcher />
|
|
)
|
|
|
|
it "doesn't render the dropdown if nothing clicked", ->
|
|
openDropdown = TestUtils.scryRenderedDOMComponentsWithClass switcher, 'open'
|
|
expect(openDropdown.length).toBe 0
|
|
|
|
it "shows the dropdown on click", ->
|
|
toggler = TestUtils.findRenderedDOMComponentWithClass switcher, 'primary-item'
|
|
TestUtils.Simulate.click toggler
|
|
openDropdown = TestUtils.scryRenderedDOMComponentsWithClass switcher, 'open'
|
|
expect(openDropdown.length).toBe 1
|
|
|
|
it "hides the dropdown on blur", ->
|
|
toggler = TestUtils.findRenderedDOMComponentWithClass switcher, 'primary-item'
|
|
TestUtils.Simulate.click toggler
|
|
toggler = TestUtils.findRenderedDOMComponentWithClass switcher, 'primary-item'
|
|
TestUtils.Simulate.blur toggler
|
|
openDropdown = TestUtils.scryRenderedDOMComponentsWithClass switcher, 'open'
|
|
expect(openDropdown.length).toBe 0
|
|
|
|
it "shows other accounts and the 'Add Account' button", ->
|
|
toggler = TestUtils.findRenderedDOMComponentWithClass switcher, 'primary-item'
|
|
TestUtils.Simulate.click toggler
|
|
|
|
dropdown = TestUtils.findRenderedDOMComponentWithClass switcher, "dropdown"
|
|
items = TestUtils.scryRenderedDOMComponentsWithClass dropdown, "secondary-item"
|
|
newAccountButton = TestUtils.scryRenderedDOMComponentsWithClass dropdown, "new-account-option"
|
|
|
|
expect(items.length).toBe 3
|
|
expect(newAccountButton.length).toBe 1
|