AutoUpdateManager = require('../src/browser/auto-update-manager').default url = require 'url' describe "AutoUpdateManager", -> beforeEach -> @nylasIdentityId = null @accounts = [{email_address: 'ben@nylas.com'},{email_address: 'mark@nylas.com'}] @specMode = true @config = set: jasmine.createSpy('config.set') get: (key) => if key is 'nylas.accounts' return @accounts if key is 'nylas.identity.id' return @nylasIdentityId if key is 'env' return 'production' onDidChange: (key, callback) => callback() describe "with attached commit version", -> it "correctly sets the feedURL", -> m = new AutoUpdateManager("3.222.1-abc", @config, @specMode) spyOn(m, "setupAutoUpdater") {query} = url.parse(m.feedURL, true) expect(query.arch).toBe process.arch expect(query.platform).toBe process.platform expect(query.version).toBe "3.222.1-abc" describe "with no attached commit", -> it "correctly sets the feedURL", -> m = new AutoUpdateManager("3.222.1", @config, @specMode) spyOn(m, "setupAutoUpdater") {query} = url.parse(m.feedURL, true) expect(query.arch).toBe process.arch expect(query.platform).toBe process.platform expect(query.version).toBe "3.222.1" describe "when an update identity is not present", -> it "should use anonymous", -> m = new AutoUpdateManager("3.222.1", @config, @specMode) spyOn(m, "setupAutoUpdater") {query} = url.parse(m.feedURL, true) expect(query.id).toEqual('anonymous') describe "when an update identity is already set", -> it "should send it and not save any changes", -> @nylasIdentityId = "test-nylas-id" m = new AutoUpdateManager("3.222.1", @config, @specMode) spyOn(m, "setupAutoUpdater") {query} = url.parse(m.feedURL, true) expect(query.id).toEqual(@nylasIdentityId) describe "when an update identity is added", -> it "should update the feed URL", -> m = new AutoUpdateManager("3.222.1", @config, @specMode) spyOn(m, "setupAutoUpdater") {query} = url.parse(m.feedURL, true) expect(query.id).toEqual('anonymous') @nylasIdentityId = '1' m._updateFeedURL() {query} = url.parse(m.feedURL, true) expect(query.id).toEqual(@nylasIdentityId)