Coverage for amazonorders/entity/recipient.py: 96.77%

31 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-16 21:17 +0000

1import logging 

2from amazonorders.entity.parsable import Parsable 

3 

4__author__ = "Alex Laird" 

5__copyright__ = "Copyright 2024, Alex Laird" 

6__version__ = "0.0.5" 

7 

8logger = logging.getLogger(__name__) 

9 

10 

11class Recipient(Parsable): 

12 def __init__(self, 

13 parsed) -> None: 

14 super().__init__(parsed) 

15 

16 self.name = self.safe_parse(self._parse_name) 

17 self.address = self.safe_parse(self._parse_address) 

18 

19 def __repr__(self) -> str: 

20 return "<Recipient: \"{}\">".format(self.name) 

21 

22 def __str__(self) -> str: # pragma: no cover 

23 return "Recipient: \"{}\"".format(self.name) 

24 

25 def _parse_name(self): 

26 tag = self.parsed.find("li", {"class": "displayAddressFullName"}) 

27 if not tag: 

28 tag = self.parsed.find_all("div")[1] 

29 return tag.text.strip() 

30 

31 def _parse_address(self): 

32 tag = self.parsed.find("li", {"class": "displayAddressAddressLine1"}) 

33 if tag: 

34 value = tag.text.strip() 

35 next_tag = self.parsed.find("li", {"class": "displayAddressAddressLine2"}) 

36 if next_tag: 

37 value += "{}\n{}".format(tag.text.strip(), next_tag) 

38 next_tag = self.parsed.find("li", {"class": "displayAddressCityStateOrRegionPostalCode"}) 

39 if next_tag: 

40 value += "\n{}".format(next_tag.text.strip()) 

41 next_tag = self.parsed.find("li", {"class": "displayAddressCountryName"}) 

42 if next_tag: 

43 value += "\n{}".format(next_tag.text.strip()) 

44 else: 

45 value = self.parsed.find_all("div")[2].text 

46 return value.strip()