2022-11-13 16:01:44 +00:00
|
|
|
import pytest
|
|
|
|
import os
|
|
|
|
import json
|
|
|
|
|
|
|
|
import solo_turnier.html_parser
|
|
|
|
|
2022-11-19 06:38:22 +00:00
|
|
|
@pytest.fixture(scope='module', params=range(2))
|
2022-11-13 16:01:44 +00:00
|
|
|
def dataProviderHtmlParser(request):
|
2022-11-19 06:38:22 +00:00
|
|
|
variant = str(request.param+1)
|
|
|
|
dir = os.path.join(os.path.dirname(__file__), 'html_parser', 'erg', variant)
|
2022-11-13 16:01:44 +00:00
|
|
|
htmlFile = os.path.join(dir, 'erg.htm')
|
|
|
|
jsonFile = os.path.join(dir, 'expected.json')
|
|
|
|
|
|
|
|
with open(htmlFile, 'r') as fp:
|
|
|
|
html = fp.read()
|
|
|
|
with open(jsonFile, 'r') as fp:
|
|
|
|
jsonContent = json.load(fp)
|
|
|
|
|
|
|
|
return (html, jsonContent)
|
|
|
|
|
|
|
|
def test_extractDataFromHtml(dataProviderHtmlParser):
|
|
|
|
htmlString = dataProviderHtmlParser[0]
|
|
|
|
expected = dataProviderHtmlParser[1]
|
|
|
|
|
2022-11-26 07:43:15 +00:00
|
|
|
parser = solo_turnier.html_parser.HtmlParser(htmlString)
|
2022-11-13 16:01:44 +00:00
|
|
|
actualResult = parser.parseString(htmlString)
|
|
|
|
|
2022-11-15 13:38:59 +00:00
|
|
|
participants = {}
|
|
|
|
for i in actualResult.participants:
|
|
|
|
participants[i] = actualResult.participants[i].__dict__
|
|
|
|
|
|
|
|
assert actualResult.title == expected['title']
|
|
|
|
assert participants == expected['participants']
|
2022-11-15 13:19:10 +00:00
|
|
|
|
2022-11-26 07:44:15 +00:00
|
|
|
@pytest.fixture(params=range(6))
|
2022-11-15 13:19:10 +00:00
|
|
|
def fixture_guessDataFromTitle(request):
|
|
|
|
cases = {
|
|
|
|
'09.07.2022 - ETW, Solos Jun. Beginner Jive': {
|
|
|
|
'class_': 'Beg.',
|
|
|
|
'dance': 'Jive',
|
|
|
|
'group': 'Jun.'
|
|
|
|
},
|
|
|
|
'09.07.2022 - ETW, Solos Jun. Newc./Beg. Rumba': {
|
|
|
|
'class_': 'Newc./Beg.',
|
|
|
|
'dance': 'Rumba',
|
|
|
|
'group': 'Jun.'
|
|
|
|
},
|
|
|
|
'09.07.2022 - ETW, Solos Kin./Jun. Beginner Cha Cha': {
|
|
|
|
'class_': 'Beg.',
|
|
|
|
'dance': 'Cha Cha',
|
|
|
|
'group': 'Kin./Jun.'
|
|
|
|
},
|
|
|
|
'09.07.2022 - ETW, Solos Kin. Newcomer Samba': {
|
|
|
|
'class_': 'Newc.',
|
|
|
|
'dance': 'Samba',
|
|
|
|
'group': 'Kin.'
|
|
|
|
},
|
|
|
|
'09.07.2022 - ETW, Solos Jugend Beg./Adv. Wiener Walzer': {
|
|
|
|
'class_': 'Beg./Adv.',
|
|
|
|
'dance': 'Wiener Walzer',
|
|
|
|
'group': 'Jug.'
|
|
|
|
},
|
2022-11-26 07:44:15 +00:00
|
|
|
'09.07.2022 - ETW, Solos Jugend Sichtung Wiener Walzer': {
|
|
|
|
'class_': 'Sichtung',
|
|
|
|
'dance': 'Wiener Walzer',
|
|
|
|
'group': 'Jug.'
|
|
|
|
},
|
2022-11-15 13:19:10 +00:00
|
|
|
}
|
|
|
|
keys = list(cases.keys())
|
|
|
|
key = keys[request.param]
|
|
|
|
return (key, cases[key])
|
|
|
|
|
|
|
|
def test_guessDataFromTitle(fixture_guessDataFromTitle):
|
2022-11-26 07:43:15 +00:00
|
|
|
parser = solo_turnier.html_parser.HtmlParser('')
|
2022-11-15 13:19:10 +00:00
|
|
|
ret = parser.guessDataFromHtmlTitle(fixture_guessDataFromTitle[0])
|
|
|
|
|
|
|
|
assert ret == fixture_guessDataFromTitle[1]
|
2022-11-19 06:38:22 +00:00
|
|
|
|
|
|
|
@pytest.fixture(params=range(1))
|
|
|
|
def fixture_parsePreparationResult(request):
|
|
|
|
variant = str(request.param+1)
|
|
|
|
dir = os.path.join(os.path.dirname(__file__), 'html_parser', 'tabges', variant)
|
|
|
|
htmlFile = os.path.join(dir, 'tabges.htm')
|
|
|
|
jsonFile = os.path.join(dir, 'expected.json')
|
|
|
|
|
|
|
|
with open(htmlFile, 'r') as fp:
|
|
|
|
html = fp.read()
|
|
|
|
with open(jsonFile, 'r') as fp:
|
|
|
|
jsonContent = json.load(fp)
|
|
|
|
|
|
|
|
return (html, jsonContent)
|
|
|
|
|
|
|
|
def test_parsePreparationResult(fixture_parsePreparationResult):
|
|
|
|
html = fixture_parsePreparationResult[0]
|
|
|
|
jsonContent = fixture_parsePreparationResult[1]
|
|
|
|
|
2022-11-26 07:43:15 +00:00
|
|
|
parser = solo_turnier.html_parser.HtmlParser(html)
|
|
|
|
ret = parser.parsePreparationRound()
|
2022-11-19 06:38:22 +00:00
|
|
|
|
|
|
|
assert ret == jsonContent
|
|
|
|
|
|
|
|
@pytest.fixture(params=range(1))
|
|
|
|
def fixture_cleanPreparationImport(request):
|
|
|
|
variant = str(request.param+1)
|
|
|
|
dir = os.path.join(os.path.dirname(__file__), 'html_parser', 'tabges', variant)
|
|
|
|
srcFile = os.path.join(dir, 'expected.json')
|
|
|
|
expectedFile = os.path.join(dir, 'cleaned.json')
|
|
|
|
|
|
|
|
with open(srcFile, 'r') as fp:
|
|
|
|
source = json.load(fp)
|
|
|
|
with open(expectedFile, 'r') as fp:
|
|
|
|
expected = json.load(fp)
|
|
|
|
|
|
|
|
return (source, expected)
|
|
|
|
|
|
|
|
def test_cleanPreparationImport(fixture_cleanPreparationImport):
|
|
|
|
src = fixture_cleanPreparationImport[0]
|
|
|
|
expected = fixture_cleanPreparationImport[1]
|
|
|
|
|
2022-11-26 07:43:15 +00:00
|
|
|
parser = solo_turnier.html_parser.HtmlParser('')
|
2022-11-19 06:38:22 +00:00
|
|
|
parser.cleanPreparationRoundImport(src)
|
|
|
|
|
|
|
|
assert src == expected
|