|
@@ -0,0 +1,487 @@
|
|
|
+import Ember from 'ember';
|
|
|
+import { module, test } from 'qunit';
|
|
|
+import startApp from '../helpers/start-app';
|
|
|
+import destroyModal from '../helpers/destroy-modal';
|
|
|
+import getToastMessage from '../helpers/toast-message';
|
|
|
+import createUser from '../helpers/create-user';
|
|
|
+
|
|
|
+var application, container, auth;
|
|
|
+
|
|
|
+module('Acceptance: Avatar Change Modal', {
|
|
|
+ beforeEach: function() {
|
|
|
+ application = startApp();
|
|
|
+ container = application.__container__;
|
|
|
+ auth = container.lookup('service:auth');
|
|
|
+ },
|
|
|
+
|
|
|
+ afterEach: function() {
|
|
|
+ destroyModal();
|
|
|
+ Ember.run(application, 'destroy');
|
|
|
+ Ember.$.mockjax.clear();
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Change avatar modal handles no permission', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(1);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 403,
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Your avatar is locked.',
|
|
|
+ 'reason': ''
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ var message = Ember.$.trim(find('#appModal .modal-message .lead').text());
|
|
|
+ assert.equal(message, 'Your avatar is locked.');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Minimal select avatar type form works', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(5);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': false,
|
|
|
+ 'crop_org': false,
|
|
|
+ 'crop_tmp': false,
|
|
|
+ 'upload': false,
|
|
|
+ 'galleries': false
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.ok(!find('#appModal .btn-gravatar').length);
|
|
|
+ assert.ok(find('#appModal .btn-generated').length);
|
|
|
+ assert.ok(!find('#appModal .btn-crop').length);
|
|
|
+ assert.ok(!find('#appModal .btn-upload').length);
|
|
|
+ assert.ok(!find('#appModal .btn-gallery').length);
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Complete select avatar type form works', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(5);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.ok(find('#appModal .btn-gravatar').length);
|
|
|
+ assert.ok(find('#appModal .btn-generated').length);
|
|
|
+ assert.ok(find('#appModal .btn-crop').length);
|
|
|
+ assert.ok(find('#appModal .btn-upload').length);
|
|
|
+ assert.ok(find('#appModal .btn-gallery').length);
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Failed change to gravatar', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(1);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 400,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Avatar change failed.',
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-gravatar');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Avatar change failed.');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Changed avatar to gravatar', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(2);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Avatar changed to Gravatar.',
|
|
|
+ 'avatar_hash': 'eeeeeeee',
|
|
|
+ 'options': {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-gravatar');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Avatar changed to Gravatar.');
|
|
|
+ assert.equal(auth.get('user.avatar_hash'), 'eeeeeeee');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Failed change to generated', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(1);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 400,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Avatar change failed.',
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-generated');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Avatar change failed.');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Changed avatar to generated', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(2);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Avatar changed to generated.',
|
|
|
+ 'avatar_hash': 'eeeeeeee',
|
|
|
+ 'options': {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-generated');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Avatar changed to generated.');
|
|
|
+ assert.equal(auth.get('user.avatar_hash'), 'eeeeeeee');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Failed to pick avatar from gallery', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(1);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': [
|
|
|
+ {
|
|
|
+ 'name': 'TestGallery',
|
|
|
+ 'images': [
|
|
|
+ 'some-image.jpg'
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 400,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Failed to pick gallery avatar.',
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-gallery');
|
|
|
+ click('#appModal .col-sm-3 .btn');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Failed to pick gallery avatar.');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Picked avatar from gallery', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(2);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': [
|
|
|
+ {
|
|
|
+ 'name': 'TestGallery',
|
|
|
+ 'images': [
|
|
|
+ 'some-image.jpg'
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'POST',
|
|
|
+ responseText: {
|
|
|
+ 'detail': 'Avatar changed to gallery.',
|
|
|
+ 'avatar_hash': 'eeeeeeee',
|
|
|
+ 'options': {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-gallery');
|
|
|
+ click('#appModal .col-sm-3 .btn');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.equal(getToastMessage(), 'Avatar changed to gallery.');
|
|
|
+ assert.equal(auth.get('user.avatar_hash'), 'eeeeeeee');
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
+test('Canceled pick from gallery', function(assert) {
|
|
|
+ var user = createUser();
|
|
|
+ auth.setProperties({
|
|
|
+ 'isAuthenticated': true,
|
|
|
+ 'user': user
|
|
|
+ });
|
|
|
+
|
|
|
+ var done = assert.async();
|
|
|
+ assert.expect(1);
|
|
|
+
|
|
|
+ Ember.$.mockjax({
|
|
|
+ url: '/api/users/' + user.id + '/avatar/',
|
|
|
+ status: 200,
|
|
|
+ type: 'GET',
|
|
|
+ responseText: {
|
|
|
+ 'generated': true,
|
|
|
+ 'gravatar': true,
|
|
|
+ 'crop_org': true,
|
|
|
+ 'crop_tmp': true,
|
|
|
+ 'upload': true,
|
|
|
+ 'galleries': [
|
|
|
+ {
|
|
|
+ 'name': 'TestGallery',
|
|
|
+ 'images': ['some-image.png']
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ visit('/');
|
|
|
+ click('.navbar-user-nav .user-menu .dropdown-toggle');
|
|
|
+ click('.navbar-user-nav .user-menu .editable-avatar');
|
|
|
+ click('#appModal .btn-gallery');
|
|
|
+ click('#appModal .btn-block');
|
|
|
+
|
|
|
+ andThen(function() {
|
|
|
+ assert.ok(find('#appModal .btn-gravatar').length);
|
|
|
+ done();
|
|
|
+ });
|
|
|
+});
|