|
1 | 1 | from faker import Faker |
2 | | -from flask import Flask |
3 | 2 |
|
4 | 3 | fake = Faker() |
5 | 4 |
|
| 5 | +existing_elements_registry = [] |
| 6 | +last_deleted_element = None |
6 | 7 |
|
7 | | -def test_create_entry(repository, app: Flask): |
| 8 | + |
| 9 | +def test_create(sql_repository): |
8 | 10 | """Should create a new Entry""" |
9 | | - assert repository is not None |
10 | 11 | from .resources import TestModel |
11 | | - sample_model = TestModel(name=fake.name(), |
12 | | - email=fake.safe_email(), |
13 | | - age = fake.pyint(min_value=10, max_value=80)) |
| 12 | + global sample_element |
| 13 | + sample_element = TestModel(name=fake.name(), |
| 14 | + email=fake.safe_email(), |
| 15 | + age=fake.pyint(min_value=10, max_value=80)) |
| 16 | + |
| 17 | + result = sql_repository.create(sample_element) |
| 18 | + |
| 19 | + assert result is not None |
| 20 | + assert result.id is not None |
| 21 | + |
| 22 | + existing_elements_registry.append(result) |
| 23 | + |
| 24 | + |
| 25 | +def test_find(sql_repository): |
| 26 | + """Should find created element""" |
| 27 | + existing_element = existing_elements_registry[0] |
| 28 | + |
| 29 | + found_element = sql_repository.find(existing_element.id) |
| 30 | + |
| 31 | + assert found_element is not None |
| 32 | + assert found_element.id is not None |
| 33 | + |
| 34 | + |
| 35 | +def test_update(sql_repository): |
| 36 | + """Updates an existing element""" |
| 37 | + existing_element = existing_elements_registry[0] |
| 38 | + |
| 39 | + updated_element = sql_repository.update(existing_element.id, |
| 40 | + dict(name="Jon Snow", age=34)) |
| 41 | + |
| 42 | + assert updated_element is not None |
| 43 | + assert updated_element.id == existing_element.id |
| 44 | + assert updated_element.name == "Jon Snow" |
| 45 | + assert updated_element.age == 34 |
| 46 | + |
| 47 | + |
| 48 | +def test_find_all(sql_repository): |
| 49 | + """Find all existing elements""" |
| 50 | + existing_elements = sql_repository.find_all() |
| 51 | + |
| 52 | + assert all(e in existing_elements_registry for e in existing_elements) |
| 53 | + |
| 54 | + |
| 55 | +def test_find_all_that_contains_property_with_string(sql_repository): |
| 56 | + """Find all elements that have a property that partially contains a string (case-insensitive)""" |
| 57 | + from .resources import TestModel |
| 58 | + new_element = TestModel(name='Ramsay Snow', |
| 59 | + email=fake.safe_email(), |
| 60 | + age=fake.pyint(min_value=10, max_value=80)) |
| 61 | + sql_repository.create(new_element) |
| 62 | + existing_elements_registry.append(new_element) |
| 63 | + |
| 64 | + search_snow_result = sql_repository.find_all_contain_str('name', 'Snow') |
| 65 | + assert len(search_snow_result) == 2 |
| 66 | + |
| 67 | + search_jon_result = sql_repository.find_all_contain_str('name', 'Jon') |
| 68 | + assert len(search_jon_result) == 1 |
| 69 | + |
| 70 | + search_ram_result = sql_repository.find_all_contain_str('name', 'RAM') |
| 71 | + assert search_ram_result[0] is new_element |
| 72 | + |
| 73 | + |
| 74 | +def test_delete_existing_element(sql_repository): |
| 75 | + """Should delete created element""" |
| 76 | + existing_element = existing_elements_registry[0] |
| 77 | + |
| 78 | + result = sql_repository.remove(existing_element.id) |
| 79 | + |
| 80 | + assert result is None |
14 | 81 |
|
15 | | - repository.create(sample_model) |
| 82 | + global last_deleted_model |
| 83 | + last_deleted_model = existing_elements_registry.pop() |
0 commit comments