summaryrefslogtreecommitdiff
path: root/test/apitest
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2019-01-18 01:15:37 +0100
committeremkael <emkael@tlen.pl>2019-01-18 01:15:37 +0100
commit033cd8f39d3e88283e4eb626f35f0e97c16e9e0e (patch)
tree49894d0624e8f25c0e2201954f413020c98cafdf /test/apitest
parent8c92dbcc1fa093c3f28df21ecc13b42b4e701be3 (diff)
Test suite for API <-> pzbs.pl comparison
Diffstat (limited to 'test/apitest')
-rw-r--r--test/apitest/__init__.py0
-rw-r--r--test/apitest/api.py48
-rw-r--r--test/apitest/apitest.py14
-rw-r--r--test/apitest/pzbs.py69
4 files changed, 131 insertions, 0 deletions
diff --git a/test/apitest/__init__.py b/test/apitest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/apitest/__init__.py
diff --git a/test/apitest/api.py b/test/apitest/api.py
new file mode 100644
index 0000000..4a52296
--- /dev/null
+++ b/test/apitest/api.py
@@ -0,0 +1,48 @@
+import json
+import urlparse
+
+from .apitest import ApiTest
+
+class ApiCalculator(ApiTest):
+ ranks = {
+ 'o++++': 7,
+ 'o+++': 6,
+ 'o++': 5,
+ 'o+': 4,
+ 'o-': 3,
+ 'r': 2,
+ 'o': 1,
+ 'k': 0
+ }
+ def get_url(self):
+ return 'http://localhost/pkl/api.php'
+ def get_method(self):
+ return 'post'
+ def get_request(self,
+ tour_type, tour_rank, tour_boards,
+ cont_count, cont_rank,
+ override=None):
+ params = {}
+ params['type'] = self.tourtypes[tour_type]
+ params['over39_boards'] = tour_boards
+ params['tournament_rank'] = self.ranks[tour_rank]
+ params['contestants'] = cont_count
+ params['title_sum'] = cont_rank
+ if override:
+ params['manual'] = {}
+ if 'points' in override:
+ params['manual[min_points]'] = override['points']
+ if 'weight' in override:
+ params['manual[tournament_weight]'] = override['weight']
+ if 'players' in override:
+ params['manual[players_coefficient]'] = override['players']
+ if 'cutoff' in override:
+ i = 0
+ for c in override['cutoff']:
+ params['manual[points_cutoffs][' + str(i) + '][0]'] = c[0]
+ params['manual[points_cutoffs][' + str(i) + '][1]'] = c[1]
+ i += 1
+ return params
+
+ def get_response(self, text):
+ return json.loads(text)
diff --git a/test/apitest/apitest.py b/test/apitest/apitest.py
new file mode 100644
index 0000000..e75890d
--- /dev/null
+++ b/test/apitest/apitest.py
@@ -0,0 +1,14 @@
+class ApiTest(object):
+ ranks = {}
+ tourtypes = {'i': 1, 'p': 2, 't': 4}
+ def get_url(self):
+ pass
+ def get_method(self):
+ pass
+ def get_request(self,
+ tour_rank, tour_type, tour_boards,
+ cont_count, cont_rank,
+ override=None):
+ pass
+ def parse_response(self, response_body):
+ pass
diff --git a/test/apitest/pzbs.py b/test/apitest/pzbs.py
new file mode 100644
index 0000000..1a1f69f
--- /dev/null
+++ b/test/apitest/pzbs.py
@@ -0,0 +1,69 @@
+import urlparse
+
+from bs4 import BeautifulSoup as bs
+
+from .apitest import ApiTest
+
+class PzbsCalculator(ApiTest):
+ ranks = {
+ 'o++++': 1,
+ 'o+++': 2,
+ 'o++': 3,
+ 'o+': 4,
+ 'o-': 5,
+ 'r': 6,
+ 'o': 7,
+ 'k': 8
+ }
+ def get_url(self):
+ return 'http://pzbs.pl/sedziowie/pkl/pkle2018.php'
+ def get_method(self):
+ return 'post'
+ def get_request(self,
+ tour_type, tour_rank, tour_boards,
+ cont_count, cont_rank,
+ override=None):
+ params = {
+ 'rgg': 25, 'rgp': 15, 'rot': 10, 'rok1': 7, 'rok': 5, 'rtp': 4, 'rto': 2, 'rtk': 1,
+ 'min1': 200, 'min2': 150, 'min3': 75, 'min4': 50, 'min5': 0, 'min6': 0, 'min7': 0, 'min8': 0,
+ 'rgg_': 40, 'rgp_': 25, 'rot_': 15, 'rok1_': 10, 'rok_': 7, 'rtp_': 5, 'rto_': 3, 'rtk_': 2,
+ 'min1_': 300, 'min2_': 200, 'min3_': 100, 'min4_': 70, 'min5_': 0, 'min6_': 0, 'min7_': 0, 'min8_': 0,
+ 'zaw': 0.05, 'prp1': 90, 'prp2': 20, 'pru1': 2, 'pru2': 20, 'pru3': 50,
+ 'typ': 0,
+ 'rozdan': 0,
+ 'rng': 0,
+ 'iuc': 0,
+ 'izw': 0,
+ 'swk': 0,
+ 'srd': 0
+ }
+ params['typ'] = self.tourtypes[tour_type]
+ params['rozdan'] = tour_boards
+ params['rng'] = self.ranks[tour_rank]
+ params['iuc'] = cont_count
+ params['izw'] = cont_count * self.tourtypes[tour_type]
+ params['swk'] = cont_rank
+ params['srd'] = cont_rank / (cont_count * self.tourtypes[tour_type])
+ if override:
+ if 'points' in override:
+ params['min' + str(params['typ']) + '_'*params['rozdan']] = override['points']
+ if 'weight' in override:
+ params['r' + ['', 'gg', 'gp', 'ot', 'ok1', 'ok', 'tp', 'to', 'tk'][params['typ']] + '_'*params['rozdan']] = override['weight']
+ if 'players' in override:
+ params['zaw'] = override['players']
+ if 'cutoff' in override:
+ for i in range(0, 3):
+ params['pru' + str(i+1)] = override['cutoff'][i][0] * 100
+ params['prp' + str(i+1)] = override['cutoff'][i][1] * 100
+ return params
+
+ def get_response(self, text):
+ results = {}
+ content = bs(text, 'lxml')
+ for row in content.select('table')[-1].select('tr'):
+ cells = row.select('td')
+ if cells[0].text.isdigit():
+ results[cells[0].text] = int(cells[1].text)
+ elif cells[0].text == 'SUMA PKL':
+ results[u'sum'] = int(cells[1].text)
+ return results