2121
2222from openstackclient .compute .v2 import aggregate
2323from openstackclient .tests .unit .compute .v2 import fakes as compute_fakes
24- from openstackclient .tests .unit import utils as tests_utils
2524
2625
2726class TestAggregate (compute_fakes .TestComputev2 ):
@@ -235,7 +234,8 @@ class TestAggregateList(TestAggregate):
235234 TestAggregate .fake_ag .id ,
236235 TestAggregate .fake_ag .name ,
237236 TestAggregate .fake_ag .availability_zone ,
238- {},
237+ {key : value for key , value in TestAggregate .fake_ag .metadata .items ()
238+ if key != 'availability_zone' },
239239 ), )
240240
241241 def setUp (self ):
@@ -371,6 +371,62 @@ def test_aggregate_set_with_property(self):
371371 self .fake_ag , parsed_args .property )
372372 self .assertIsNone (result )
373373
374+ def test_aggregate_set_with_no_property_and_property (self ):
375+ arglist = [
376+ '--no-property' ,
377+ '--property' , 'key2=value2' ,
378+ 'ag1' ,
379+ ]
380+ verifylist = [
381+ ('no_property' , True ),
382+ ('property' , {'key2' : 'value2' }),
383+ ('aggregate' , 'ag1' ),
384+ ]
385+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
386+ result = self .cmd .take_action (parsed_args )
387+ self .aggregate_mock .get .assert_called_once_with (parsed_args .aggregate )
388+ self .assertNotCalled (self .aggregate_mock .update )
389+ self .aggregate_mock .set_metadata .assert_called_once_with (
390+ self .fake_ag , {'key1' : None , 'key2' : 'value2' })
391+ self .assertIsNone (result )
392+
393+ def test_aggregate_set_with_no_property (self ):
394+ arglist = [
395+ '--no-property' ,
396+ 'ag1' ,
397+ ]
398+ verifylist = [
399+ ('no_property' , True ),
400+ ('aggregate' , 'ag1' ),
401+ ]
402+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
403+ result = self .cmd .take_action (parsed_args )
404+ self .aggregate_mock .get .assert_called_once_with (parsed_args .aggregate )
405+ self .assertNotCalled (self .aggregate_mock .update )
406+ self .aggregate_mock .set_metadata .assert_called_once_with (
407+ self .fake_ag , {'key1' : None })
408+ self .assertIsNone (result )
409+
410+ def test_aggregate_set_with_zone_and_no_property (self ):
411+ arglist = [
412+ '--zone' , 'new_zone' ,
413+ '--no-property' ,
414+ 'ag1' ,
415+ ]
416+ verifylist = [
417+ ('zone' , 'new_zone' ),
418+ ('no_property' , True ),
419+ ('aggregate' , 'ag1' ),
420+ ]
421+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
422+ result = self .cmd .take_action (parsed_args )
423+ self .aggregate_mock .get .assert_called_once_with (parsed_args .aggregate )
424+ self .aggregate_mock .update .assert_called_once_with (
425+ self .fake_ag , {'availability_zone' : parsed_args .zone })
426+ self .aggregate_mock .set_metadata .assert_called_once_with (
427+ self .fake_ag , {'key1' : None })
428+ self .assertIsNone (result )
429+
374430
375431class TestAggregateShow (TestAggregate ):
376432
@@ -387,7 +443,10 @@ class TestAggregateShow(TestAggregate):
387443 TestAggregate .fake_ag .hosts ,
388444 TestAggregate .fake_ag .id ,
389445 TestAggregate .fake_ag .name ,
390- '' ,
446+ utils .format_dict (
447+ {key : value
448+ for key , value in TestAggregate .fake_ag .metadata .items ()
449+ if key != 'availability_zone' }),
391450 )
392451
393452 def setUp (self ):
@@ -435,13 +494,32 @@ def test_aggregate_unset(self):
435494 self .fake_ag , {'unset_key' : None })
436495 self .assertIsNone (result )
437496
438- def test_aggregate_unset_no_property (self ):
497+ def test_aggregate_unset_multiple_properties (self ):
439498 arglist = [
499+ '--property' , 'unset_key1' ,
500+ '--property' , 'unset_key2' ,
440501 'ag1' ,
441502 ]
442- verifylist = None
443- self .assertRaises (tests_utils .ParserException ,
444- self .check_parser ,
445- self .cmd ,
446- arglist ,
447- verifylist )
503+ verifylist = [
504+ ('property' , ['unset_key1' , 'unset_key2' ]),
505+ ('aggregate' , 'ag1' ),
506+ ]
507+
508+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
509+ result = self .cmd .take_action (parsed_args )
510+ self .aggregate_mock .set_metadata .assert_called_once_with (
511+ self .fake_ag , {'unset_key1' : None , 'unset_key2' : None })
512+ self .assertIsNone (result )
513+
514+ def test_aggregate_unset_no_option (self ):
515+ arglist = [
516+ 'ag1' ,
517+ ]
518+ verifylist = [
519+ ('property' , None ),
520+ ('aggregate' , 'ag1' ),
521+ ]
522+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
523+ result = self .cmd .take_action (parsed_args )
524+ self .assertNotCalled (self .aggregate_mock .set_metadata )
525+ self .assertIsNone (result )
0 commit comments