|
| 1 | +from faker import Faker |
| 2 | + |
| 3 | +fake = Faker() |
| 4 | + |
| 5 | +existing_elements_registry = [] |
| 6 | +last_deleted_element = None |
| 7 | + |
| 8 | + |
| 9 | +def test_create(sql_repository): |
| 10 | + global sample_element |
| 11 | + sample_element = dict(name=fake.name(), |
| 12 | + email=fake.safe_email(), |
| 13 | + age=fake.pyint(min_value=10, max_value=80)) |
| 14 | + |
| 15 | + result = sql_repository.create(sample_element) |
| 16 | + |
| 17 | + assert result is not None |
| 18 | + assert result.id is not None |
| 19 | + assert result.created_at is not None |
| 20 | + assert result.created_by is not None |
| 21 | + assert result.updated_at is None |
| 22 | + assert result.updated_by is None |
| 23 | + |
| 24 | + existing_elements_registry.append(result) |
| 25 | + |
| 26 | + |
| 27 | +def test_find(sql_repository): |
| 28 | + existing_element = existing_elements_registry[0] |
| 29 | + |
| 30 | + found_element = sql_repository.find(existing_element.id) |
| 31 | + |
| 32 | + assert found_element is not None |
| 33 | + assert found_element.id is not None |
| 34 | + |
| 35 | + |
| 36 | +def test_update(sql_repository): |
| 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 | + assert updated_element.updated_at is not None |
| 47 | + assert updated_element.updated_at > updated_element.created_at |
| 48 | + assert updated_element.updated_by is not None |
| 49 | + |
| 50 | + |
| 51 | +def test_find_all(sql_repository): |
| 52 | + existing_elements = sql_repository.find_all() |
| 53 | + |
| 54 | + assert all(e in existing_elements_registry for e in existing_elements) |
| 55 | + |
| 56 | + |
| 57 | +def test_find_all_that_contains_property_with_string_case_insensitive(sql_repository): |
| 58 | + fake_name = fake.name() |
| 59 | + new_element = dict(name="%s Snow" % fake_name, |
| 60 | + email=fake.safe_email(), |
| 61 | + age=fake.pyint(min_value=10, max_value=80)) |
| 62 | + sql_repository.create(new_element) |
| 63 | + existing_elements_registry.append(new_element) |
| 64 | + |
| 65 | + search_snow_result = sql_repository.find_all_contain_str('name', 'Snow') |
| 66 | + assert len(search_snow_result) == 2 |
| 67 | + |
| 68 | + search_jon_result = sql_repository.find_all_contain_str('name', 'Jon') |
| 69 | + assert len(search_jon_result) == 1 |
| 70 | + |
| 71 | + search_ram_result = sql_repository.find_all_contain_str('name', fake_name) |
| 72 | + assert search_ram_result[0].name == new_element['name'] |
| 73 | + |
| 74 | + |
| 75 | +def test_delete_existing_element(sql_repository): |
| 76 | + existing_element = existing_elements_registry[0] |
| 77 | + |
| 78 | + result = sql_repository.remove(existing_element.id) |
| 79 | + |
| 80 | + assert result is None |
| 81 | + |
| 82 | + global last_deleted_model |
| 83 | + last_deleted_model = existing_elements_registry.pop() |
0 commit comments