Skip to content
Prev Previous commit
Next Next commit
fix: TT-401 solution of comments, change of config
  • Loading branch information
ararcos committed Nov 17, 2021
commit e3f53006adc3b0e02074f74fe85947874006c647
1 change: 0 additions & 1 deletion V2/tests/api/azure/time_entry_azure_endpoints_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ def test__time_entry_azure_endpoint__creates_an_time_entry__when_time_entry_has_
inserted_activity = insert_activity(activity_factory(), db)
time_entry_body = time_entry_factory(activity_id=inserted_activity.id, technologies="[jira,sql]").__dict__

azure_time_entries._create_time_entry._DATABASE = db
body = json.dumps(time_entry_body).encode("utf-8")
req = func.HttpRequest(
method='POST',
Expand Down
3 changes: 2 additions & 1 deletion V2/tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ def _make_activity(

@pytest.fixture(name='create_fake_database')
def _create_fake_database() -> DB:
db_fake = DB('sqlite:///:memory:')
db_fake = DB()
db_fake.get_session().execute("pragma foreign_keys=ON")
return db_fake


Expand Down
29 changes: 15 additions & 14 deletions V2/tests/integration/daos/time_entries_dao_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,42 @@


@pytest.fixture(name='create_fake_dao')
def _create_fake_dao() -> domain.TimeEntriesDao:
db_fake = DB('sqlite:///:memory:')
dao = infrastructure.TimeEntriesSQLDao(db_fake)
return dao
def _fake_dao() -> domain.TimeEntriesDao:
def _create_fake_dao(db_fake: DB) -> domain.TimeEntriesDao:
dao = infrastructure.TimeEntriesSQLDao(db_fake)
return dao
return _create_fake_dao


@pytest.fixture(name='clean_database', autouse=True)
def _clean_database():
yield
db_fake = DB('sqlite:///:memory:')
db_fake = DB()
dao = infrastructure.TimeEntriesSQLDao(db_fake)
query = dao.time_entry.delete()
dao.db.get_session().execute(query)


def test__time_entry__returns_a_time_entry_dto__when_saves_correctly_with_sql_database(
time_entry_factory, create_fake_dao, insert_activity, activity_factory
create_fake_database, time_entry_factory, create_fake_dao, insert_activity, activity_factory
):
dao = create_fake_dao
dao = create_fake_dao(create_fake_database)
inserted_activity = insert_activity(activity_factory(), dao.db)

existent_time_entry = time_entry_factory(activity_id=inserted_activity.id, technologies="[jira,sql]")
time_entry_to_insert = time_entry_factory(activity_id=inserted_activity.id, technologies="[jira,sql]")

inserted_time_entry = dao.create(existent_time_entry)
inserted_time_entry = dao.create(time_entry_to_insert)

assert isinstance(inserted_time_entry, domain.TimeEntry)
assert inserted_time_entry == existent_time_entry
assert inserted_time_entry == time_entry_to_insert


def test__time_entry__returns_None__when_not_saves_correctly(
time_entry_factory, create_fake_dao,
time_entry_factory, create_fake_dao, create_fake_database
):
dao = create_fake_dao
existent_time_entry = time_entry_factory(activity_id=1203, technologies="[jira,sql]")
dao = create_fake_dao(create_fake_database)
time_entry_to_insert = time_entry_factory(activity_id=1203, technologies="[jira,sql]")

inserted_time_entry = dao.create(existent_time_entry)
inserted_time_entry = dao.create(time_entry_to_insert)

assert inserted_time_entry is None
13 changes: 6 additions & 7 deletions V2/time_tracker/_infrastructure/_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@

class Config(typing.NamedTuple):
DB_CONNECTION_STRING: str
DB_USER: str
DB_PASS: str
DB_NAME: str


def load_config():
if os.environ.get("ENVIRONMENT") == "development":
connection: str = os.environ.get("DB_CONNECTION")
else:
connection: str = os.environ.get("TEST_DB_CONNECTION")

return Config(
CONNECTION_STRING if os.environ.get("DB_CONNECTION_STRING") is None else os.environ.get("DB_CONNECTION_STRING"),
os.environ.get("DB_USER"),
os.environ.get("DB_PASS"),
os.environ.get("DB_NAME")
CONNECTION_STRING if connection is None else connection
)
5 changes: 0 additions & 5 deletions V2/time_tracker/_infrastructure/_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

from . import _config

_TEST_DIALECT = "sqlite"


class DB():
config = _config.load_config()
Expand All @@ -16,10 +14,7 @@ def __init__(self, conn_string: str = conn_string):
self.engine = sqlalchemy.create_engine(conn_string)

def get_session(self):

self.metadata.create_all(self.engine)
if self.connection is None:
self.connection = self.engine.connect()
if self.engine.dialect.name == _TEST_DIALECT:
self.connection.execute("pragma foreign_keys=ON")
return self.connection
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@
from ... import _infrastructure
from time_tracker._infrastructure import DB

_DATABASE = DB()


def create_time_entry(req: func.HttpRequest) -> func.HttpResponse:

time_entry_dao = _infrastructure.TimeEntriesSQLDao(_DATABASE)
database = DB()
time_entry_dao = _infrastructure.TimeEntriesSQLDao(database)
time_entry_service = _domain.TimeEntryService(time_entry_dao)
use_case = _domain._use_cases.CreateTimeEntryUseCase(time_entry_service)

Expand Down