diff --git a/spec/app/atom-package-spec.coffee b/spec/app/atom-package-spec.coffee index d68359219..2f6c25061 100644 --- a/spec/app/atom-package-spec.coffee +++ b/spec/app/atom-package-spec.coffee @@ -18,32 +18,3 @@ describe "AtomPackage", -> expect(object.data).toBe 'Hello' expect(pack.mainModule).toBeDefined() expect(pack.mainModule.activateCallCount).toBe 0 - - describe ".activate()", -> - beforeEach -> - window.rootView = new RootView - packageMainModule = require 'fixtures/packages/package-with-activation-events/main' - spyOn(packageMainModule, 'activate').andCallThrough() - - describe "when the package metadata includes activation events", -> - beforeEach -> - pack.activate() - - it "defers activating the package until an activation event bubbles to the root view", -> - expect(packageMainModule.activate).not.toHaveBeenCalled() - rootView.trigger 'activation-event' - expect(packageMainModule.activate).toHaveBeenCalled() - - it "triggers the activation event on all handlers registered during activation", -> - rootView.open('sample.js') - editor = rootView.getActiveView() - eventHandler = jasmine.createSpy("activation-event") - editor.command 'activation-event', eventHandler - editor.trigger 'activation-event' - expect(packageMainModule.activate.callCount).toBe 1 - expect(packageMainModule.activationEventCallCount).toBe 1 - expect(eventHandler.callCount).toBe 1 - editor.trigger 'activation-event' - expect(packageMainModule.activationEventCallCount).toBe 2 - expect(eventHandler.callCount).toBe 2 - expect(packageMainModule.activate.callCount).toBe 1 diff --git a/spec/app/atom-spec.coffee b/spec/app/atom-spec.coffee index bc05d7408..6680d2631 100644 --- a/spec/app/atom-spec.coffee +++ b/spec/app/atom-spec.coffee @@ -33,6 +33,34 @@ describe "the `atom` global", -> expect(config.get('package-with-config-defaults.numbers.one')).toBe 1 expect(config.get('package-with-config-defaults.numbers.two')).toBe 2 + describe "when the package metadata includes activation events", -> + [mainModule, pack] = [] + + beforeEach -> + mainModule = require 'package-with-activation-events/index' + spyOn(mainModule, 'activate').andCallThrough() + pack = atom.activatePackage('package-with-activation-events') + + it "defers requiring/activating the main module until an activation event bubbles to the root view", -> + expect(pack.mainModule).toBeNull() + expect(mainModule.activate).not.toHaveBeenCalled() + rootView.trigger 'activation-event' + expect(mainModule.activate).toHaveBeenCalled() + + it "triggers the activation event on all handlers registered during activation", -> + rootView.open() + editor = rootView.getActiveView() + eventHandler = jasmine.createSpy("activation-event") + editor.command 'activation-event', eventHandler + editor.trigger 'activation-event' + expect(mainModule.activate.callCount).toBe 1 + expect(mainModule.activationEventCallCount).toBe 1 + expect(eventHandler.callCount).toBe 1 + editor.trigger 'activation-event' + expect(mainModule.activationEventCallCount).toBe 2 + expect(eventHandler.callCount).toBe 2 + expect(mainModule.activate.callCount).toBe 1 + describe "when the package has no main module", -> it "does not throw an exception", -> spyOn(console, "error") diff --git a/spec/fixtures/packages/package-with-activation-events/main.coffee b/spec/fixtures/packages/package-with-activation-events/index.coffee similarity index 86% rename from spec/fixtures/packages/package-with-activation-events/main.coffee rename to spec/fixtures/packages/package-with-activation-events/index.coffee index d57ca7c24..91f2230b1 100644 --- a/spec/fixtures/packages/package-with-activation-events/main.coffee +++ b/spec/fixtures/packages/package-with-activation-events/index.coffee @@ -10,7 +10,5 @@ module.exports = activate: -> @activateCallCount++ rootView.getActiveView()?.command 'activation-event', => + console.log "ACTIVATION EVENT" @activationEventCallCount++ - - serialize: -> - previousData: 'overwritten' diff --git a/spec/fixtures/packages/package-with-activation-events/package.cson b/spec/fixtures/packages/package-with-activation-events/package.cson index 42d3eb78d..45d8dfea1 100644 --- a/spec/fixtures/packages/package-with-activation-events/package.cson +++ b/spec/fixtures/packages/package-with-activation-events/package.cson @@ -1,3 +1,2 @@ 'activationEvents': ['activation-event'] 'deferredDeserializers': ['Foo'] -'main': 'main'