Started tests for skeleton module
This commit is contained in:
parent
62252d51a4
commit
ad31d9a979
5 changed files with 116 additions and 82 deletions
69
tests/test_dict_merge.py
Normal file
69
tests/test_dict_merge.py
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
"""Tests for the skeleton module."""
|
||||
from app.skeleton import merge
|
||||
|
||||
|
||||
def test_merge_empty():
|
||||
"""Test correct response for an empty merge."""
|
||||
assert merge() == {}
|
||||
|
||||
|
||||
def test_merge_single():
|
||||
"""Test merge command with a single input."""
|
||||
assert merge({}) == {}
|
||||
|
||||
dic = {"test": "value", "test2": "value2"}
|
||||
|
||||
assert merge(dic) == dic
|
||||
|
||||
|
||||
def test_merge_double_no_overlap():
|
||||
"""Test merge command with two non-overlapping inputs."""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d_res = {"test": "value", "test2": "value2", "test3": "value3"}
|
||||
|
||||
assert merge(d1, d2) == d_res
|
||||
|
||||
|
||||
def test_merge_double_overlap():
|
||||
"""Test merge command with two overlapping inputs."""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test2": "value3"}
|
||||
d_res = {"test": "value", "test2": "value3"}
|
||||
|
||||
assert merge(d1, d2) == d_res
|
||||
|
||||
|
||||
def test_merge_triple_no_overlap():
|
||||
"""Test merge command with three non-overlapping inputs.
|
||||
|
||||
This test tells us that the recursion works.
|
||||
"""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d3 = {"test4": "value4"}
|
||||
d_res = {
|
||||
"test": "value",
|
||||
"test2": "value2",
|
||||
"test3": "value3",
|
||||
"test4": "value4",
|
||||
}
|
||||
|
||||
assert merge(d1, d2, d3) == d_res
|
||||
|
||||
|
||||
def test_merge_triple_overlap():
|
||||
"""Test merge command with three overlapping inputs.
|
||||
|
||||
This test tells us that the recursion works.
|
||||
"""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d3 = {"test2": "value4"}
|
||||
d_res = {
|
||||
"test": "value",
|
||||
"test2": "value4",
|
||||
"test3": "value3",
|
||||
}
|
||||
|
||||
assert merge(d1, d2, d3) == d_res
|
||||
|
|
@ -1,69 +1,35 @@
|
|||
"""Tests for the skeleton module."""
|
||||
from app.skeleton import merge
|
||||
"""Tests wether the skeleton merge works."""
|
||||
from app.skeleton import merge_with_skeleton, MissingKeyError, InvalidKeyError
|
||||
import pytest
|
||||
|
||||
|
||||
def test_merge_empty():
|
||||
"""Test correct response for an empty merge."""
|
||||
assert merge() == {}
|
||||
|
||||
|
||||
def test_merge_single():
|
||||
"""Test merge command with a single input."""
|
||||
assert merge({}) == {}
|
||||
|
||||
dic = {"test": "value", "test2": "value2"}
|
||||
|
||||
assert merge(dic) == dic
|
||||
|
||||
|
||||
def test_merge_double_no_overlap():
|
||||
"""Test merge command with two non-overlapping inputs."""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d_res = {"test": "value", "test2": "value2", "test3": "value3"}
|
||||
|
||||
assert merge(d1, d2) == d_res
|
||||
|
||||
|
||||
def test_merge_double_overlap():
|
||||
"""Test merge command with two overlapping inputs."""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test2": "value3"}
|
||||
d_res = {"test": "value", "test2": "value3"}
|
||||
|
||||
assert merge(d1, d2) == d_res
|
||||
|
||||
|
||||
def test_merge_triple_no_overlap():
|
||||
"""Test merge command with three non-overlapping inputs.
|
||||
|
||||
This test tells us that the recursion works.
|
||||
"""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d3 = {"test4": "value4"}
|
||||
d_res = {
|
||||
"test": "value",
|
||||
"test2": "value2",
|
||||
"test3": "value3",
|
||||
"test4": "value4",
|
||||
def test_single_invalid_key():
|
||||
"""Tests wether an InvalidKeyError is correctly thrown for a single key."""
|
||||
data = {
|
||||
"test": 1,
|
||||
"test2": "test"
|
||||
}
|
||||
skel = {
|
||||
"test": None,
|
||||
}
|
||||
|
||||
assert merge(d1, d2, d3) == d_res
|
||||
with pytest.raises(InvalidKeyError) as e_info:
|
||||
merge_with_skeleton(data, skel)
|
||||
|
||||
assert e_info.value.message == "Invalid key(s): test2"
|
||||
|
||||
|
||||
def test_merge_triple_overlap():
|
||||
"""Test merge command with three overlapping inputs.
|
||||
|
||||
This test tells us that the recursion works.
|
||||
"""
|
||||
d1 = {"test": "value", "test2": "value2"}
|
||||
d2 = {"test3": "value3"}
|
||||
d3 = {"test2": "value4"}
|
||||
d_res = {
|
||||
"test": "value",
|
||||
"test2": "value4",
|
||||
"test3": "value3",
|
||||
def test_single_missing_key():
|
||||
"""Tests wether a MissingKeyError is correctly thrown for a single key."""
|
||||
data = {
|
||||
"test": 1,
|
||||
}
|
||||
skel = {
|
||||
"test": None,
|
||||
"test2": None,
|
||||
}
|
||||
|
||||
assert merge(d1, d2, d3) == d_res
|
||||
with pytest.raises(MissingKeyError) as e_info:
|
||||
merge_with_skeleton(data, skel)
|
||||
|
||||
assert e_info.value.message == "Missing key(s): test2"
|
||||
|
|
|
|||
Reference in a new issue