11import unittest
2- from mock import MagicMock
3- from script_definition_loader import Generator , ScriptDefinitionWrapper
4- from typing import Dict , AnyStr , List
2+ from typing import AnyStr , Dict , List
3+ from unittest . mock import MagicMock
4+
55from hamcrest .core import assert_that , equal_to
6- from hamcrest . library . text import matches_regexp
6+ from script_definition_loader import Generator , ScriptDefinitionWrapper
77from test_script_definitions .valid_script_definition import DoRun as ValidDoRun
8- from pprint import pprint
9- import pathlib
108
119
1210class TestGenerator (unittest .TestCase ):
13-
14- def _get_estimates_for_single_action (self , scriptDefinition ):
15- wrapper = ScriptDefinitionWrapper ("test" , scriptDefinition )
16- estimates : Dict [int , int ] = self .generator .estimateTime ([
17- {"param1" : "param1Val" , "param2" : "param2Val" }
18- ], wrapper , {})
11+ def _get_estimates_for_single_action (self , script_definition ):
12+ wrapper = ScriptDefinitionWrapper ("test" , script_definition )
13+ estimates : Dict [int , int ] = self .generator .estimateTime (
14+ [{"param1" : "param1Val" , "param2" : "param2Val" }], wrapper , {}
15+ )
1916 return estimates
2017
2118 def setUp (self ):
2219 self .generator : Generator = Generator (repo_path = "test_script_definitions" )
2320
2421 def test_GIVEN_script_definitions_return_invalid_WHEN_get_generator_invalidity_reasons_THEN_context_as_expected (
25- self ):
22+ self ,
23+ ):
2624 # Arrange
2725 mock_script_definition : ScriptDefinitionWrapper = MagicMock ()
2826 mock_script_definition .parametersValid .return_value = "invalid reason"
29- validityCheck : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors ({}, [
30- {"param1" : "param1Val" , "param2" : "param2Val" },
31- {"param1" : "param1Val" , "param2" : "param2Val" }
32- ], mock_script_definition )
27+ validity_check : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
28+ {},
29+ [
30+ {"param1" : "param1Val" , "param2" : "param2Val" },
31+ {"param1" : "param1Val" , "param2" : "param2Val" },
32+ ],
33+ mock_script_definition ,
34+ )
3335 # Act and Assert
34- assert_that (validityCheck , equal_to ([{}, {0 : "invalid reason" , 1 : "invalid reason" }]),
35- "2 actions, both invalid with reason" )
36+ assert_that (
37+ validity_check ,
38+ equal_to ([{}, {0 : "invalid reason" , 1 : "invalid reason" }]),
39+ "2 actions, both invalid with reason" ,
40+ )
3641
3742 def test_GIVEN_script_definitions_return_invalid_WHEN_get_generator_invalidity_reasons_with_global_THEN_context_as_expected (
38- self ):
43+ self ,
44+ ):
3945 # Arrange
4046 mock_script_definition : ScriptDefinitionWrapper = MagicMock ()
4147 mock_script_definition .parametersValid .return_value = "invalid reason"
4248 mock_script_definition .globalParamsValid .return_value = "invalid reason"
43- validityCheck : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors ({"global1" : "global1Val" }, [
44- {"param1" : "param1Val" , "param2" : "param2Val" },
45- {"param1" : "param1Val" , "param2" : "param2Val" }
46- ], mock_script_definition )
49+ validity_check : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
50+ {"global1" : "global1Val" },
51+ [
52+ {"param1" : "param1Val" , "param2" : "param2Val" },
53+ {"param1" : "param1Val" , "param2" : "param2Val" },
54+ ],
55+ mock_script_definition ,
56+ )
4757 # Act and Assert
48- assert_that (validityCheck , equal_to ([{0 : 'invalid reason' }, {0 : "invalid reason" , 1 : "invalid reason" }]),
49- "1 global, 2 actions, all invalid with reason" )
50-
51- def test_GIVEN_script_definition_return_valid_WHEN_get_generator_invalidity_reasons_THEN_no_content (self ):
58+ assert_that (
59+ validity_check ,
60+ equal_to ([{0 : "invalid reason" }, {0 : "invalid reason" , 1 : "invalid reason" }]),
61+ "1 global, 2 actions, all invalid with reason" ,
62+ )
63+
64+ def test_GIVEN_script_definition_return_valid_WHEN_get_generator_invalidity_reasons_THEN_no_content (
65+ self ,
66+ ):
5267 # Arrange
5368 mock_script_definition : ScriptDefinitionWrapper = MagicMock ()
5469 mock_script_definition .parametersValid .return_value = None
55- validityCheck : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors ({}, [
56- {"param1" : "param1Val" , "param2" : "param2Val" },
57- {"param1" : "param1Val" , "param2" : "param2Val" }
58- ], mock_script_definition )
70+ validity_check : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
71+ {},
72+ [
73+ {"param1" : "param1Val" , "param2" : "param2Val" },
74+ {"param1" : "param1Val" , "param2" : "param2Val" },
75+ ],
76+ mock_script_definition ,
77+ )
5978 # Act and Assert
60- assert_that (validityCheck , equal_to ([{}, {}]), "2 actions, both valid" )
79+ assert_that (validity_check , equal_to ([{}, {}]), "2 actions, both valid" )
6180
62- def test_GIVEN_script_definition_return_valid_WHEN_get_generator_global_invalidity_reasons_THEN_no_content (self ):
81+ def test_GIVEN_script_definition_return_valid_WHEN_get_generator_global_invalidity_reasons_THEN_no_content (
82+ self ,
83+ ):
6384 # Arrange
6485 mock_script_definition : ScriptDefinitionWrapper = MagicMock ()
6586 mock_script_definition .globalParamsValid .return_value = None
66- validityCheck : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
67- {"param1" : "param1Val" , "param2" : "param2Val" }, [],
68- mock_script_definition )
87+ validity_check : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
88+ {"param1" : "param1Val" , "param2" : "param2Val" }, [], mock_script_definition
89+ )
6990 # Act and Assert
70- assert_that (validityCheck , equal_to ([{}, {}]), "2 globals, both valid" )
91+ assert_that (validity_check , equal_to ([{}, {}]), "2 globals, both valid" )
7192
7293 # Allows us to return whether invalid or not based on passed vals
7394 def params_valid_side_effect (self , params , global_params ) -> AnyStr :
@@ -77,39 +98,46 @@ def params_valid_side_effect(self, params, global_params) -> AnyStr:
7798 return "invalid"
7899
79100 def test_GIVEN_script_definition_return_valid_and_invalid_WHEN_get_generator_invalidity_reasons_THEN_content_as_expected (
80- self ):
101+ self ,
102+ ):
81103 # Arrange
82104 mock_script_definition : ScriptDefinitionWrapper = MagicMock ()
83105 mock_script_definition .parametersValid .side_effect = self .params_valid_side_effect
84- validityCheck : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors ({}, [
85- {"param1" : "param1Val" }, {"param2" : "param2Val" }
86- ], mock_script_definition )
106+ validity_check : List [Dict [int , AnyStr ]] = self .generator .getValidityErrors (
107+ {}, [{ "param1" : "param1Val" }, {"param2" : "param2Val" }], mock_script_definition
108+ )
87109 # Act and Assert
88- assert_that (validityCheck , equal_to ([{}, {1 : "invalid" }]), "2 actions, one invalid with reason" )
110+ assert_that (
111+ validity_check , equal_to ([{}, {1 : "invalid" }]), "2 actions, one invalid with reason"
112+ )
89113
90114 def test_GIVEN_valid_parameters_and_int_estimate_WHEN_estimate_time_THEN_return_estimate (self ):
91115 # Arrange
92- mock_script_definition : ScriptDefinition = MagicMock ()
116+ mock_script_definition = MagicMock ()
93117 mock_script_definition .parameters_valid .return_value = None
94118 mock_script_definition .estimate_time .return_value = 2
95119 estimates = self ._get_estimates_for_single_action (mock_script_definition )
96120
97121 # Act and Assert
98122 assert_that (estimates , equal_to ({0 : 2 }))
99123
100- def test_GIVEN_valid_parameters_and_float_estimate_WHEN_estimate_time_THEN_round_estimate_and_return_it (self ):
124+ def test_GIVEN_valid_parameters_and_float_estimate_WHEN_estimate_time_THEN_round_estimate_and_return_it (
125+ self ,
126+ ):
101127 # Arrange
102- mock_script_definition : ScriptDefinition = MagicMock ()
128+ mock_script_definition = MagicMock ()
103129 mock_script_definition .parameters_valid .return_value = None
104130 mock_script_definition .estimate_time .return_value = 2.0
105131 estimates = self ._get_estimates_for_single_action (mock_script_definition )
106132
107133 # Act and Assert
108134 assert_that (estimates , equal_to ({0 : 2 }))
109135
110- def test_GIVEN_valid_parameters_and_string_estimate_WHEN_estimate_time_THEN_return_empty_dict (self ):
136+ def test_GIVEN_valid_parameters_and_string_estimate_WHEN_estimate_time_THEN_return_empty_dict (
137+ self ,
138+ ):
111139 # Arrange
112- mock_script_definition : ScriptDefinition = MagicMock ()
140+ mock_script_definition = MagicMock ()
113141 mock_script_definition .parameters_valid .return_value = None
114142 mock_script_definition .estimate_time .return_value = "wrong type"
115143 estimates = self ._get_estimates_for_single_action (mock_script_definition )
@@ -119,17 +147,19 @@ def test_GIVEN_valid_parameters_and_string_estimate_WHEN_estimate_time_THEN_retu
119147
120148 def test_GIVEN_valid_parameters_and_no_estimate_WHEN_estimate_time_THEN_return_empty_dict (self ):
121149 # Arrange
122- mock_script_definition : ScriptDefinition = MagicMock ()
150+ mock_script_definition = MagicMock ()
123151 mock_script_definition .parameters_valid .return_value = None
124152 mock_script_definition .estimate_time .return_value = None
125153 estimates = self ._get_estimates_for_single_action (mock_script_definition )
126154
127155 # Act and Assert
128156 assert_that (estimates , equal_to ({}))
129157
130- def test_GIVEN_invalid_parameters_and_int_estimate_WHEN_estimate_time_THEN_return_empty_dict (self ):
158+ def test_GIVEN_invalid_parameters_and_int_estimate_WHEN_estimate_time_THEN_return_empty_dict (
159+ self ,
160+ ):
131161 # Arrange
132- mock_script_definition : ScriptDefinition = MagicMock ()
162+ mock_script_definition = MagicMock ()
133163 mock_script_definition .parameters_valid .return_value = "some error"
134164 mock_script_definition .estimate_time .return_value = 2
135165 estimates = self ._get_estimates_for_single_action (mock_script_definition )
@@ -139,8 +169,7 @@ def test_GIVEN_invalid_parameters_and_int_estimate_WHEN_estimate_time_THEN_retur
139169
140170 def test_GIVEN_valid_script_definition_WHEN_generate_THEN_new_script_is_as_expected (self ):
141171 # Arrange
142- expected_script_lines : List [AnyStr ] = \
143- """# pylint: skip-file
172+ expected_script_lines : List [AnyStr ] = """# pylint: skip-file
144173
145174from genie_python import genie as g
146175
@@ -187,27 +216,39 @@ def runscript():
187216
188217value = b'789c030000000001'""" .split ("\n " )
189218 params = [{"param1" : "1" , "param2" : "2" }, {"param1" : "1" , "param2" : "2" }]
190- script_definition : ScriptDefinitionWrapper = ScriptDefinitionWrapper (name = "valid_script_definition" ,
191- script_definition = ValidDoRun ())
219+ script_definition : ScriptDefinitionWrapper = ScriptDefinitionWrapper (
220+ name = "valid_script_definition" , script_definition = ValidDoRun ()
221+ )
192222 # Act
193223 generated_script : str = self .generator .generate (params , "" , {}, script_definition )
194224 # Assert
195- self .assertIsNotNone (generated_script , "ScriptDefinitionWrapper is valid, so should not return None" )
225+ self .assertIsNotNone (
226+ generated_script , "ScriptDefinitionWrapper is valid, so should not return None"
227+ )
196228
197229 generated_lines = generated_script .split ("\n " )
198- assert_that (len (generated_lines ), equal_to (len (expected_script_lines )),
199- "Should have the same amount of lines if they match" )
230+ assert_that (
231+ len (generated_lines ),
232+ equal_to (len (expected_script_lines )),
233+ "Should have the same amount of lines if they match" ,
234+ )
200235
201236 for i in range (len (generated_lines )):
202- assert_that (generated_lines [i ], equal_to (expected_script_lines [i ]),
203- "Each line of the generated script should match the expected line" )
237+ assert_that (
238+ generated_lines [i ],
239+ equal_to (expected_script_lines [i ]),
240+ "Each line of the generated script should match the expected line" ,
241+ )
204242
205243 def test_GIVEN_invalid_script_definition_params_WHEN_generate_THEN_return_none (self ):
206244 # Arrange
207245 params = [{"param1" : "invalid" , "param2" : "2" }, {"param1" : "1" , "param2" : "2" }]
208- script_definition : ScriptDefinitionWrapper = ScriptDefinitionWrapper (name = "valid_script_definition" ,
209- script_definition = ValidDoRun ())
246+ script_definition : ScriptDefinitionWrapper = ScriptDefinitionWrapper (
247+ name = "valid_script_definition" , script_definition = ValidDoRun ()
248+ )
210249 # Act
211250 generated_script : str = self .generator .generate (params , "" , {}, script_definition )
212251 # Assert
213- self .assertIsNone (generated_script , "ScriptDefinitionWrapper is invalid, so should return None" )
252+ self .assertIsNone (
253+ generated_script , "ScriptDefinitionWrapper is invalid, so should return None"
254+ )
0 commit comments