1313# License for the specific language governing permissions and limitations
1414# under the License.
1515#
16+ from datetime import datetime
17+ from datetime import timedelta
18+
1619from cloudkittyclient .tests .functional import base
1720
1821
@@ -136,13 +139,15 @@ def test_create_get_delete_field(self):
136139 self .assertEqual (len (resp ), 0 )
137140
138141 def test_create_get_update_delete_mapping_service (self ):
142+ future_date = datetime .now () + timedelta (days = 1 )
143+ date_iso = future_date .isoformat ()
139144 resp = self .runner ('hashmap service create' , params = 'testservice' )[0 ]
140145 service_id = resp ['Service ID' ]
141146 self ._services .append (service_id )
142147
143148 # Create mapping
144149 resp = self .runner ('hashmap mapping create' ,
145- params = '-s {} 12' . format ( service_id ) )[0 ]
150+ params = f '-s { service_id } 12 --start { date_iso } ' )[0 ]
146151 mapping_id = resp ['Mapping ID' ]
147152 self ._mappings .append (mapping_id )
148153 self .assertEqual (resp ['Service ID' ], service_id )
@@ -173,6 +178,8 @@ def test_create_get_update_delete_mapping_service(self):
173178 'hashmap service delete' , params = service_id , has_output = False )
174179
175180 def test_create_get_update_delete_mapping_field (self ):
181+ future_date = datetime .now () + timedelta (days = 1 )
182+ date_iso = future_date .isoformat ()
176183 resp = self .runner ('hashmap service create' , params = 'testservice' )[0 ]
177184 service_id = resp ['Service ID' ]
178185 self ._services .append (service_id )
@@ -185,7 +192,8 @@ def test_create_get_update_delete_mapping_field(self):
185192 # Create mapping
186193 resp = self .runner (
187194 'hashmap mapping create' ,
188- params = '--field-id {} 12 --value testvalue' .format (field_id ))[0 ]
195+ params = f'--field-id { field_id } 12 --value '
196+ f'testvalue --start { date_iso } ' )[0 ]
189197 mapping_id = resp ['Mapping ID' ]
190198 self ._mappings .append (service_id )
191199 self .assertEqual (resp ['Field ID' ], field_id )
@@ -203,6 +211,45 @@ def test_create_get_update_delete_mapping_field(self):
203211 params = '--cost 10 {}' .format (mapping_id ))[0 ]
204212 self .assertEqual (float (resp ['Cost' ]), float (10 ))
205213
214+ def test_create_get_update_delete_mapping_field_started (self ):
215+ resp = self .runner ('hashmap service create' ,
216+ params = 'testservice_date_started' )[0 ]
217+ service_id = resp ['Service ID' ]
218+ self ._services .append (service_id )
219+
220+ resp = self .runner (
221+ 'hashmap field create' ,
222+ params = '{} testfield_date_started' .format (service_id ))[0 ]
223+ field_id = resp ['Field ID' ]
224+ self ._fields .append (field_id )
225+
226+ # Create mapping
227+ resp = self .runner (
228+ 'hashmap mapping create' ,
229+ params = f'--field-id { field_id } 12 --value '
230+ f'testvalue' )[0 ]
231+ mapping_id = resp ['Mapping ID' ]
232+ self ._mappings .append (service_id )
233+ self .assertEqual (resp ['Field ID' ], field_id )
234+ self .assertEqual (float (resp ['Cost' ]), float (12 ))
235+ self .assertEqual (resp ['Value' ], 'testvalue' )
236+
237+ # Get mapping
238+ resp = self .runner (
239+ 'hashmap mapping get' , params = mapping_id )[0 ]
240+ self .assertEqual (resp ['Mapping ID' ], mapping_id )
241+ self .assertEqual (float (resp ['Cost' ]), float (12 ))
242+
243+ # Should not be able to update a rule that is running (start < now)
244+ try :
245+ self .runner ('hashmap mapping update' ,
246+ params = '--cost 10 {}' .format (mapping_id ))[0 ]
247+ except RuntimeError as e :
248+ expected_error = ("You are allowed to update only the attribute "
249+ "[end] as this rule is already running as it "
250+ "started on " )
251+ self .assertIn (expected_error , str (e ))
252+
206253 def test_group_mappings_get (self ):
207254 # Service and group
208255 resp = self .runner ('hashmap service create' , params = 'testservice' )[0 ]
0 commit comments