     @clock.restore()
     benv.teardown()
 
-  describe '#setupAEMagazinePage', ->
+  describe '#initialize', ->
 
-    it 'opens a signup modal', ->
+    beforeEach ->
+      @EditorialSignupView::setupMobileCTA = sinon.spy()
+      @EditorialSignupView::setupDesktopCTA = sinon.spy()
+
+    it 'returns if the CTA bar was previously dismissed', ->
+      @CTABarView::previouslyDismissed.returns true
+      view = new @EditorialSignupView el: @$el
+      view.setupDesktopCTA.callCount.should.equal 0
+      view.setupMobileCTA.callCount.should.equal 0
+
+    it 'returns if the user is coming from Sailthru', ->
+      @EditorialSignupView.__set__ 'qs', parse: sinon.stub().returns utm_source: 'sailthru'
+      view = new @EditorialSignupView el: @$el
+      view.setupDesktopCTA.callCount.should.equal 0
+      view.setupMobileCTA.callCount.should.equal 0
+
+    it 'sets up CTA for mobile users', ->
       @EditorialSignupView.__set__ 'sd',
-        ARTICLE: null
-        SUBSCRIBED_TO_EDITORIAL: false
-        CURRENT_PATH: '/articles'
-      @view.setupAEMagazinePage()
+        IS_MOBILE: true
+      view = new @EditorialSignupView el: @$el
+      view.setupDesktopCTA.callCount.should.equal 0
+      view.setupMobileCTA.callCount.should.equal 1
+
+    it 'sets up CTA for desktop users', ->
+      @EditorialSignupView.__set__ 'sd',
+        IS_MOBILE: false
+      view = new @EditorialSignupView el: @$el
+      view.setupDesktopCTA.callCount.should.equal 1
+      view.setupMobileCTA.callCount.should.equal 0
+
+  describe '#setupMobileCTA', ->
+
+    beforeEach ->
+      @EditorialSignupView::showCTA = sinon.spy()
+      @EditorialSignupView.__set__ 'sd',
+        IS_MOBILE: true
+      @view = new @EditorialSignupView el: @$el
+
+    it 'adds the CTA banner to the page', ->
       $(@view.el).find('#modal-container').html().should.containEql 'articles-es-cta--banner modal'
 
-    it 'doesnt show a modal for subscribed user', ->
+    it 'shows the CTA banner', ->
+      @view.showCTA.callCount.should.equal 1
+
+  describe '#setupDesktopCTA', ->
+
+    beforeEach ->
+      @EditorialSignupView::showCTA = sinon.spy()
+      @EditorialSignupView::setDismissCookie = sinon.spy()
       @EditorialSignupView.__set__ 'sd',
-        ARTICLE: null
-        SUBSCRIBED_TO_EDITORIAL: true
-        CURRENT_PATH: '/articles'
-      @view.setupAEMagazinePage()
-      $(@view.el).find('#modal-container').html().should.not.containEql 'articles-es-cta--banner modal'
+        IS_MOBILE: false
+      @view = new @EditorialSignupView el: @$el
 
-  describe '#eligibleToSignUp', ->
+    it 'sets the cookie when the user modal is closed or if the user has signed up', ->
+      @mediatorOn.args.length.should.equal 2
+      @mediatorOn.args[0][0].should.equal 'modal:closed'
+      @mediatorOn.args[1][0].should.equal 'auth:sign_up:success'
 
-    it 'checks is not in editorial article or magazine', ->
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: null
-        SUBSCRIBED_TO_EDITORIAL: false
-        CURRENT_PATH: ''
-      @view.eligibleToSignUp().should.not.be.ok()
+    it 'shows the user modal', ->
+      @view.showCTA.callCount.should.equal 1
 
-    it 'checks if in article or magazine', ->
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: null
-        SUBSCRIBED_TO_EDITORIAL: false
-        CURRENT_PATH: '/articles'
-      @view.eligibleToSignUp().should.be.ok()
-
-    it 'checks if in article is in the editorial channel', ->
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '333'
-        ARTSY_EDITORIAL_CHANNEL: '123'
-        SUBSCRIBED_TO_EDITORIAL: false
-      @view.eligibleToSignUp().should.not.be.ok()
+  describe '#fromSailthru', ->
 
     it 'checks if the utm_source is sailthru', ->
       @EditorialSignupView.__set__ 'qs', parse: sinon.stub().returns utm_source: 'sailthru'
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '333'
-        SUBSCRIBED_TO_EDITORIAL: false
-        ARTSY_EDITORIAL_CHANNEL: '333'
-      @view.eligibleToSignUp().should.not.be.ok()
+      view = new @EditorialSignupView el: @$el
+      view.fromSailthru().should.be.true()
 
     it 'checks if the utm_content starts with st-', ->
       @EditorialSignupView.__set__ 'qs', parse: sinon.stub().returns utm_content: 'st-lala'
+      view = new @EditorialSignupView el: @$el
+      view.fromSailthru().should.be.true()
+
+  describe '#showCTA && #revealArticlePopup', ->
+
+    it 'reveals the banner after 2000 ms on mobile', ->
       @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '333'
-        SUBSCRIBED_TO_EDITORIAL: false
-        ARTSY_EDITORIAL_CHANNEL: '333'
-      @view.eligibleToSignUp().should.not.be.ok()
+        IS_MOBILE: true
+      view = new @EditorialSignupView el: @$el
+      $(window).scroll()
+      @clock.tick(2000)
+      @trigger.args[0][0].should.equal 'view:editorial-signup'
+      view.$el.find('.articles-es-cta--banner').css('opacity').should.equal '1'
 
-  describe '#showEditorialCTA', ->
-
-    it 'displays modal', ->
+    it 'reveals the user modal after 2000 ms on desktop', ->
       @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '123'
-        ARTSY_EDITORIAL_CHANNEL: '123'
-        SUBSCRIBED_TO_EDITORIAL: false
-        EDITORIAL_CTA_BANNER_IMG: 'img.jpg'
-      @view.initialize({ isArticle: true })
-      @view.$el.find('.articles-es-cta--banner').hasClass('modal').should.be.true()
-
-    it 'reveals the popup after 2 seconds after scroll', ->
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '123'
-        ARTSY_EDITORIAL_CHANNEL: '123'
-        SUBSCRIBED_TO_EDITORIAL: false
-        EDITORIAL_SIGNUP_TEST: 'experiment'
-      @view.initialize({ isArticle: true })
+        IS_MOBILE: false
+      view = new @EditorialSignupView el: @$el
       $(window).scroll()
       @clock.tick(2000)
       @mediatorTrigger.args[0][0].should.equal 'open:auth'
 
   describe '#onSubscribe', ->
 
+    beforeEach ->
+      @view = new @EditorialSignupView el: @$el
+
     it 'removes the form when successful', ->
       $.ajax.yieldsTo('success')
-      @EditorialSignupView.__set__ 'sd',
-        ARTICLE: channel_id: '123'
-        ARTSY_EDITORIAL_CHANNEL: '123'
-        SUBSCRIBED_TO_EDITORIAL: false
       @view.ctaBarView = {
         close: sinon.stub()
         logDismissal: sinon.stub()

      sinon.stub($, 'ajax')
      Backbone.$ = $
      @clock = sinon.useFakeTimers()
      $el = $('
        <div>
          <div id="modal-container"></div>
          <div id="main-layout-container"></div>


    it 'removes the loading spinner if there is an error', ->
      $.ajax.yieldsTo('error')
      $subscribe = $('<div></div>')
      @view.onSubscribe({currentTarget: $subscribe})
      $($subscribe).hasClass('loading-spinner').should.be.false()

  describe 'Dismisses modals and logs cookies', ->

    beforeEach ->
      @EditorialSignupView.__set__ 'sd',
        IS_MOBILE: true
      @view = new @EditorialSignupView el: @$el
      $(window).scroll()
      @clock.tick(2000)

    it 'sets a dismiss cookie and tracks analytics', ->
      @view.$el.find('.cta-bar-defer').click()
      @trigger.args[1][0].should.equal 'dismiss:editorial-signup'
