added s examples.
This commit is contained in:
1 parent
9de891b92c
commit
eace153f2d
7 files changed
+102
No files matched your search
@@ -0,0 +1 @@
|
||||
.idea
|
||||
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,22 @@
|
||||
# file_manager_srp.py
|
||||
import zlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class FileManager:
|
||||
def __init__(self, filename: str | Path):
|
||||
self.path = Path(filename)
|
||||
|
||||
def read(self) -> str:
|
||||
return self.path.read_text("utf-8")
|
||||
|
||||
def write(self, data: str) -> None:
|
||||
self.path.write_text(data, "utf-8")
|
||||
|
||||
def compress(self) -> None:
|
||||
compressed_data = zlib.compress(self.path.read_bytes())
|
||||
self.path.write_bytes(compressed_data)
|
||||
|
||||
def decompress(self) -> None:
|
||||
decompressed_data = zlib.decompress(self.path.read_bytes())
|
||||
self.path.write_bytes(decompressed_data)
|
||||
@@ -0,0 +1,24 @@
|
||||
from pathlib import Path
|
||||
|
||||
from _pytest._py.path import LocalPath
|
||||
|
||||
from solid.single_responsability.file_manager import FileManager
|
||||
|
||||
|
||||
class TestFileManagerTest:
|
||||
|
||||
def test_happy_path(self, tmpdir: LocalPath):
|
||||
file_ = Path(tmpdir) / "something"
|
||||
service = FileManager(file_)
|
||||
service.write("le petit canard")
|
||||
assert file_.is_file()
|
||||
assert service.read() == "le petit canard"
|
||||
|
||||
def test_compressed_happy_path(self, tmpdir: LocalPath):
|
||||
file_ = Path(tmpdir) / "something"
|
||||
service = FileManager(file_)
|
||||
service.write("le petit canard")
|
||||
service.compress()
|
||||
assert file_.read_bytes() != "le petit canard".encode('utf-8')
|
||||
service.decompress()
|
||||
assert service.read() == "le petit canard"
|
||||
@@ -0,0 +1,37 @@
|
||||
class User:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.isAdmin = False
|
||||
|
||||
|
||||
class User2:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.is_admin = False
|
||||
|
||||
|
||||
class Admin(User2):
|
||||
def __init__(self, name):
|
||||
super().__init__(name)
|
||||
self.is_admin = True
|
||||
|
||||
|
||||
users = [
|
||||
User2('walid'),
|
||||
User2('haikel'),
|
||||
User2('manel'),
|
||||
Admin('tristan'),
|
||||
Admin('didier'),
|
||||
User('jonathan'),
|
||||
User('samuel'),
|
||||
]
|
||||
|
||||
|
||||
def get_user(user_name: str, is_admin: bool = False, consider_old_users: bool=False) -> User | User2 | Admin | None:
|
||||
for user in users:
|
||||
if user_name == user.name:
|
||||
if isinstance(user, User) and not consider_old_users:
|
||||
continue
|
||||
if isinstance(user, User2) and user.is_admin and not is_admin:
|
||||
continue
|
||||
return user
|
||||
@@ -0,0 +1,18 @@
|
||||
from solid.single_responsability.simple_function import get_user
|
||||
|
||||
|
||||
class TestGetUser:
|
||||
def test_happy_path(self):
|
||||
assert get_user("marie-eve") is None
|
||||
assert get_user("walid").name == 'walid'
|
||||
|
||||
def test_admin(self):
|
||||
assert get_user("tristan") is None
|
||||
assert get_user("tristan", is_admin=True) is not None
|
||||
assert get_user("tristan", is_admin=True).name == "tristan"
|
||||
|
||||
def test_old_users(self):
|
||||
assert get_user("jonathan") is None
|
||||
assert get_user("jonathan", is_admin=True) is None
|
||||
assert get_user("jonathan", consider_old_users=True) is not None
|
||||
assert get_user("jonathan", consider_old_users=True).name == "jonathan"
|
||||
Reference in new issue
Block a user