Example #1
0
def test_project_publish(client, phase, staff_user):
    project = phase.module.project
    project.is_draft = True
    project.information = ''
    project.save()

    project_publish_url = reverse('a4dashboard:project-publish',
                                  kwargs={'project_slug': project.slug})

    data = {'action': 'publish'}

    # publishing incomplete projects has no effect
    client.login(username=staff_user, password='******')
    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'project-edit'

    project.refresh_from_db()
    assert project.is_draft is True

    # complete project and publish it
    project.information = 'project information'
    project.save()

    client.login(username=staff_user, password='******')
    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'project-edit'

    project.refresh_from_db()
    assert project.is_draft is False
def test_initiator_can_delete_invitation(client, phase_factory):
    phase, module, project, idea = setup_phase(
        phase_factory, None, CollectFeedbackPhase)
    url = component.get_base_url(project)
    initiator = module.project.organisation.initiators.first()
    client.login(username=initiator.email, password='******')
    response = client.get(url)
    assert_template_response(
        response, 'a4_candy_projects/project_participants.html')

    data = {
        'add_users': '[email protected],[email protected]',
    }
    response = client.post(url, data)
    assert redirect_target(response) == \
        'dashboard-{}-edit'.format(component.identifier)
    assert ParticipantInvite.objects.get(email='*****@*****.**')
    invite_pk = int(ParticipantInvite.objects.get(email='*****@*****.**').pk)
    data = {
        'submit_action': 'remove_invite',
        'invite_pk': invite_pk

    }
    response = client.post(url, data)
    assert redirect_target(response) == \
        'dashboard-{}-edit'.format(component.identifier)
    assert response.status_code == 302
    assert not ParticipantInvite.objects.filter(email='*****@*****.**').exists()
    response = client.post(url, data)
    assert redirect_target(response) == \
        'dashboard-{}-edit'.format(component.identifier)
    assert response.status_code == 302
Example #3
0
def test_project_unpublish(client, phase, another_user):
    project = phase.module.project
    project.is_draft = False
    project.save()
    organisation = project.organisation
    organisation.initiators.add(another_user)

    project_publish_url = reverse('a4dashboard:project-publish', kwargs={
        'project_slug': project.slug})

    data = {'action': 'unpublish'}

    client.login(username=another_user, password='******')
    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'project-edit'

    project.refresh_from_db()
    assert project.is_draft is True

    # unpublishing draft projects has no effect
    client.login(username=another_user, password='******')
    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'project-edit'

    project.refresh_from_db()
    assert project.is_draft is True
Example #4
0
def test_project_create(client, organisation, user):
    initiator = organisation.initiators.first()
    url = reverse('a4dashboard:project-create', kwargs={
        'organisation_slug': organisation.slug,
    })

    data = {
        'name': 'project name',
        'description': 'project description',
        'access': 1
    }

    response = client.post(url, data)
    assert redirect_target(response) == 'account_login'

    client.login(username=user, password='******')
    response = client.post(url, data)
    assert response.status_code == 403

    client.login(username=initiator, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'project-edit'

    assert 1 == Project.objects.all().count()
    project = Project.objects.all().first()
    assert 'project name' == project.name
    assert 'project description' == project.description
Example #5
0
def test_send_platform(client, project, user_factory):
    organisation = project.organisation

    assert organisation.initiators.count() == 1
    assert project.moderators.count() == 1

    admin = user_factory(is_superuser=True)
    user_factory()
    User.objects.update(get_newsletters=True)
    assert User.objects.count() == 4

    data = {
        'sender_name': 'Tester',
        'sender': '*****@*****.**',
        'subject': 'Testsubject',
        'body': 'Testbody',
        'receivers': newsletter_models.PLATFORM,
        'organisation': '',
        'project': '',
        'send': 'Send',
    }

    url = reverse('meinberlin_newsletters:newsletter-create')
    client.login(username=admin.email, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'newsletter-create'
    assert newsletter_models.Newsletter.objects.count() == 1

    assert len(mail.outbox) == 4
    to_sent = sorted([m.to[0] for m in mail.outbox])
    to_expected = sorted(User.objects.all().values_list('email', flat=True))
    assert to_sent == to_expected
Example #6
0
def test_admin_can_create_idea_in_wrong_phase(client, phase_factory,
                                              category_factory, admin):
    phase = phase_factory(phase_content=phases.RatingPhase())
    module = phase.module
    category = category_factory(module=module)
    url = reverse('a4_candy_ideas:idea-create',
                  kwargs={
                      'organisation_slug': module.project.organisation.slug,
                      'module_slug': module.slug
                  })
    with freeze_phase(phase):
        client.login(username=admin.email, password='******')
        response = client.get(url)
        assert_template_response(response,
                                 'a4_candy_ideas/idea_create_form.html')
        assert response.status_code == 200
        idea = {
            'name': 'Idea',
            'description': 'description',
            'category': category.pk,
        }
        response = client.post(url, idea)
        assert response.status_code == 302
        assert redirect_target(response) == 'idea-detail'
        count = models.Idea.objects.all().count()
        assert count == 1
Example #7
0
def test_initiator_can_create_topic_before_phase(client, phase_factory,
                                                 category_factory, admin):
    phase = phase_factory(phase_content=phases.PrioritizePhase())
    module = phase.module
    project = module.project
    category = category_factory(module=module)
    initiator = project.organisation.initiators.first()
    url = reverse('a4dashboard:topic-create',
                  kwargs={'module_slug': module.slug})
    with freeze_pre_phase(phase):
        client.login(username=initiator.email, password='******')
        response = client.get(url)
        assert_template_response(
            response, 'meinberlin_topicprio/topic_create_form.html')
        assert response.status_code == 200
        topic = {
            'name': 'Topic',
            'description': 'description',
            'category': category.pk,
        }
        response = client.post(url, topic)
        assert response.status_code == 302
        assert redirect_target(response) == 'topic-list'
        count = models.Topic.objects.all().count()
        assert count == 1
def test_participant_can_only_be_invited_once(
        client, phase_factory, user):
    phase, module, project, idea = setup_phase(
        phase_factory, None, CollectFeedbackPhase)
    assert user not in module.project.participants.all()
    module.project.participants.add(user)
    url = component.get_base_url(project)
    initiator = module.project.organisation.initiators.first()
    client.login(username=initiator.email, password='******')
    response = client.get(url)
    assert_template_response(
        response, 'a4_candy_projects/project_participants.html')

    data = {
        'add_users': '[email protected], [email protected], ' + user.email,
    }
    response = client.post(url, data)
    assert redirect_target(response) == \
        'dashboard-{}-edit'.format(component.identifier)
    assert ParticipantInvite.objects.get(email='*****@*****.**')
    assert ParticipantInvite.objects.get(email='*****@*****.**')
    messages = list(get_messages(response.wsgi_request))
    assert len(messages) == 2
    assert str(messages[0]) == (
        'Following users already accepted an invitation: ' + user.email)
    assert str(messages[1]) == ('2 participants invited.')
    data = {
        'add_users': '*****@*****.**',
    }
    response = client.post(url, data)
    messages = list(get_messages(response.wsgi_request))
    assert len(messages) == 4
    assert str(messages[2]) == (
        'Following users are already invited: [email protected]')
    assert str(messages[3]) == ('0 participants invited.')
def test_invite_accept(client, user, invite):
    url = reverse('ideainvite-update', args=[invite.token])
    client.force_login(user)
    response = client.post(url, {'accept': True})

    assert redirect_target(response) == 'idea-detail'
    assert user in invite.subject.co_workers.all()
Example #10
0
def test_module_create(client, project):
    organisation = project.organisation
    initiator = organisation.initiators.first()
    url = reverse('a4dashboard:module-create',
                  kwargs={'organisation_slug': organisation.slug,
                          'project_slug': project.slug,
                          'blueprint_slug': 'interactive-event'
                          })
    client.login(username=initiator.email, password='******')

    response = client.post(url)

    assert redirect_target(response) == 'dashboard-module_basic-edit'
    messages = list(get_messages(response.wsgi_request))
    assert len(messages) == 1
    assert str(messages[0]) == 'The module was created'

    response2 = client.post(response.url)
    assert not response2.context_data['form'].is_valid()
    assert 'name' in response2.context_data['form'].errors
    assert 'description' in response2.context_data['form'].errors

    data = {'name': 'interactive event module',
            'description': 'ask questions'}

    response3 = client.post(response.url, data)

    assert response3.status_code == 302
    response4 = client.get(response3.url)
    assert response4.context_data['form'].errors == {}

    assert Module.objects.all().count() == 1
    module = Module.objects.first()
    assert module.name == data['name']
    assert module.description == data['description']
def test_creator_can_update_during_active_phase(client, phase_factory,
                                                map_idea_factory,
                                                category_factory,
                                                area_settings_factory):
    phase, module, project, mapidea = setup_phase(phase_factory,
                                                  map_idea_factory,
                                                  phases.IssuePhase)
    category = category_factory(module=module)
    area_settings_factory(module=module)
    user = mapidea.creator
    url = reverse('mapidea-update', kwargs={'slug': mapidea.slug})
    with freeze_phase(phase):
        client.login(username=user.email, password='******')
        data = {
            'name': 'Another MapIdea',
            'description': 'changed description',
            'category': category.pk,
            'point': (0, 1),
            'point_label': 'somewhere else'
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'mapidea-detail'
        assert response.status_code == 302
        updated_mapidea = models.MapIdea.objects.get(id=mapidea.pk)
        assert updated_mapidea.description == 'changed description'
Example #12
0
def test_creator_can_update_during_active_phase(client,
                                                phase_factory,
                                                idea_factory,
                                                category_factory):
    phase, module, project, idea = setup_phase(
        phase_factory, idea_factory, phases.IssuePhase)
    category = category_factory(module=module)
    user = idea.creator
    url = reverse(
        'meinberlin_ideas:idea-update',
        kwargs={
            'pk': idea.pk,
            'year': idea.created.year
        })
    with freeze_phase(phase):
        client.login(username=user.email, password='******')
        data = {
            'name': 'Another Idea',
            'description': 'changed description',
            'category': category.pk,
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'idea-detail'
        assert response.status_code == 302
        updated_idea = models.Idea.objects.get(id=idea.pk)
        assert updated_idea.description == 'changed description'
def test_admin_can_create_mapidea_in_wrong_phase(client, phase_factory,
                                                 category_factory, admin,
                                                 area_settings_factory):
    phase = phase_factory(phase_content=phases.RatingPhase())
    module = phase.module
    area_settings_factory(module=module)
    category = category_factory(module=module)
    url = reverse('mapidea-create', kwargs={'slug': module.slug})
    with freeze_phase(phase):
        client.login(username=admin.email, password='******')
        response = client.get(url)
        assert_template_response(
            response,
            '{{ cookiecutter.project_app_prefix }}_mapideas/mapidea_form.html')
        assert response.status_code == 200
        mapidea = {
            'name': 'MapIdea',
            'description': 'description',
            'category': category.pk,
            'point': (0, 0),
            'point_label': 'somewhere'
        }
        response = client.post(url, mapidea)
        assert response.status_code == 302
        assert redirect_target(response) == 'mapidea-detail'
        count = models.MapIdea.objects.all().count()
        assert count == 1
Example #14
0
def test_send_project(admin, client, project, user_factory, follow_factory):
    organisation = project.organisation

    user1 = user_factory(get_newsletters=True)
    user2 = user_factory()
    user_factory()

    follow_models.Follow.objects.all().delete()
    follow_factory(creator=user1, project=project)
    follow_factory(creator=user2, project=project, enabled=False)

    data = {
        'sender_name': 'Tester',
        'sender': '*****@*****.**',
        'subject': 'Testsubject',
        'body': 'Testbody',
        'receivers': newsletter_models.PROJECT,
        'organisation': organisation.pk,
        'project': project.pk,
        'send': 'Send',
    }

    url = reverse('a4dashboard:newsletter-create',
                  kwargs={'organisation_slug': organisation.slug})
    client.login(username=admin.email, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'newsletter-create'
    assert newsletter_models.Newsletter.objects.count() == 1

    assert len(mail.outbox) == 1
    assert mail.outbox[0].to == [user1.email]
    assert mail.outbox[0].subject == 'Testsubject'
Example #15
0
def test_skip_inactive(admin, client, project, user_factory, follow_factory):
    organisation = project.organisation
    user1 = user_factory(is_active=False)

    follow_models.Follow.objects.all().delete()
    follow_factory(creator=user1, project=project)

    data = {
        'sender_name': 'Tester',
        'sender': '*****@*****.**',
        'subject': 'Testsubject',
        'body': 'Testbody',
        'receivers': newsletter_models.ORGANISATION,
        'organisation': organisation.pk,
        'project': '',
        'send': 'Send',
    }

    url = reverse('a4dashboard:newsletter-create',
                  kwargs={'organisation_slug': organisation.slug})
    client.login(username=admin.email, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'newsletter-create'
    assert newsletter_models.Newsletter.objects.count() == 1

    assert len(mail.outbox) == 0
Example #16
0
def test_invite_reject(client, user, invite):
    url = reverse('ideainvite-update', args=[invite.token])
    client.force_login(user)
    response = client.post(url, {'reject': True})

    assert redirect_target(response) == 'wagtail_serve'
    assert user not in invite.subject.co_workers.all()
Example #17
0
def test_module_delete(client, module_factory):
    module1 = module_factory()
    project = module1.project
    module2 = module_factory(project=project,
                             is_draft=True)
    organisation = project.organisation
    initiator = organisation.initiators.first()

    assert project.modules.count() == 2

    url = reverse('a4dashboard:module-delete',
                  kwargs={'organisation_slug': organisation.slug,
                          'slug': module1.slug
                          })
    client.login(username=initiator.email, password='******')

    response = client.post(url)
    messages = list(get_messages(response.wsgi_request))
    assert len(messages) > 0
    assert str(messages[-1]) == 'Module cannot be deleted. It has to be ' \
                                'removed from the project first.'
    assert redirect_target(response) == 'project-edit'
    assert project.modules.count() == 2

    url = reverse('a4dashboard:module-delete',
                  kwargs={'organisation_slug': organisation.slug,
                          'slug': module2.slug
                          })
    response = client.post(url)
    messages = list(get_messages(response.wsgi_request))
    assert str(messages[-1]) == 'The module has been deleted'
    assert project.modules.count() == 1
Example #18
0
def test_user_can_create_idea_during_active_phase(client, phase_factory, user,
                                                  category_factory):
    phase = phase_factory(phase_content=phases.IssuePhase())
    module = phase.module
    category = category_factory(module=module)
    url = reverse('idea-create', kwargs={'slug': module.slug})

    with freeze_phase(phase):
        count = models.Idea.objects.all().count()
        assert count == 0
        client.login(username=user.email, password='******')
        response = client.get(url)
        assert_template_response(
            response,
            '{{ cookiecutter.project_app_prefix }}_ideas/idea_form.html')
        assert response.status_code == 200
        idea = {
            'name': 'Idea',
            'description': 'description',
            'category': category.pk,
        }
        response = client.post(url, idea)
        assert response.status_code == 302
        assert redirect_target(response) == 'idea-detail'
        count = models.Idea.objects.all().count()
        assert count == 1
def test_moderate_view(client, phase_factory, proposal_factory, user,
                       area_settings_factory):
    phase, module, project, item = setup_phase(phase_factory, proposal_factory,
                                               phases.RequestPhase)
    area_settings_factory(module=module)
    url = reverse('a4_candy_budgeting:proposal-moderate',
                  kwargs={
                      'organisation_slug': project.organisation.slug,
                      'pk': item.pk,
                      'year': item.created.year
                  })
    project.moderators.set([user])
    with freeze_phase(phase):
        client.login(username=user.email, password='******')

        response = client.get(url)
        assert_template_response(
            response, 'a4_candy_budgeting/proposal_moderate_form.html')

        data = {
            'moderator_feedback': 'test',
            'is_archived': False,
            'statement': 'its a statement'
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'proposal-detail'
def test_create_view(client, phase_factory, proposal_factory, user,
                     category_factory, area_settings_factory):
    phase, module, project, item = setup_phase(phase_factory, proposal_factory,
                                               phases.RequestPhase)
    area_settings_factory(module=module)
    category = category_factory(module=module)
    url = reverse('a4_candy_budgeting:proposal-create',
                  kwargs={
                      'organisation_slug': project.organisation.slug,
                      'module_slug': module.slug
                  })
    with freeze_phase(phase):
        client.login(username=user.email, password='******')

        response = client.get(url)
        assert_template_response(
            response, 'a4_candy_budgeting/proposal_create_form.html')

        data = {
            'name': 'Idea',
            'description': 'description',
            'category': category.pk,
            'budget': 123,
            'point': (0, 0),
            'point_label': 'somewhere'
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'proposal-detail'
Example #21
0
def test_user_can_create_mapidea_during_active_phase(client, phase_factory,
                                                     user, category_factory,
                                                     area_settings_factory):
    phase = phase_factory(phase_content=phases.IssuePhase())
    module = phase.module
    area_settings_factory(module=module)
    category = category_factory(module=module)
    url = reverse('a4_candy_mapideas:mapidea-create',
                  kwargs={
                      'organisation_slug': module.project.organisation.slug,
                      'module_slug': module.slug
                  })
    with freeze_phase(phase):
        count = models.MapIdea.objects.all().count()
        assert count == 0
        client.login(username=user.email, password='******')
        response = client.get(url)
        assert_template_response(response,
                                 'a4_candy_mapideas/mapidea_create_form.html')
        assert response.status_code == 200
        mapidea = {
            'name': 'MapIdea',
            'description': 'description',
            'category': category.pk,
            'point': (0, 0),
            'point_label': 'somewhere'
        }
        response = client.post(url, mapidea)
        assert response.status_code == 302
        assert redirect_target(response) == 'mapidea-detail'
        count = models.MapIdea.objects.all().count()
        assert count == 1
Example #22
0
def test_moderator_can_create_maptopic_before_phase(client, phase_factory,
                                                    category_factory, admin,
                                                    area_settings_factory):
    phase = phase_factory(phase_content=phases.PrioritizePhase())
    module = phase.module
    project = module.project
    area_settings_factory(module=module)
    category = category_factory(module=module)
    moderator = project.moderators.first()
    url = reverse('a4dashboard:maptopic-create',
                  kwargs={'module_slug': module.slug})
    with freeze_pre_phase(phase):
        client.login(username=moderator.email, password='******')
        response = client.get(url)
        assert_template_response(
            response, 'meinberlin_maptopicprio/maptopic_create_form.html')
        assert response.status_code == 200
        maptopic = {
            'name': 'MapTopic',
            'description': 'description',
            'category': category.pk,
            'point': (0, 0),
            'point_label': 'somewhere'
        }
        response = client.post(url, maptopic)
        assert response.status_code == 302
        assert redirect_target(response) == 'maptopic-list'
        count = models.MapTopic.objects.all().count()
        assert count == 1
def test_anonymous_cannot_edit(client, phase_factory):
    phase, module, project, idea = setup_phase(phase_factory, None,
                                               CollectFeedbackPhase)
    url = component.get_base_url(project)
    response = client.get(url)
    assert response.status_code == 302
    assert redirect_target(response) == 'account_login'
Example #24
0
def test_moderator_can_update_during_wrong_phase(client, phase_factory,
                                                 idea_factory,
                                                 category_factory):
    phase, module, project, idea = setup_phase(phase_factory, idea_factory,
                                               phases.RatingPhase)
    category = category_factory(module=module)
    user = idea.creator
    moderator = project.moderators.first()
    assert moderator is not user
    url = reverse('a4_candy_ideas:idea-update',
                  kwargs={
                      'organisation_slug': idea.project.organisation.slug,
                      'pk': idea.pk,
                      'year': idea.created.year
                  })
    with freeze_phase(phase):
        client.login(username=moderator.email, password='******')
        data = {
            'name': 'Another Idea',
            'description': 'changed description',
            'category': category.pk,
        }
        response = client.post(url, data)
        assert redirect_target(response) == 'idea-detail'
        assert response.status_code == 302
        updated_idea = models.Idea.objects.get(id=idea.pk)
        assert updated_idea.description == 'changed description'
Example #25
0
def test_moderator_can_delete_in_wrong_phase(client, phase_factory,
                                             map_idea_factory):
    phase, module, project, mapidea = setup_phase(phase_factory,
                                                  map_idea_factory,
                                                  phases.RatingPhase)
    url = reverse('a4_candy_mapideas:mapidea-delete',
                  kwargs={
                      'organisation_slug': mapidea.project.organisation.slug,
                      'pk': mapidea.pk,
                      'year': mapidea.created.year
                  })
    with freeze_phase(phase):
        count = models.MapIdea.objects.all().count()
        assert count == 1
        moderator = mapidea.module.project.moderators.first()
        client.login(username=moderator.email, password='******')
        response = client.get(url)
        assert response.status_code == 200
        assert_template_response(
            response, 'a4_candy_mapideas/mapidea_confirm_delete.html')
        response = client.post(url)
        assert redirect_target(response) == 'project-detail'
        assert response.status_code == 302
        count = models.MapIdea.objects.all().count()
        assert count == 0
Example #26
0
def test_maptopic_update_view(client, phase_factory, maptopic_factory,
                              category_factory, area_settings_factory):
    phase, module, project, item = setup_phase(phase_factory, maptopic_factory,
                                               PrioritizePhase)
    initiator = module.project.organisation.initiators.first()
    area_settings_factory(module=module)
    category = category_factory(module=module)
    url = reverse('a4dashboard:maptopic-update',
                  kwargs={
                      'pk': item.pk,
                      'year': item.created.year
                  })
    data = {
        'name': 'name',
        'description': 'desc',
        'category': category.pk,
        'point': '{ "type":"Feature", "geometry":{ "type":"Point",'
        '"coordinates":[ 13.0, 52.0 ] }, "properties":{}}',
        'point_label': 'test',
    }
    client.login(username=initiator.email, password='******')
    response = client.post(url, data)
    assert redirect_target(response) == 'maptopic-list'
    item.refresh_from_db()
    assert item.description == data.get('description')
    assert item.category.pk == data.get('category')
    assert item.point == json.loads(data.get('point'))
    assert item.point_label == data.get('point_label')
Example #27
0
def test_register_with_next(client, signup_url):
    assert EmailAddress.objects.count() == 0
    email = '*****@*****.**'
    response = client.post(
        signup_url, {
            'username': '******',
            'email': email,
            'password1': 'password',
            'password2': 'password',
            'terms_of_use': 'on',
            'next': '/en/projects/pppp/',
        })
    assert response.status_code == 302
    assert EmailAddress.objects.filter(email=email,
                                       verified=False).count() == 1
    assert len(mail.outbox) == 1
    confirmation_url = re.search(
        r'(http://testserver/.*/?next=/en/projects/pppp/)',
        str(mail.outbox[0].body)).group(0)
    confirm_email_response = client.get(confirmation_url)
    assert confirm_email_response.status_code == 200
    assert EmailAddress.objects.filter(email=email,
                                       verified=False).count() == 1
    confirm_email_response = client.post(confirmation_url)
    assert confirm_email_response.status_code == 302
    assert redirect_target(confirm_email_response) == "project-detail"
    assert EmailAddress.objects.filter(email=email, verified=True).count() == 1
def test_moderators_can_always_update(client, phase_factory, map_idea_factory,
                                      category_factory, area_settings_factory):
    phase, module, project, mapidea = setup_phase(phase_factory,
                                                  map_idea_factory,
                                                  phases.RatingPhase)
    area_settings_factory(module=module)
    category = category_factory(module=module)
    user = mapidea.creator
    moderator = project.moderators.first()
    assert moderator is not user
    url = reverse('a4_candy_mapideas:mapidea-update',
                  kwargs={
                      'organisation_slug': mapidea.project.organisation.slug,
                      'pk': mapidea.pk,
                      'year': mapidea.created.year
                  })
    client.login(username=moderator.email, password='******')
    data = {
        'name': 'Another MapIdea',
        'description': 'changed description',
        'category': category.pk,
        'point': (0, 0),
        'point_label': 'somewhere'
    }
    response = client.post(url, data)
    assert redirect_target(response) == 'mapidea-detail'
    assert response.status_code == 302
    updated_mapidea = models.MapIdea.objects.get(id=mapidea.pk)
    assert updated_mapidea.description == 'changed description'
Example #29
0
def test_project_publish_perms(client, phase, user, staff_user):
    project = phase.module.project

    project_publish_url = reverse('a4dashboard:project-publish',
                                  kwargs={'project_slug': project.slug})

    data = {'action': 'publish'}

    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'account_login'

    client.login(username=user, password='******')
    response = client.post(project_publish_url, data)
    assert response.status_code == 403

    client.login(username=staff_user, password='******')
    response = client.post(project_publish_url, data)
    assert redirect_target(response) == 'project-edit'
Example #30
0
def test_anonymous_cannot_delete(client, idea_factory):
    idea = idea_factory()
    url = reverse(
        'idea-delete',
        kwargs={
            'slug': idea.slug
        })
    response = client.post(url)
    assert response.status_code == 302
    assert redirect_target(response) == 'account_login'