fix(specs): Fix intermittent async error and max event listener leak

An absolute ContactStore spec was causing the listener leak by
re-initializing the store and not cleaning it up.

Intermittent theme manager failing spec might be caused due to timing of
the theme activation
This commit is contained in:
Evan Morikawa 2015-10-09 15:41:28 -07:00
parent ecf120729a
commit abc4a6116e
2 changed files with 47 additions and 52 deletions

View file

@ -27,16 +27,11 @@ describe "ContactStore", ->
ContactStore._contactCache = [] ContactStore._contactCache = []
ContactStore._fetchOffset = 0 ContactStore._fetchOffset = 0
ContactStore._accountId = null ContactStore._accountId = null
ContactRankingStore.reset()
afterEach -> afterEach ->
atom.testOrganizationUnit = null atom.testOrganizationUnit = null
it "initializes the cache from the DB", ->
spyOn(DatabaseStore, "findAll").andCallFake -> Promise.resolve([])
ContactStore.constructor()
expect(ContactStore._contactCache.length).toBe 0
expect(ContactStore._fetchOffset).toBe 0
describe "when the Account updates from null to valid", -> describe "when the Account updates from null to valid", ->
beforeEach -> beforeEach ->
spyOn(ContactStore, "_refreshCache") spyOn(ContactStore, "_refreshCache")

View file

@ -318,66 +318,66 @@ describe "ThemeManager", ->
[stylesheetRemovedHandler, stylesheetAddedHandler, stylesheetsChangedHandler] = [] [stylesheetRemovedHandler, stylesheetAddedHandler, stylesheetsChangedHandler] = []
waitsForPromise -> waitsForPromise ->
themeManager.activateThemes() themeManager.activateThemes().then ->
runs -> runs ->
atom.styles.onDidRemoveStyleElement styleElementRemovedHandler = jasmine.createSpy("styleElementRemovedHandler") atom.styles.onDidRemoveStyleElement styleElementRemovedHandler = jasmine.createSpy("styleElementRemovedHandler")
atom.styles.onDidAddStyleElement styleElementAddedHandler = jasmine.createSpy("styleElementAddedHandler") atom.styles.onDidAddStyleElement styleElementAddedHandler = jasmine.createSpy("styleElementAddedHandler")
themeManager.onDidChangeStylesheets stylesheetsChangedHandler = jasmine.createSpy("stylesheetsChangedHandler") themeManager.onDidChangeStylesheets stylesheetsChangedHandler = jasmine.createSpy("stylesheetsChangedHandler")
themeManager.onDidRemoveStylesheet stylesheetRemovedHandler = jasmine.createSpy("stylesheetRemovedHandler") themeManager.onDidRemoveStylesheet stylesheetRemovedHandler = jasmine.createSpy("stylesheetRemovedHandler")
themeManager.onDidAddStylesheet stylesheetAddedHandler = jasmine.createSpy("stylesheetAddedHandler") themeManager.onDidAddStylesheet stylesheetAddedHandler = jasmine.createSpy("stylesheetAddedHandler")
spyOn(themeManager, 'loadUserStylesheet').andCallThrough() spyOn(themeManager, 'loadUserStylesheet').andCallThrough()
expect($(document.body).css('border-style')).toBe 'dotted' expect($(document.body).css('border-style')).toBe 'dotted'
fs.writeFileSync(userStylesheetPath, 'body {border-style: dashed}') fs.writeFileSync(userStylesheetPath, 'body {border-style: dashed}')
waitsFor -> waitsFor ->
themeManager.loadUserStylesheet.callCount is 1 themeManager.loadUserStylesheet.callCount is 1
runs -> runs ->
expect($(document.body).css('border-style')).toBe 'dashed' expect($(document.body).css('border-style')).toBe 'dashed'
expect(styleElementRemovedHandler).toHaveBeenCalled() expect(styleElementRemovedHandler).toHaveBeenCalled()
expect(styleElementRemovedHandler.argsForCall[0][0].textContent).toContain 'dotted' expect(styleElementRemovedHandler.argsForCall[0][0].textContent).toContain 'dotted'
expect(stylesheetRemovedHandler).toHaveBeenCalled() expect(stylesheetRemovedHandler).toHaveBeenCalled()
match = null match = null
for rule in stylesheetRemovedHandler.argsForCall[0][0].cssRules for rule in stylesheetRemovedHandler.argsForCall[0][0].cssRules
match = rule if rule.selectorText is 'body' match = rule if rule.selectorText is 'body'
expect(match.style.border).toBe 'dotted' expect(match.style.border).toBe 'dotted'
expect(styleElementAddedHandler).toHaveBeenCalled() expect(styleElementAddedHandler).toHaveBeenCalled()
expect(styleElementAddedHandler.argsForCall[0][0].textContent).toContain 'dashed' expect(styleElementAddedHandler.argsForCall[0][0].textContent).toContain 'dashed'
expect(stylesheetAddedHandler).toHaveBeenCalled() expect(stylesheetAddedHandler).toHaveBeenCalled()
match = null match = null
for rule in stylesheetAddedHandler.argsForCall[0][0].cssRules for rule in stylesheetAddedHandler.argsForCall[0][0].cssRules
match = rule if rule.selectorText is 'body' match = rule if rule.selectorText is 'body'
expect(match.style.border).toBe 'dashed' expect(match.style.border).toBe 'dashed'
expect(stylesheetsChangedHandler).toHaveBeenCalled() expect(stylesheetsChangedHandler).toHaveBeenCalled()
styleElementRemovedHandler.reset() styleElementRemovedHandler.reset()
stylesheetRemovedHandler.reset() stylesheetRemovedHandler.reset()
stylesheetsChangedHandler.reset() stylesheetsChangedHandler.reset()
fs.removeSync(userStylesheetPath) fs.removeSync(userStylesheetPath)
waitsFor -> waitsFor ->
themeManager.loadUserStylesheet.callCount is 2 themeManager.loadUserStylesheet.callCount is 2
runs -> runs ->
expect(styleElementRemovedHandler).toHaveBeenCalled() expect(styleElementRemovedHandler).toHaveBeenCalled()
expect(styleElementRemovedHandler.argsForCall[0][0].textContent).toContain 'dashed' expect(styleElementRemovedHandler.argsForCall[0][0].textContent).toContain 'dashed'
expect(stylesheetRemovedHandler).toHaveBeenCalled() expect(stylesheetRemovedHandler).toHaveBeenCalled()
waitsFor -> waitsFor ->
match = null match = null
for rule in stylesheetRemovedHandler.argsForCall[0][0].cssRules for rule in stylesheetRemovedHandler.argsForCall[0][0].cssRules
match = rule if rule.selectorText is 'body' match = rule if rule.selectorText is 'body'
match.style.border is 'dashed' and $(document.body).css('border-style') is 'none' match.style.border is 'dashed' and $(document.body).css('border-style') is 'none'
runs -> runs ->
expect(stylesheetsChangedHandler).toHaveBeenCalled() expect(stylesheetsChangedHandler).toHaveBeenCalled()
describe "when there is an error reading the stylesheet", -> describe "when there is an error reading the stylesheet", ->
addErrorHandler = null addErrorHandler = null