Mailspring/spec/stores/category-store-spec.es6

62 lines
2.1 KiB
Plaintext
Raw Normal View History

import {
Rx,
AccountStore,
CategoryStore,
NylasSyncStatusStore,
} from 'nylas-exports';
describe('CategoryStore', function categoryStore() {
2016-05-06 13:30:34 +08:00
beforeEach(() => {
spyOn(AccountStore, 'accountForId').andReturn({categoryCollection: () => 'labels'})
});
2016-05-06 13:30:34 +08:00
describe('whenCategoriesReady', () => {
it('resolves immediately if sync is done and cache is populated', () => {
spyOn(NylasSyncStatusStore, 'isSyncCompleteForAccount').andReturn(true)
spyOn(CategoryStore, 'categories').andReturn([{name: 'inbox'}])
spyOn(Rx.Observable, 'fromStore')
2016-05-06 13:30:34 +08:00
waitsForPromise(() => {
const promise = CategoryStore.whenCategoriesReady('a1')
expect(promise.isResolved()).toBe(true)
2016-05-06 13:30:34 +08:00
return promise.then(() => {
expect(Rx.Observable.fromStore).not.toHaveBeenCalled()
})
})
});
2016-05-06 13:30:34 +08:00
it('resolves only when sync is done even if cache is already populated', () => {
spyOn(NylasSyncStatusStore, 'isSyncCompleteForAccount').andReturn(false)
spyOn(CategoryStore, 'categories').andReturn([{name: 'inbox'}])
2016-05-06 13:30:34 +08:00
waitsForPromise(() => {
const promise = CategoryStore.whenCategoriesReady('a1')
expect(promise.isResolved()).toBe(false)
jasmine.unspy(NylasSyncStatusStore, 'isSyncCompleteForAccount')
spyOn(NylasSyncStatusStore, 'isSyncCompleteForAccount').andReturn(true)
NylasSyncStatusStore.trigger()
2016-05-06 13:30:34 +08:00
return promise.then(() => {
expect(promise.isResolved()).toBe(true)
})
})
});
2016-05-06 13:30:34 +08:00
it('resolves only when cache is populated even if sync is done', () => {
spyOn(NylasSyncStatusStore, 'isSyncCompleteForAccount').andReturn(true)
spyOn(CategoryStore, 'categories').andReturn([])
2016-05-06 13:30:34 +08:00
waitsForPromise(() => {
const promise = CategoryStore.whenCategoriesReady('a1')
expect(promise.isResolved()).toBe(false)
jasmine.unspy(CategoryStore, 'categories')
spyOn(CategoryStore, 'categories').andReturn([{name: 'inbox'}])
CategoryStore.trigger()
2016-05-06 13:30:34 +08:00
return promise.then(() => {
expect(promise.isResolved()).toBe(true)
})
})
});
});
});