350 lines
9.9 KiB
JavaScript
350 lines
9.9 KiB
JavaScript
import Ember from 'ember';
|
|
import jQuery from 'jquery';
|
|
import { module, test } from 'qunit';
|
|
import startApp from 'croodle/tests/helpers/start-app';
|
|
import Pretender from 'pretender';
|
|
import serverGetPolls from '../helpers/server-get-polls';
|
|
import moment from 'moment';
|
|
/* jshint proto: true */
|
|
|
|
const { run } = Ember;
|
|
|
|
let application, server;
|
|
|
|
module('Acceptance | view evaluation', {
|
|
beforeEach(assert) {
|
|
window.localStorage.setItem('locale', 'en');
|
|
|
|
application = startApp({ assert });
|
|
application.__container__.lookup('adapter:application').__proto__.namespace = '';
|
|
|
|
server = new Pretender();
|
|
},
|
|
afterEach() {
|
|
server.shutdown();
|
|
|
|
run(application, 'destroy');
|
|
}
|
|
});
|
|
|
|
test('evaluation summary is not present for poll without participants', function(assert) {
|
|
let id = 'test';
|
|
let encryptionKey = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
server.get(`/polls/${id}`, function() {
|
|
return serverGetPolls(
|
|
{
|
|
id,
|
|
users: []
|
|
}, encryptionKey
|
|
);
|
|
});
|
|
|
|
visit(`/poll/${id}?encryptionKey=${encryptionKey}`);
|
|
|
|
andThen(function() {
|
|
assert.equal(currentPath(), 'poll.participation');
|
|
switchTab('evaluation');
|
|
|
|
andThen(function() {
|
|
assert.equal(find('.tab-content .tab-pane .evaluation-summary').length, 0, 'evaluation summary is not present');
|
|
});
|
|
});
|
|
});
|
|
|
|
test('evaluation is correct for FindADate', function(assert) {
|
|
let id = 'test';
|
|
let encryptionKey = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
server.get(`/polls/${id}`, function() {
|
|
return serverGetPolls(
|
|
{
|
|
id,
|
|
answers: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'no',
|
|
labelTranslation: 'answerTypes.no.label',
|
|
icon: 'glyphicon glyphicon-thumbs-down',
|
|
label: 'No'
|
|
}
|
|
],
|
|
options: [
|
|
{ title: '2015-12-12' },
|
|
{ title: '2016-01-01' }
|
|
],
|
|
users: [
|
|
{
|
|
id: `${id}_0`,
|
|
name: 'Maximilian',
|
|
selections: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-01-01T00:00:00.000Z'
|
|
},
|
|
{
|
|
id: `${id}_1`,
|
|
name: 'Peter',
|
|
selections: [
|
|
{
|
|
type: 'no',
|
|
labelTranslation: 'answerTypes.no.label',
|
|
icon: 'glyphicon glyphicon-thumbs-down',
|
|
label: 'No'
|
|
},
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-08-01T00:00:00.000Z'
|
|
}
|
|
]
|
|
}, encryptionKey
|
|
);
|
|
});
|
|
|
|
visit(`/poll/${id}/evaluation?encryptionKey=${encryptionKey}`);
|
|
|
|
andThen(function() {
|
|
assert.equal(currentPath(), 'poll.evaluation');
|
|
assert.equal(find('.tab-content .tab-pane .evaluation-summary').length, 1, 'evaluation summary is present');
|
|
assert.equal(
|
|
find('.participants').text().trim(),
|
|
t('poll.evaluation.participants', { count: 2 }).toString(),
|
|
'participants are counted correctly'
|
|
);
|
|
assert.equal(
|
|
find('.best-options strong').text().trim(),
|
|
'Friday, January 1, 2016',
|
|
'options are evaluated correctly'
|
|
);
|
|
assert.equal(
|
|
find('.last-participation').text().trim(),
|
|
t('poll.evaluation.lastParticipation', {
|
|
ago: moment('2015-08-01T00:00:00.000Z').from()
|
|
}).toString(),
|
|
'last participation is evaluated correctly'
|
|
);
|
|
});
|
|
});
|
|
|
|
test('evaluation is correct for MakeAPoll', function(assert) {
|
|
let id = 'test';
|
|
let encryptionKey = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
server.get(`/polls/${id}`, function() {
|
|
return serverGetPolls(
|
|
{
|
|
id,
|
|
answers: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'no',
|
|
labelTranslation: 'answerTypes.no.label',
|
|
icon: 'glyphicon glyphicon-thumbs-down',
|
|
label: 'No'
|
|
}
|
|
],
|
|
options: [
|
|
{ title: 'first option' },
|
|
{ title: 'second option' }
|
|
],
|
|
pollType: 'MakeAPoll',
|
|
users: [
|
|
{
|
|
id: `${id}_0`,
|
|
name: 'Maximilian',
|
|
selections: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-01-01T00:00:00.000Z'
|
|
},
|
|
{
|
|
id: `${id}_1`,
|
|
name: 'Peter',
|
|
selections: [
|
|
{
|
|
type: 'no',
|
|
labelTranslation: 'answerTypes.no.label',
|
|
icon: 'glyphicon glyphicon-thumbs-down',
|
|
label: 'No'
|
|
},
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-08-01T00:00:00.000Z'
|
|
}
|
|
]
|
|
}, encryptionKey
|
|
);
|
|
});
|
|
|
|
visit(`/poll/${id}/evaluation?encryptionKey=${encryptionKey}`);
|
|
|
|
andThen(function() {
|
|
assert.equal(currentPath(), 'poll.evaluation');
|
|
assert.equal(find('.tab-content .tab-pane .evaluation-summary').length, 1, 'evaluation summary is present');
|
|
assert.equal(
|
|
find('.participants').text().trim(),
|
|
t('poll.evaluation.participants', { count: 2 }).toString(),
|
|
'participants are counted correctly'
|
|
);
|
|
assert.equal(
|
|
find('.best-options strong').text().trim(),
|
|
'second option',
|
|
'options are evaluated correctly'
|
|
);
|
|
assert.ok(
|
|
find('.user-selections-table').length,
|
|
'has a table showing user selections'
|
|
);
|
|
assert.deepEqual(
|
|
find('.user-selections-table thead th').map((i, el) => jQuery(el).text().trim()).get(),
|
|
['', 'first option', 'second option'],
|
|
'dates are used as table headers'
|
|
);
|
|
assert.deepEqual(
|
|
find('.user-selections-table tbody tr:nth-child(1) td').map((i, el) => jQuery(el).text().trim()).get(),
|
|
['Maximilian', 'Yes', 'Yes'],
|
|
'answers shown in table are correct for first user'
|
|
);
|
|
assert.deepEqual(
|
|
find('.user-selections-table tbody tr:nth-child(2) td').map((i, el) => jQuery(el).text().trim()).get(),
|
|
['Peter', 'No', 'Yes'],
|
|
'answers shown in table are correct for second user'
|
|
);
|
|
assert.equal(
|
|
find('.last-participation').text().trim(),
|
|
t('poll.evaluation.lastParticipation', {
|
|
ago: moment('2015-08-01T00:00:00.000Z').from()
|
|
}).toString(),
|
|
'last participation is evaluated correctly'
|
|
);
|
|
});
|
|
});
|
|
|
|
test('could open evaluation by tab from poll participation', function(assert) {
|
|
let id = 'test';
|
|
let encryptionKey = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
server.get(`/polls/${id}`, function() {
|
|
return serverGetPolls(
|
|
{
|
|
id,
|
|
answers: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'no',
|
|
labelTranslation: 'answerTypes.no.label',
|
|
icon: 'glyphicon glyphicon-thumbs-down',
|
|
label: 'No'
|
|
}
|
|
],
|
|
options: [
|
|
{ title: '2015-12-12' },
|
|
{ title: '2016-01-01' }
|
|
],
|
|
users: [
|
|
{
|
|
id: `${id}_0`,
|
|
name: 'Maximilian',
|
|
selections: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-01-01T00:00:00.000Z'
|
|
},
|
|
{
|
|
id: `${id}_1`,
|
|
name: 'Peter',
|
|
selections: [
|
|
{
|
|
type: 'yes',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
},
|
|
{
|
|
id: 'no',
|
|
labelTranslation: 'answerTypes.yes.label',
|
|
icon: 'glyphicon glyphicon-thumbs-up',
|
|
label: 'Yes'
|
|
}
|
|
],
|
|
creationDate: '2015-08-01T00:00:00.000Z'
|
|
}
|
|
]
|
|
}, encryptionKey
|
|
);
|
|
});
|
|
|
|
visit(`/poll/${id}?encryptionKey=${encryptionKey}`);
|
|
|
|
andThen(function() {
|
|
assert.equal(currentPath(), 'poll.participation');
|
|
switchTab('evaluation');
|
|
|
|
andThen(function() {
|
|
assert.equal(currentPath(), 'poll.evaluation');
|
|
assert.equal(
|
|
find('.tab-pane h2').text().trim(),
|
|
t('poll.evaluation.label').toString(),
|
|
'headline is there'
|
|
);
|
|
});
|
|
});
|
|
});
|