import { test } from 'qunit';
import { get } from '@ember/object';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import page from 'code-corps-ember/tests/pages/project/conversations';

const hour = 3600 * 1000;

function createConversations(count, project, user) {
  return [...Array(count)].map(() => {
    let message = server.create('message', { project });
    return server.create('conversation', { message, user }, 'withConversationParts');
  });
}

moduleForAcceptance('Acceptance | Project Conversations');

test('Page requires authentication', function(assert) {
  assert.expect(1);

  let project = server.create('project');

  page.visit({
    organization: project.organization.slug,
    project: project.slug
  });

  andThen(() => {
    assert.equal(currentRouteName(), 'login');
  });
});
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import sluggedRoutePage from '../pages/slugged-route';

moduleForAcceptance('Acceptance | Slugged Route');

test('It renders user details when the sluggedRoute model is a user', function(assert) {
  assert.expect(1);

  let user = server.create('user');

  sluggedRoutePage.visit({ slug: user.sluggedRoute.slug });

  andThen(function() {
    assert.ok(sluggedRoutePage.userDetails.isVisible, 'user-details component is rendered');
  });
});

test('It renders organization profile when the sluggedRoute model is an organization', function(assert) {
  assert.expect(1);

  let organization = server.create('organization');

  sluggedRoutePage.visit({ slug: organization.sluggedRoute.slug });

  andThen(function() {
    assert.ok(sluggedRoutePage.organizationProfile.isVisible, 'organization-profile component is rendered');
  });
});

test('It renders a 404 error when no slugged route exists', function(assert) {
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import organizationProjects from '../pages/organization-projects';

moduleForAcceptance('Acceptance | Organization projects');

test('It renders all the required ui elements', function(assert) {
  assert.expect(3);

  let organization = server.create('organization');
  let projects = server.createList('project', 5, { organization });

  organizationProjects.visit({ slug: organization.slug });

  andThen(function() {
    assert.ok(organizationProjects.project.isVisible, 'project-list component is rendered');
    assert.equal(organizationProjects.project.items().count, 5, 'correct number of project-items is rendered');

    let firstProjectHref = organizationProjects.project.items(0).href;
    assert.ok(firstProjectHref.indexOf(`/${organization.slug}/${projects[0].slug}`) > -1, 'The link to a project is properly rendered');
  });
});
Ejemplo n.º 4
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import indexPage from '../pages/index';
import signupPage from '../pages/signup';
import loginPage from '../pages/login';

moduleForAcceptance('Acceptance | Navigation');

test('Logged out, can sign up', function(assert) {
  assert.expect(2);
  indexPage.visit();
  andThen(function() {
    assert.ok(indexPage.navMenu.signUpLink.isVisible, 'Page contains sign up link.');
    indexPage.navMenu.signUpLink.click();
  });
  andThen(function() {
    assert.ok(signupPage.form.isVisible, 'Page contains sign up form');
  });
});

test('Logged out, can sign in', function(assert) {
  assert.expect(2);
  indexPage.visit();
  andThen(function() {
    assert.ok(indexPage.navMenu.signInLink.isVisible, 'Page contains sign in link.');
    indexPage.navMenu.signInLink.click();
  });
  andThen(function() {
    assert.ok(loginPage.form.isVisible, 'Page contains login form');
  });
Ejemplo n.º 5
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance | team');

test('visiting /team', function(assert) {
  visit('/team');

  andThen(function() {
    assert.equal(currentURL(), '/team');
    assert.equal(find('.company h2').text().trim(), 'Our Team');
    assert.equal(find('.company li').length, 2);
    assert.equal(find('.contributors li').length, 15);
  });
});
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import fillInFileInput from '../helpers/fill-in-file-input';
import removeDoubleQuotes from '../helpers/remove-double-quotes';
import organizationPage from '../pages/organization';

moduleForAcceptance('Acceptance | Organization Settings – Profile');

test('it requires authentication', function(assert) {
  assert.expect(1);

  let organization = server.create('organization');

  organizationPage.visitSettingsProfile({ organization: organization.slug });
  andThen(() => {
    assert.equal(currentRouteName(), 'login');
  });
});

test('it requires user to be owner of organization', function(assert) {
  assert.expect(1);

  let organization = server.create('organization');
  let user = server.create('user');

  authenticateSession(this.application, { user_id: user.id });

  organizationPage.visitSettingsProfile({ organization: organization.slug });
  andThen(() => {
    assert.equal(currentRouteName(), 'projects-list', 'User was redirected due to not having ownership.');
Ejemplo n.º 7
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import passwordPage from '../pages/password';
import { getFlashMessageCount } from 'code-corps-ember/tests/helpers/flash-message';

moduleForAcceptance('Acceptance | password test');

test('visiting /password/reset and logging in successfully', function(assert) {
  let email = '*****@*****.**';
  let password = '******';
  let token = 'abc123';

  server.create('user', { email, password, token });

  passwordPage.visitReset({ token });

  andThen(() => {
    assert.equal(currentURL(), '/password/reset?token=abc123');
  });

  andThen(() => {
    passwordPage.resetPasswordForm.sendResetPasswordSuccessfully('password', 'password');
  });

  andThen(() => {
    assert.equal(currentURL(), '/projects');
    assert.equal(getFlashMessageCount(this), 1, 'A flash message was shown.');
  });
});

test('visiting /password/reset and entering diff passwords returns 422', function(assert) {
Ejemplo n.º 8
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import projectTasksIndexPage from '../pages/project/tasks/index';

moduleForAcceptance('Acceptance | Project');

test('It renders navigation properly', function(assert) {
  assert.expect(2);

  let project = server.create('project');
  let aboutURL = `/${project.organization.slug}/${project.slug}`;
  let tasksURL = `${aboutURL}/tasks`;

  projectTasksIndexPage.visit({ organization: project.organization.slug, project: project.slug });

  andThen(function() {
    assert.equal(projectTasksIndexPage.projectMenu.links(0).href, aboutURL, 'Link to about is properly rendered');
    assert.equal(projectTasksIndexPage.projectMenu.links(1).href, tasksURL, 'Link to tasks is properly rendered');
  });
});

test('The footer and spacer are hidden, the main container is set up for project tasks', function(assert) {
  assert.expect(4);

  let project = server.create('project');

  projectTasksIndexPage.visit({ organization: project.organization.slug, project: project.slug });

  andThen(function() {
    assert.equal(currentRouteName(), 'project.tasks.index');
Ejemplo n.º 9
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import onboardingPage from 'code-corps-ember/tests/pages/onboarding';
import indexPage from 'code-corps-ember/tests/pages/index';

moduleForAcceptance('Acceptance | Onboarding');

test('A user can onboard as expected', function(assert) {
  let user = server.create('user', { username: '******', state: 'signed_up' });
  server.create('category');
  server.create('role', {
    name: 'Backend Developer',
    ability: 'Backend Development',
    kind: 'technology'
  });
  server.create('role', {
    name: 'Marketer',
    ability: 'Marketing',
    kind: 'creative'
  });
  server.create('role', {
    name: 'Donor',
    ability: 'Donations',
    kind: 'support'
  });
  server.create('skill', {
    title: 'Ruby'
  });
  server.create('skill', {
    title: 'CSS'
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import integrationsPage from '../pages/settings/integrations';

moduleForAcceptance('Acceptance | Settings – Integrations');

test('it requires authentication', function(assert) {
  assert.expect(1);

  integrationsPage.visit();

  andThen(() => {
    assert.equal(currentRouteName(), 'login');
  });
});

test('it displays the github connect button if user is not connected to github', function(assert) {
  assert.expect(1);

  let user = server.create('user');

  authenticateSession(this.application, { user_id: user.id });

  integrationsPage.visit();

  andThen(() => {
    assert.ok(integrationsPage.githubConnectButton.isVisible);
  });
});
Ejemplo n.º 11
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import indexPage from '../pages/index';

moduleForAcceptance('Acceptance | footer');

test('can visit links from footer', function(assert) {
  indexPage.visit();

  andThen(function() {
    indexPage.siteFooter.clickAboutLink();
  });

  andThen(function() {
    assert.equal(currentURL(), '/about');
  });

  andThen(function() {
    indexPage.siteFooter.clickTeamLink();
  });

  andThen(function() {
    assert.equal(currentURL(), '/team');
  });

  andThen(function() {
    indexPage.siteFooter.clickLogo();
  });

  andThen(function() {
    assert.equal(currentURL(), '/');
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import taskPage from '../pages/project/tasks/task';

moduleForAcceptance('Acceptance | Task Editing');

test('Task editing requires logging in', function(assert) {
  assert.expect(4);

  let project = server.create('project');
  let { organization } = project;
  let user = server.schema.users.create({ username: '******' });
  let task = project.createTask({ title: 'Test title', body: 'Test body', number: 1 });
  task.user = user;
  task.save();

  taskPage.visit({
    organization: organization.slug,
    project: project.slug,
    number: task.number
  });

  andThen(() => {
    assert.notOk(taskPage.taskBody.editButton.isVisible, 'Body edit button is not rendered');
    assert.notOk(taskPage.taskTitle.editButton.isVisible, 'Title edit button is not rendered');

    authenticateSession(this.application, { user_id: user.id });
    taskPage.visit({
      organization: organization.slug,
      project: project.slug,
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import { authenticateSession } from 'code-corps-ember/tests/helpers/ember-simple-auth';
import projectSettingsDonationsPage from '../pages/project/settings/donations';
import Mirage from 'ember-cli-mirage';

moduleForAcceptance('Acceptance | Project Donation Goals');

test('it requires authentication', function(assert) {
  assert.expect(1);

  let project = server.create('project');

  projectSettingsDonationsPage.visit({ organization: project.organization.slug, project: project.slug });

  andThen(() => {
    assert.equal(currentRouteName(), 'login', 'User was redirected to project route');
  });
});

test('it redirects to project list page if user is not allowed to manage project', function(assert) {
  assert.expect(1);

  let project = server.create('project');
  let user = server.create('user');

  authenticateSession(this.application, { user_id: user.id });

  projectSettingsDonationsPage.visit({ organization: project.organization.slug, project: project.slug });

  andThen(() => {
Ejemplo n.º 14
0
import { test } from 'qunit';
import moduleForAcceptance from 'code-corps-ember/tests/helpers/module-for-acceptance';
import indexPage from '../pages/index';

moduleForAcceptance('Acceptance | Code Theme');

test('Code theme class exists on the main container', function(assert) {
  assert.expect(1);

  indexPage.visit();

  andThen(function() {
    assert.ok(indexPage.isLightTheme);
  });
});