Removed unused test classes.
[philipp/winterrodeln/wrpylib.git] / tests / test_mwmarkup.py
1 #!/usr/bin/python3.4
2 # coding=utf-8
3 import unittest
4 import mwparserfromhell
5 import wrpylib.mwmarkup
6
7
8 class TestMwParserFromHell(unittest.TestCase):
9     def test_find_template(self):
10         wikitext = '''== Allgemeines ==
11         {{Rodelbahnbox
12         | Position             = 47.309820 N 9.986508 E
13         | Position oben        =
14         | Höhe oben            = 1244
15         | Position unten       =
16         | Höhe unten           = 806
17         | Länge                = 5045
18         | Schwierigkeit        =
19         | Lawinen              = gelegentlich
20         | Betreiber            =
21         | Öffentliche Anreise  = Ja
22         | Gehzeit              = 105
23         | Aufstieg getrennt    = Nein
24         | Aufstiegshilfe       = Nein
25         | Beleuchtungsanlage   = Nein
26         | Beleuchtungstage     =
27         | Rodelverleih         = Ja
28         | Gütesiegel           =
29         | Webauskunft          =
30         | Telefonauskunft      = +43-664-1808482 (Bergkristallhütte)
31         | Bild                 = Rodelbahn Bergkristallhütte 2009-03-03.jpg
32         | In Übersichtskarte   = Ja
33         | Forumid              = 72
34         }}
35         Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
36         wikicode = mwparserfromhell.parse(wikitext)
37         rb = list(wikicode.filter_templates())[0]
38         self.assertEqual(rb.name.strip(), 'Rodelbahnbox')
39         self.assertEqual(rb.get('Aufstiegshilfe').value.strip(), 'Nein')
40         self.assertEqual(rb[:2], '{{')
41         self.assertEqual(rb[-2:], '}}')
42
43     def test_template_to_table(self):
44         wikitext = '{{Rodelbahnbox | Unbenannt | Position = 47.309820 N 9.986508 E | Aufstieg möglich = Ja }}'
45         wikicode = mwparserfromhell.parse(wikitext)
46         template = list(wikicode.filter_templates())[0]
47         self.assertEqual(template.name.strip(), 'Rodelbahnbox')
48         self.assertEqual(template.params[0].strip(), 'Unbenannt')
49         self.assertEqual(template.params[1].name.strip(), 'Position')
50         self.assertEqual(template.params[1].value.strip(), '47.309820 N 9.986508 E')
51         self.assertEqual(template.params[2].name.strip(), 'Aufstieg möglich')
52         self.assertEqual(template.params[2].value.strip(), 'Ja')
53
54         template = mwparserfromhell.nodes.template.Template('Rodelbahnbox')
55         template.add(1, 'Unbenannt')
56         template.add('Position', '47.309820 N 9.986508 E')
57         template.add('Aufstieg möglich', 'Ja')
58         self.assertEqual(template, '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}')
59
60         wrpylib.mwmarkup.template_to_table(template)
61         self.assertEqual(template,
62             '{{Rodelbahnbox\n' +
63             '| Unbenannt\n' +
64             '| Position         = 47.309820 N 9.986508 E\n' +
65             '| Aufstieg möglich = Ja\n' +
66             '}}')
67
68         wrpylib.mwmarkup.template_to_table(template, 18)
69         self.assertEqual(template,
70             '{{Rodelbahnbox\n' +
71             '| Unbenannt\n' +
72             '| Position          = 47.309820 N 9.986508 E\n' +
73             '| Aufstieg möglich  = Ja\n' +
74             '}}')
75
76     def test_split_template(self):
77         wikitext = '''== Allgemeines ==
78         {{Rodelbahnbox
79         | Position             = 47.309820 N 9.986508 E
80         | Position oben        =
81         | Höhe oben            = 1244
82         | Position unten       =
83         | Höhe unten           = 806
84         | Länge                = 5045
85         | Schwierigkeit        =
86         | Lawinen              = gelegentlich
87         | Betreiber            =
88         | Öffentliche Anreise  = Ja
89         | Gehzeit              = 105
90         | Aufstieg getrennt    = Nein
91         | Aufstiegshilfe       = Nein
92         | Beleuchtungsanlage   = Nein
93         | Beleuchtungstage     =
94         | Rodelverleih         = Ja
95         | Gütesiegel           =
96         | Webauskunft          =
97         | Telefonauskunft      = +43-664-1808482 (Bergkristallhütte)
98         | Bild                 = Rodelbahn Bergkristallhütte 2009-03-03.jpg
99         | In Übersichtskarte   = Ja
100         | Forumid              = 72
101         }}
102         Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
103         wikicode = mwparserfromhell.parse(wikitext)
104         template = wikicode.filter_templates(matches='Rodelbahnbox')[0]
105         self.assertEqual(template.name.strip(), 'Rodelbahnbox')
106         self.assertEqual(len(template.params), 22)
107         self.assertEqual(template.get('Position').value.strip(), '47.309820 N 9.986508 E')
108         self.assertEqual(template.get('Telefonauskunft').value.strip(), '+43-664-1808482 (Bergkristallhütte)')
109         self.assertEqual(template.get('Schwierigkeit').value.strip(), '')
110
111     def test_create_template(self):
112         template = mwparserfromhell.nodes.template.Template('Rodelbahnbox')
113         template.add(1, 'Unbenannt')
114         template.add('Position', '47.309820 N 9.986508 E')
115         template.add('Aufstieg möglich', 'Ja')
116         self.assertEqual(template, '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}')
117
118         wrpylib.mwmarkup.template_to_table(template)
119         self.assertEqual(template,
120             '{{Rodelbahnbox\n' +
121             '| Unbenannt\n' +
122             '| Position         = 47.309820 N 9.986508 E\n' +
123             '| Aufstieg möglich = Ja\n' +
124             '}}')
125
126     def test_find_tag(self):
127         wikitext = 'This is <tag>my first tag</tag> and <tag>my second tag</tag>.'
128         wikicode = mwparserfromhell.parse(wikitext)
129         tag_iter = wikicode.ifilter_tags()
130         tag = next(tag_iter)
131         self.assertEqual(tag.tag.strip(), 'tag')
132         self.assertEqual(tag.contents.strip(), 'my first tag')
133         tag = next(tag_iter)
134         self.assertEqual(tag.tag.strip(), 'tag')
135         self.assertEqual(tag.contents.strip(), 'my second tag')
136
137         wikitext = 'This is <tag myattrib="4"/>.'
138         wikicode = mwparserfromhell.parse(wikitext)
139         tag = next(wikicode.ifilter_tags())
140         self.assertEqual('tag', tag.tag)