forked from robotframework/SeleniumLibrary
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_javascript.py
More file actions
102 lines (89 loc) · 3.98 KB
/
Copy pathtest_javascript.py
File metadata and controls
102 lines (89 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import os
import unittest
from robot.utils import JYTHON
try:
from approvaltests.approvals import verify, verify_all
from approvaltests.reporters.generic_diff_reporter_factory import GenericDiffReporterFactory
except ImportError:
if JYTHON:
verify = None
GenericDiffReporterFactory = None
else:
raise
from SeleniumLibrary.keywords import JavaScriptKeywords
class JavaScriptKeywordsTest(unittest.TestCase):
@classmethod
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def setUpClass(cls):
cls.code_examples = [(),
('code1',), ('code1', 'code2'),
('JAVASCRIPT', 'code1', 'code2'),
('code1', 'code2', 'ARGUMENTS', 'arg1', 'arg2'),
('code1', 'code2', 'arguments', 'arg1', 'arg2'),
('javascript', 'code1', 'code2'),
('JAVASCRIPT', 'code1', 'code2', 'ARGUMENTS'),
('JAVASCRIPT', 'code1', 'code2', 'argUMENTs'),
('ARGUMENTS', 'JAVASCRIPT', 'code1', 'code2'),
('JAVASCRIPT', 'code1', 'code2', 'ARGUMENTS', 'arg1', 'arg2'),
('ARGUMENTS', 'arg1', 'arg2', 'JAVASCRIPT', 'code1', 'code2'),
('aRGUMENTS', 'arg1', 'arg2', 'jAVASCRIPT', 'code1', 'code2'),
('JAVASCRIPTCODE', 'code1', 'code2'),
('JAVASCRIPT', 'code1', 'code2', 'ARGUMENTS ARG2', 'arg3')]
cls.js = JavaScriptKeywords(None)
path = os.path.dirname(__file__)
reporter_json = os.path.abspath(os.path.join(path, os.pardir, 'approvals_reporters.json'))
factory = GenericDiffReporterFactory()
factory.load(reporter_json)
cls.reporter = factory.get_first_working()
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def test_get_javascript(self):
code, args = self.js._get_javascript_to_execute(('code', 'here'))
result = '%s + %s' % (code, args)
verify(result, self.reporter)
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def test_get_javascript_no_code(self):
code = ('ARGUMENTS', 'arg1', 'arg1')
try:
self.js._get_javascript_to_execute(code)
except Exception as error:
result = str(error)
verify(result, self.reporter)
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def test_separate_code_and_args(self):
all_results = []
for code in self.code_examples:
all_results.append(self.js_reporter(code))
verify_all('code and args', all_results, reporter=self.reporter)
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def test_indexing(self):
all_results = []
for code in self.code_examples:
all_results.append(self.js._get_marker_index(code))
verify_all('index', all_results, reporter=self.reporter)
@unittest.skipIf(JYTHON, 'ApprovalTest does not work with Jython')
def test_check_marker_error(self):
examples = [
(),
('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT',
'code1', 'JAVASCRIPT', 'code2'),
('JAVASCRIPT', 'code1', 'JAVASCRIPT', 'code2'),
('JAVASCRIPT', 'code1', 'ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1'),
('code1', 'JAVASCRIPT', 'code1' 'ARGUMENTS', 'arg1',),
('ARGUMENTS', 'arg1', 'ARGUMENTS', 'arg1', 'JAVASCRIPT', 'code1'),
('aRGUMENtS', 'arg1', 'arg2', 'JAVASCRIPT', 'code1', 'code2'),
]
examples = examples + self.code_examples
all_results = []
for code in examples:
all_results.append(self.js_marker_error(code))
verify_all('error', all_results, reporter=self.reporter)
def js_marker_error(self, code):
try:
return self.js._check_marker_error(code)
except Exception as error:
return error
def js_reporter(self, code):
try:
return self.js._separate_code_and_args(code)
except Exception as error:
return error