72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
import unittest
|
|
|
|
from htmlnode import HtmlNode
|
|
|
|
|
|
class TestHtmlNode(unittest.TestCase):
|
|
def test_it_should_not_require_any_properties(self):
|
|
node = HtmlNode()
|
|
|
|
self.assertIsNone(node.tag)
|
|
self.assertIsNone(node.value)
|
|
self.assertIsNone(node.children)
|
|
self.assertIsNone(node.props)
|
|
|
|
def test_it_should_have_properties(self):
|
|
tag = "tag"
|
|
value = "value"
|
|
children = [HtmlNode()]
|
|
props = {}
|
|
|
|
node = HtmlNode(tag, value, children, props)
|
|
|
|
self.assertEqual(node.tag, tag)
|
|
self.assertEqual(node.value, value)
|
|
|
|
assert node.children is not None
|
|
self.assertListEqual(node.children, children)
|
|
|
|
assert node.props is not None
|
|
self.assertDictEqual(node.props, props)
|
|
|
|
def test_to_html_when_called_it_should_raise_not_implemented_error(self):
|
|
node = HtmlNode()
|
|
|
|
with self.assertRaises(NotImplementedError):
|
|
node.to_html()
|
|
|
|
def test_props_to_html_when_called_and_props_none_it_should_return_empty_string(
|
|
self,
|
|
):
|
|
node = HtmlNode()
|
|
|
|
result = node.props_to_html()
|
|
|
|
self.assertEqual(result, "")
|
|
|
|
def test_props_to_html_when_called_with_props_it_should_return_in_proper_format(
|
|
self,
|
|
):
|
|
node = HtmlNode(props={"href": "https://www.google.com", "target": "_blank"})
|
|
|
|
result = node.props_to_html()
|
|
|
|
self.assertEqual(
|
|
result,
|
|
' href="https://www.google.com" target="_blank"',
|
|
)
|
|
|
|
def test_repr_when_called_it_should_return_expected_representation(self):
|
|
tag = "tag"
|
|
value = "value"
|
|
children = [HtmlNode()]
|
|
props = {}
|
|
|
|
node = HtmlNode(tag, value, children, props)
|
|
|
|
result = repr(node)
|
|
|
|
self.assertEqual(
|
|
result, f"{HtmlNode.__name__}({tag}, {value}, {children}, {props})"
|
|
)
|