Add test save
This commit is contained in:
parent
ba5778e21d
commit
677704cdf9
10
README.md
10
README.md
@ -208,7 +208,7 @@ fiable_db.find_one(id=1) # Default table
|
||||
Save the database to a file.
|
||||
|
||||
```python
|
||||
fiable_db.save(filename, data)
|
||||
fiable_db.save()
|
||||
```
|
||||
|
||||
### Other help functions
|
||||
@ -229,6 +229,14 @@ Load a file into the database.
|
||||
fiable_db.load(filename)
|
||||
```
|
||||
|
||||
### Save file
|
||||
|
||||
Save a file into the database.
|
||||
|
||||
```python
|
||||
fiable_db.save(filename)
|
||||
```
|
||||
|
||||
## Implementations in other languages
|
||||
|
||||
- [Clojure](https://github.com/Toni-zgz/db_inmutable).
|
||||
|
17
fiable_db.py
17
fiable_db.py
@ -17,8 +17,7 @@ class TypeData(TypedDict):
|
||||
|
||||
Type_Data_List = Tuple[TypeData]
|
||||
Type_Add_Data = Union[Dict, Sequence[Dict]]
|
||||
Type_Add_Return = Union[Tuple[int, int, Dict],
|
||||
Tuple[Tuple[int, int, Dict]], None]
|
||||
Type_Add_Return = Union[Tuple[int, int, Dict], Tuple[Tuple[int, int, Dict]], None]
|
||||
Type_Update_Return = Union[Tuple[Tuple[int, int, Dict]]]
|
||||
Type_Delete_Return = Union[Tuple[Tuple[int, int, Dict]]]
|
||||
Type_Find_One_Return = TypeData
|
||||
@ -26,6 +25,7 @@ Type_Find_All_Return = Tuple[Type_Find_One_Return]
|
||||
|
||||
# Functions
|
||||
|
||||
|
||||
def get_next_id(table: str = "default") -> int:
|
||||
"""Get the next id for a table"""
|
||||
global database
|
||||
@ -39,18 +39,20 @@ def start(file_name: str = "") -> str:
|
||||
Returns:
|
||||
str: The file used
|
||||
"""
|
||||
global FILE
|
||||
global database
|
||||
my_file_name = file_name if file_name else FILE
|
||||
my_file_name = file_name if file_name != "" else FILE
|
||||
if path.exists(my_file_name):
|
||||
# Load the database
|
||||
load(my_file_name)
|
||||
else:
|
||||
# Create the database
|
||||
save(my_file_name, database)
|
||||
database = []
|
||||
save(my_file_name)
|
||||
return my_file_name
|
||||
|
||||
|
||||
def save(file_name: str = "", data: TypeData = {}) -> bool:
|
||||
def save(file_name: str = "") -> bool:
|
||||
"""Save the database
|
||||
Args:
|
||||
file_name (str, optional): The file to save to. Defaults to "".
|
||||
@ -58,10 +60,11 @@ def save(file_name: str = "", data: TypeData = {}) -> bool:
|
||||
Returns:
|
||||
bool: True if the data was saved, False otherwise
|
||||
"""
|
||||
global FILE
|
||||
global database
|
||||
my_file_name = file_name if file_name else FILE
|
||||
my_file_name = file_name if file_name != "" else FILE
|
||||
with open(my_file_name, "w") as f:
|
||||
database = json.dump({}, f)
|
||||
json.dump(database, f)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -11,7 +11,6 @@ def test_add_two():
|
||||
"""Add two items to the database."""
|
||||
add({"name": "John", "age": 12})
|
||||
add({"name": "Jane", "age": 34})
|
||||
print(get_database())
|
||||
assert get_database() == [
|
||||
{"id": 1, "rev": 1, "data": {"name": "John", "age": 42}},
|
||||
{"id": 2, "rev": 1, "data": {"name": "John", "age": 12}},
|
||||
|
47
test/test_save.py
Normal file
47
test/test_save.py
Normal file
@ -0,0 +1,47 @@
|
||||
import os
|
||||
from fiable_db import start, add, save, get_database, load
|
||||
|
||||
filename = "fiabledb.json"
|
||||
|
||||
def delete_file():
|
||||
"""Delete the database file."""
|
||||
if os.path.exists(filename):
|
||||
os.remove(filename)
|
||||
|
||||
def test_save_empty():
|
||||
"""Test that save() works when the database is empty."""
|
||||
delete_file()
|
||||
start()
|
||||
save()
|
||||
global database
|
||||
database = []
|
||||
load()
|
||||
assert get_database() == []
|
||||
|
||||
|
||||
def test_save_one():
|
||||
"""Test that save() works when the database has one entry."""
|
||||
delete_file()
|
||||
start()
|
||||
add({"name": "John", "age": 30})
|
||||
save()
|
||||
global database
|
||||
database = []
|
||||
load()
|
||||
assert get_database() == [{"id": 1, "rev": 1, "data": {"name": "John", "age": 30}}]
|
||||
|
||||
|
||||
def test_save_two():
|
||||
"""Test that save() works when the database has two entries."""
|
||||
delete_file()
|
||||
start()
|
||||
add({"name": "John", "age": 30})
|
||||
add({"name": "Jane", "age": 28})
|
||||
save()
|
||||
global database
|
||||
database = []
|
||||
load()
|
||||
assert get_database() == [
|
||||
{"id": 1, "rev": 1, "data": {"name": "John", "age": 30}},
|
||||
{"id": 2, "rev": 1, "data": {"name": "Jane", "age": 28}},
|
||||
]
|
Loading…
Reference in New Issue
Block a user