eventoL/eventoL

View on GitHub
eventol/manager/tests/conftest.py

Summary

Maintainability
D
2 days
Test Coverage
# pylint: redefined-outer-name
# pylint: disable=too-many-arguments

from datetime import datetime
from django.db import connection
from django.test import Client
from rest_framework.test import APIClient, APIRequestFactory

import autofixture
import pytest

from .constants import (
    ADMIN_USERNAME, ADMIN_PASSWORD,
    EVENT_TAG_NAME_1, EVENT_TAG_NAME_2,
    EVENT_TAG_SLUG_1, EVENT_TAG_SLUG_2,
    EVENT_NAME_1, EVENT_NAME_2,
    EVENT_SLUG_1, EVENT_SLUG_2,
    USER_USERNAME_1, USER_USERNAME_2,
    USER_PASSWORD_1, USER_PASSWORD_2
)
from ..models import generate_ticket_code


@pytest.fixture
@pytest.mark.django_db
def admin():
    yield autofixture.create_one('auth.User', {
        'username': ADMIN_USERNAME,
        'password': ADMIN_PASSWORD,
        'is_superuser': True,
        'is_staff': True
    })


# EventTag
@pytest.fixture
@pytest.mark.django_db
def event_tag_1():
    yield autofixture.create_one(
        'manager.EventTag',
        {'name': EVENT_TAG_NAME_1, 'slug': EVENT_TAG_SLUG_1}
    )


@pytest.fixture
@pytest.mark.django_db
def event_tag_2():
    yield autofixture.create_one(
        'manager.EventTag',
        {'name': EVENT_TAG_NAME_2, 'slug': EVENT_TAG_SLUG_2}
    )


# Events
@pytest.fixture
@pytest.mark.django_db
def event1(event_tag_1):
    yield autofixture.create_one(
        'manager.Event',
        {'name': EVENT_NAME_1, 'slug': EVENT_SLUG_1, 'tags': [event_tag_1]}
    )


@pytest.fixture
@pytest.mark.django_db
def event2(event_tag_2):
    yield autofixture.create_one(
        'manager.Event',
        {'name': EVENT_NAME_2, 'slug': EVENT_SLUG_2, 'tags': [event_tag_2]}
    )


# Users
@pytest.fixture
@pytest.mark.django_db
def user1():
    yield autofixture.create_one('auth.User', {
        'username': USER_USERNAME_1,
        'password': USER_PASSWORD_1,
        'is_superuser': False,
        'is_staff': False
    })


@pytest.fixture
@pytest.mark.django_db
def user2():
    yield autofixture.create_one('auth.User', {
        'username': USER_USERNAME_2,
        'password': USER_PASSWORD_2,
        'is_superuser': False,
        'is_staff': False
    })


# EventUsers
@pytest.fixture
@pytest.mark.django_db
def event_user1(user1, event1):
    yield autofixture.create_one(
        'manager.EventUser', {'user': user1, 'event': event1}, generate_fk=True
    )


@pytest.fixture
@pytest.mark.django_db
def event_user2(user2, event2):
    yield autofixture.create_one(
        'manager.EventUser', {'user': user2, 'event': event2}, generate_fk=True
    )


# Attendee without User
@pytest.fixture
@pytest.mark.django_db
def attendee_without_user1(event1):
    yield autofixture.create_one('manager.Attendee', {'event_user': None, 'event': event1})


@pytest.fixture
@pytest.mark.django_db
def attendee_without_user2(event2):
    yield autofixture.create_one('manager.Attendee', {'event_user': None, 'event': event2})


# Attendee From Event User
@pytest.fixture
@pytest.mark.django_db
def attendee_from_event_user1(event_user1, event1):
    yield autofixture.create_one(
        'manager.Attendee', {
            'event_user': event_user1,
            'event': event1,
            'email_token': generate_ticket_code()
        }
    )


@pytest.fixture
@pytest.mark.django_db
def attendee_from_event_user2(event_user2, event2):
    yield autofixture.create_one(
        'manager.Attendee', {
            'event_user': event_user2,
            'event': event2,
            'email_token': generate_ticket_code()
        }
    )


# Organizers
@pytest.fixture
@pytest.mark.django_db
def organizer1(event_user1):
    yield autofixture.create_one('manager.Organizer', {'event_user': event_user1})


@pytest.fixture
@pytest.mark.django_db
def organizer2(event_user2):
    yield autofixture.create_one('manager.Organizer', {'event_user': event_user2})


# Collaborators
@pytest.fixture
@pytest.mark.django_db
def collaborator1(event_user1):
    yield autofixture.create_one('manager.Collaborator', {'event_user': event_user1})


@pytest.fixture
@pytest.mark.django_db
def collaborator2(event_user2):
    yield autofixture.create_one('manager.Collaborator', {'event_user': event_user2})


# Installer
@pytest.fixture
@pytest.mark.django_db
def installer1(event_user1):
    yield autofixture.create_one('manager.Installer', {'event_user': event_user1})


@pytest.fixture
@pytest.mark.django_db
def installer2(event_user2):
    yield autofixture.create_one('manager.Installer', {'event_user': event_user2})


# Reviewer
@pytest.fixture
@pytest.mark.django_db
def reviewer1(event_user1):
    yield autofixture.create_one('manager.Reviewer', {'event_user': event_user1})


@pytest.fixture
@pytest.mark.django_db
def reviewer2(event_user2):
    yield autofixture.create_one('manager.Reviewer', {'event_user': event_user2})


# Activity
@pytest.fixture
@pytest.mark.django_db
def activity1(event1):
    yield autofixture.create_one('manager.Activity', {'event': event1}, generate_fk=True)


@pytest.fixture
@pytest.mark.django_db
def activity2(event2):
    yield autofixture.create_one('manager.Activity', {'event': event2}, generate_fk=True)


# Room
@pytest.fixture
@pytest.mark.django_db
def room1(event1):
    yield autofixture.create_one('manager.Room', {'event': event1})


@pytest.fixture
@pytest.mark.django_db
def room2(event2):
    yield autofixture.create_one('manager.Room', {'event': event2})


# Installation
@pytest.fixture
@pytest.mark.django_db
def installation1(attendee_from_event_user1, installer1):
    yield autofixture.create_one(
        'manager.Installation',
        {'attendee': attendee_from_event_user1, 'installer': installer1.event_user}
    )


@pytest.fixture
@pytest.mark.django_db
def installation2(attendee_from_event_user2, installer2):
    yield autofixture.create_one(
        'manager.Installation',
        {'attendee': attendee_from_event_user2, 'installer': installer2.event_user}
    )


# EventDate
@pytest.mark.django_db
def get_event_date(datestring):
    date = datetime.strptime(datestring, "%d/%m/%Y")
    return autofixture.create_one('manager.EventDate', {'date': date.date()})


@pytest.fixture
@pytest.mark.django_db
def event_date_24_01_2019():
    yield get_event_date('24/01/2019')


@pytest.fixture
@pytest.mark.django_db
def event_date_25_01_2019():
    yield get_event_date('25/01/2019')


@pytest.fixture
@pytest.mark.django_db
def event_date_26_01_2019():
    yield get_event_date('26/01/2019')


@pytest.fixture
@pytest.mark.django_db
def event_date_27_01_2019():
    yield get_event_date('27/01/2019')


@pytest.fixture
@pytest.mark.django_db
def software1():
    yield autofixture.create_one('manager.Software', {'name': 'software1', 'type': 'OS'})


@pytest.fixture
@pytest.mark.django_db
def software2():
    yield autofixture.create_one('manager.Software', {'name': 'software2', 'type': 'OS'})


@pytest.fixture
@pytest.mark.django_db
def softwares():
    yield autofixture.create('manager.Software', 10)


# Groups
@pytest.fixture
@pytest.mark.django_db
def event_data1(
        event_tag_1, event1, user1,
        event_user1, attendee_without_user1,
        attendee_from_event_user1, organizer1,
        collaborator1, installer1, reviewer1,
        activity1, room1, installation1):
    yield {
        'event': event1,
        'event_tag': event_tag_1,
        'user': user1,
        'event_user': event_user1,
        'attendee_without_user': attendee_without_user1,
        'attendee_from_event_user': attendee_from_event_user1,
        'organizer': organizer1,
        'collaborator': collaborator1,
        'installer': installer1,
        'installation': installation1,
        'reviewer': reviewer1,
        'activity': activity1,
        'room': room1
    }


@pytest.fixture
@pytest.mark.django_db
def event_data2(
        event_tag_2, event2, user2,
        event_user2, attendee_without_user2,
        attendee_from_event_user2, organizer2,
        collaborator2, installer2, reviewer2,
        activity2, room2, installation2):
    yield {
        'event': event2,
        'event_tag': event_tag_2,
        'user': user2,
        'event_user': event_user2,
        'attendee_without_user': attendee_without_user2,
        'attendee_from_event_user': attendee_from_event_user2,
        'organizer': organizer2,
        'collaborator': collaborator2,
        'installer': installer2,
        'installation': installation2,
        'reviewer': reviewer2,
        'activity': activity2,
        'room': room2
    }


# Client fixtures
@pytest.fixture
def api_client():
    yield APIClient()


@pytest.fixture
def api_request_factory():
    yield APIRequestFactory()


@pytest.fixture
def web_client():
    yield Client()