mirror of https://github.com/eyhc1/rendercv.git
create tests for data_model's EducationEntry class
This commit is contained in:
parent
b1f2777b2b
commit
72048b6d33
|
@ -537,17 +537,13 @@ class Event(BaseModel):
|
||||||
date_and_location_strings.append(self.location)
|
date_and_location_strings.append(self.location)
|
||||||
|
|
||||||
if self.date is not None:
|
if self.date is not None:
|
||||||
# Then it means start_date and end_date are not provided.
|
if isinstance(self.date, str):
|
||||||
try:
|
|
||||||
# If this runs, it means the date is an ISO format string, and it can be
|
|
||||||
# parsed
|
|
||||||
date = format_date(Date.fromisoformat(self.date))
|
|
||||||
date_and_location_strings.append(date)
|
|
||||||
except:
|
|
||||||
date_and_location_strings.append(self.date)
|
date_and_location_strings.append(self.date)
|
||||||
|
elif isinstance(self.date, Date):
|
||||||
|
date_and_location_strings.append(format_date(self.date))
|
||||||
else:
|
else:
|
||||||
# Then it means start_date and end_date are provided.
|
raise RuntimeError("Date is neither a string nor a Date object!")
|
||||||
|
elif self.start_date is not None and self.end_date is not None:
|
||||||
start_date = format_date(self.start_date)
|
start_date = format_date(self.start_date)
|
||||||
|
|
||||||
if self.end_date == "present":
|
if self.end_date == "present":
|
||||||
|
@ -694,7 +690,7 @@ class EducationEntry(Event):
|
||||||
description="The type of the degree.",
|
description="The type of the degree.",
|
||||||
examples=["BS", "BA", "PhD", "MS"],
|
examples=["BS", "BA", "PhD", "MS"],
|
||||||
)
|
)
|
||||||
gpa: Optional[str] = Field(
|
gpa: Optional[str | float] = Field(
|
||||||
default=None,
|
default=None,
|
||||||
title="GPA",
|
title="GPA",
|
||||||
description="The GPA of the degree.",
|
description="The GPA of the degree.",
|
||||||
|
|
|
@ -87,6 +87,10 @@ class TestRendercv(unittest.TestCase):
|
||||||
with self.subTest(msg="valid dates"):
|
with self.subTest(msg="valid dates"):
|
||||||
data_model.Event(**input)
|
data_model.Event(**input)
|
||||||
|
|
||||||
|
# Inputs without dates:
|
||||||
|
with self.subTest(msg="no dates"):
|
||||||
|
data_model.Event(**{})
|
||||||
|
|
||||||
# Inputs with invalid dates:
|
# Inputs with invalid dates:
|
||||||
input = {
|
input = {
|
||||||
"start_date": Date(year=2020, month=1, day=1),
|
"start_date": Date(year=2020, month=1, day=1),
|
||||||
|
@ -162,7 +166,7 @@ class TestRendercv(unittest.TestCase):
|
||||||
]
|
]
|
||||||
event = data_model.Event(**input)
|
event = data_model.Event(**input)
|
||||||
result = event.date_and_location_strings_with_timespan
|
result = event.date_and_location_strings_with_timespan
|
||||||
with self.subTest(expected=expected):
|
with self.subTest(msg="start_date, end_date, and location are provided"):
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
|
@ -175,7 +179,42 @@ class TestRendercv(unittest.TestCase):
|
||||||
]
|
]
|
||||||
event = data_model.Event(**input)
|
event = data_model.Event(**input)
|
||||||
result = event.date_and_location_strings_with_timespan
|
result = event.date_and_location_strings_with_timespan
|
||||||
with self.subTest(expected=expected):
|
with self.subTest(msg="date and location are provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"date": Date(year=2020, month=1, day=1),
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"Jan. 2020",
|
||||||
|
]
|
||||||
|
event = data_model.Event(**input)
|
||||||
|
result = event.date_and_location_strings_with_timespan
|
||||||
|
with self.subTest(msg="date is provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"start_date": Date(year=2020, month=1, day=1),
|
||||||
|
"end_date": Date(year=2021, month=1, day=16),
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"Jan. 2020 to Jan. 2021",
|
||||||
|
"1 year 1 month",
|
||||||
|
]
|
||||||
|
event = data_model.Event(**input)
|
||||||
|
result = event.date_and_location_strings_with_timespan
|
||||||
|
with self.subTest(msg="start_date and end_date are provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"location": "My Location",
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"My Location",
|
||||||
|
]
|
||||||
|
event = data_model.Event(**input)
|
||||||
|
result = event.date_and_location_strings_with_timespan
|
||||||
|
with self.subTest(msg="location is provided"):
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_data_event_date_and_location_strings_without_timespan(self):
|
def test_data_event_date_and_location_strings_without_timespan(self):
|
||||||
|
@ -219,7 +258,7 @@ class TestRendercv(unittest.TestCase):
|
||||||
]
|
]
|
||||||
event = data_model.Event(**input)
|
event = data_model.Event(**input)
|
||||||
result = event.highlight_strings
|
result = event.highlight_strings
|
||||||
with self.subTest(expected=expected):
|
with self.subTest(msg="highlights are provided"):
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
input = {}
|
input = {}
|
||||||
|
@ -299,6 +338,107 @@ class TestRendercv(unittest.TestCase):
|
||||||
with self.subTest(msg="date is provided"):
|
with self.subTest(msg="date is provided"):
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
def test_data_education_highlight_strings(self):
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": 3.5,
|
||||||
|
"highlights": [
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"GPA: 3.5",
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
]
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(msg="gpa and highlights are provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": None,
|
||||||
|
"highlights": [
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
]
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(msg="gpa is not provided, but highlights are"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": 3.5,
|
||||||
|
"highlights": [],
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"GPA: 3.5",
|
||||||
|
]
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(msg="gpa is provided, but highlights are not"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": None,
|
||||||
|
"highlights": [],
|
||||||
|
}
|
||||||
|
expected = []
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(msg="neither gpa nor highlights are provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": 3.5,
|
||||||
|
"transcript_url": "https://www.example.com/",
|
||||||
|
"highlights": None,
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"GPA: 3.5 ([Transcript](https://www.example.com/))",
|
||||||
|
]
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(
|
||||||
|
msg="gpa and transcript_url are provided, but highlights are not"
|
||||||
|
):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"institution": "My Institution",
|
||||||
|
"area": "My Area",
|
||||||
|
"gpa": "3.5",
|
||||||
|
"transcript_url": "https://www.example.com/",
|
||||||
|
"highlights": [
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
expected = [
|
||||||
|
"GPA: 3.5 ([Transcript](https://www.example.com/))",
|
||||||
|
"My Highlight 1",
|
||||||
|
"My Highlight 2",
|
||||||
|
]
|
||||||
|
education = data_model.EducationEntry(**input)
|
||||||
|
result = education.highlight_strings
|
||||||
|
with self.subTest(msg="gpa, transcript_url, and highlights are provided"):
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue