Passed
Pull Request — master (#110)
by Michel
01:04
created

tests.conftest.session()   A

Complexity

Conditions 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 10
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
from __future__ import print_function
2
3
import itertools
4
from datetime import datetime, timedelta
5
6
import faker
7
import pytest
8
from sqlalchemy import create_engine
9
from sqlalchemy.orm import sessionmaker
10
11
from .models import Address, Base, User
12
13
14
def populate(session):
15
    """Create 3 adresses and 50 users."""
16
    users = []
17
    f = faker.Faker(seed=1)
18
    addresses = [Address(description=d) for d in ['Street', 'Avenue', 'Road']]
19
    session.add_all(addresses)
20
21
    for i, addr in zip(range(0, 50), itertools.cycle(addresses)):
22
        user = User(
23
            name=f.name(),
24
            address=addr,
25
            birthday=datetime(1970, 1, 2) + timedelta(days=10 * i))
26
        users.append(user)
27
28
    session.add_all(users)
29
    session.commit()
30
31
32
@pytest.fixture(scope="session")
33
def engine():
34
    print("TestCase: Using sqlite database")
35
    return create_engine('sqlite:///', echo=False)
36
37
38
@pytest.fixture(scope="session")
39
def session(engine):
40
    sessionmaker_ = sessionmaker(bind=engine)
41
    session = sessionmaker_()
42
    Base.metadata.create_all(engine)
43
    populate(session)
44
45
    yield session
46
47
    session.close()
48