/* jshint expr:true */ import { describe, it, beforeEach, afterEach } from 'mocha'; import { expect } from 'chai'; import startApp from '../helpers/start-app'; import destroyApp from '../helpers/destroy-app'; import { authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth'; const originalUserAgent = window.navigator.userAgent; const _setUserAgent = function (userAgent) { let userAgentProp = {get() { return userAgent; }, configurable: true}; Object.defineProperty(window.navigator, 'userAgent', userAgentProp); }; const stubUserAgent = function (userAgent) { if (window.navigator.userAgent !== userAgent) { _setUserAgent(userAgent); } }; const restoreUserAgent = function () { if (window.navigator.userAgent !== originalUserAgent) { _setUserAgent(originalUserAgent); } }; describe('Acceptance: Ghost Desktop', function() { let application; beforeEach(function() { application = startApp(); }); afterEach(function() { destroyApp(application); }); describe('update alerts for broken versions', function () { beforeEach(function() { let role = server.create('role', {name: 'Administrator'}); let user = server.create('user', {roles: [role]}); server.loadFixtures(); return authenticateSession(application); }); afterEach(function() { restoreUserAgent(); }); it('displays alert for broken version', function() { stubUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.4.0 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36'); visit('/'); andThen(function () { // has an alert with matching text expect(find('.gh-alert-yellow').length, 'number of warning alerts').to.equal(1); expect(find('.gh-alert-yellow').text().trim(), 'alert text').to.match(/Your version of Ghost Desktop needs to be manually updated/); }); }); it('doesn\'t display alert for working version', function () { stubUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) ghost-desktop/0.5.1 Chrome/51.0.2704.84 Electron/1.2.2 Safari/537.36'); visit('/'); andThen(function () { // no alerts expect(find('.gh-alert').length, 'number of alerts').to.equal(0); }); }); }); });