Newer
Older
from fastapi.testclient import TestClient
from restAPIServer import app
client = TestClient(app)
def test_convert_to_utf8():
response = client.post("/convert/utf8/", json={"unit_string": r"\metre"})
assert response.status_code == 200
assert response.json() == ["m"]
def test_convert_to_latex():
response = client.post("/convert/latex/", json={"unit_string": r"\metre\tothe{2}"})
assert response.status_code == 200
assert response.json() == ['$$\\mathrm{m}^{2}$$'] # Adjust based on actual response structure
def test_compare_units_equal():
response = client.post("/compare/units/", json={"unit_string1": r"\watt", "unit_string2": r"\joule\per\second"})
assert response.status_code == 200
assert response.json() == {'scale_factor': 1.0, 'base_unit': '\\kilogram\\metre\\tothe{2}\\second\\tothe{-3}'} # Example expected response
def test_compare_units_not_equal():
response = client.post("/compare/units/", json={"unit_string1": r"\metre", "unit_string2": r"\second"})
assert response.status_code == 200
assert "error" in response.json() # Checking for error message
def test_compare_units_not_equal_but_equal_WithCompleate():
response = client.post("/compare/units/", json={"unit_string1": r"\one", "unit_string2": r"\percent", })
assert response.status_code == 200
assert "error" in response.json() # Checking for error message
response = client.post("/compare/units/", json={"unit_string1": r"\one", "unit_string2": r"\percent", "complete":True})
assert response.status_code == 200
assert response.json() == {'scale_factor': 0.01, 'base_unit': '\\one'}
def test_invalid_unit():
response = client.post("/convert/utf8/", json={"unit_string": "not_a_unit"})
assert response.status_code == 500 # Assuming your API returns 500 for invalid units
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def test_parse_xml():
xml_content = """<root>
<si:unit>\metre</si:unit>
<si:unitXMLList>\metre \second \kilogram</si:unitXMLList>
<si:unit>not_a_unit</si:unit>
<si:unit>\seconds</si:unit>
</root>
"""
response = client.post("/validateUnitsInXML/", json={"xml": xml_content})
assert response.status_code == 200
result = response.json()
assert "valid_units" in result
assert "invalid_units" in result
valid_units = result["valid_units"]
invalid_units = result["invalid_units"]
# Check valid units
assert "2" in valid_units # Line number for <si:unit>\metre</si:unit>
assert valid_units["2"] == "\\metre"
assert "3:0" in valid_units # Line number and index for the first entry in <si:unitXMLList>
assert valid_units["3:0"] == "\\metre"
assert "3:1" in valid_units # Line number and index for the second entry in <si:unitXMLList>
assert valid_units["3:1"] == "\\second"
assert "3:2" in valid_units # Line number and index for the third entry in <si:unitXMLList>
assert valid_units["3:2"] == "\\kilogram"
# Check invalid units
assert "4" in invalid_units # Line number for <si:unit>not_a_unit</si:unit>
assert invalid_units["4"] == "not_a_unit"
# Check invalid units
assert "5" in invalid_units # Line number for <si:unit>not_a_unit</si:unit>
assert invalid_units["5"] == "\seconds"