1717import os
1818import sys
1919import unittest
20+ from copy import deepcopy
21+
22+ import pytest
2023from mockito import mock
2124from robotide .robotapi import ALIAS_MARKER
2225
3033from robotide .controller .tablecontrollers import (
3134 VariableTableController , MetadataListController , ImportSettingsController ,
3235 WithListOperations )
36+ from robotide .controller .settingcontrollers import MetadataController
3337from robotide .publish .messages import (
3438 RideImportSetting , RideImportSettingRemoved , RideImportSettingAdded ,
3539 RideImportSettingChanged , RideItemSettingsChanged )
@@ -497,6 +501,33 @@ def test_editing(self):
497501 self ._assert_var_in_ctrl (1 , '@{listvar}' , ['a' , 'b' , 'c' ])
498502 assert self .ctrl .dirty
499503
504+ def test_index_difference (self ):
505+ import operator
506+ self .ctrl .add_variable ('${blaa}' , 'value' )
507+ names = [n for n in self .ctrl ] # [n for n in self.ctrl]
508+ ordered = deepcopy (names )
509+ ordered = sorted (ordered , key = operator .attrgetter ('name' ))
510+ diff = self .ctrl ._index_difference (names , ordered )
511+ print (f"DEBUG: test_controllers.py VariablesControllerTest test_index_difference diff={ diff } " )
512+ assert diff == [1 , 2 , 0 ]
513+
514+ def test_validate_name (self ):
515+ first = self .ctrl .validate_dict_variable_name ('%{boo}' ) # validate_name
516+ # print(f"DEBUG: test_controllers.py VariablesControllerTest test_validate_name first={first.error_message}")
517+ assert first .error_message == "Dictionary variable name must be in format &{name}"
518+ self ._add_var ('&{foo}' , 'boo' )
519+ second = self .ctrl .validate_dict_variable_name ('&{foo}' ) # validate_name
520+ # print(f"DEBUG: test_controllers.py VariablesControllerTest test_validate_name first={second.error_message}")
521+ assert second .error_message == "Variable with this name already exists."
522+
523+ def test_delete_var (self ):
524+ self ._add_var ('${boo}' , 'boo' )
525+ existing = [x .name for x in self .ctrl ]
526+ assert existing == ['${foo}' , '@{bar}' , '${boo}' ]
527+ self .ctrl .delete (- 1 )
528+ existing = [x .name for x in self .ctrl ]
529+ assert existing == ['${foo}' , '@{bar}' ]
530+
500531 def _assert_var_in_ctrl (self , index , name , value ):
501532 assert self .ctrl [index ].name == name
502533 assert self .ctrl [index ].value == value
@@ -525,6 +556,14 @@ def test_editing(self):
525556 def test_serialization (self ):
526557 assert (self ._get_metadata (0 ).as_list () == ['Metadata' , 'Meta name' , 'Some value' ])
527558
559+ def test_iter_metadatalist (self ):
560+ for item in self .ctrl :
561+ assert isinstance (item , MetadataController )
562+
563+ def test_add_metadata (self ):
564+ self .ctrl .add_metadata ('test_metadata' , 'this is the value' , 'this is the comment' )
565+ self ._assert_meta_in_model (- 1 , 'test_metadata' , 'this is the value' )
566+
528567 def _assert_meta_in_ctrl (self , index , name , value ):
529568 assert self .ctrl [index ].name == name
530569 assert self .ctrl [index ].value == value
@@ -550,6 +589,13 @@ def _items(self):
550589 def mark_dirty (self ):
551590 self .dirty = True
552591
592+ @property
593+ def original_items (self ):
594+ return WithListOperations ()._items
595+
596+ def original_mark_dirty (self ):
597+ WithListOperations .mark_dirty (self )
598+
553599
554600class WithListOperationsTest (unittest .TestCase ):
555601
@@ -582,6 +628,16 @@ def test_delete(self):
582628 self ._list_operations .delete (0 )
583629 self ._assert_item_in (0 , 'bar' )
584630
631+ def test_original_items (self ):
632+ with pytest .raises (NotImplementedError ):
633+ items = self ._list_operations .original_items
634+ print (f"DEBUG: test_controllers WithListOperationsTests test_original_items items={ items } " )
635+
636+ def test_original_mark_dirty (self ):
637+ with pytest .raises (NotImplementedError ):
638+ self ._list_operations .original_mark_dirty ()
639+ print ("DEBUG: test_controllers WithListOperationsTests test_original_mark_dirty" )
640+
585641 def _assert_item_in (self , index , name ):
586642 assert self ._list_operations ._items [index ] == name
587643
0 commit comments