class TestLvmParser(CiTestCase):
    def setUp(self):
        super(TestLvmParser, self).setUp()
        self.probe_data = _get_data('probert_storage_lvm.json')
        self.lvmp = LvmParser(self.probe_data)

    def test_lvm_parser(self):
        """ LvmParser 'class_data' on instance matches input. """
        self.assertDictEqual(self.probe_data['lvm'], self.lvmp.class_data)

    def test_lvm_parser_blockdev_data(self):
        """ LvmParser has blockdev_data attr matches input. """
        self.assertDictEqual(self.probe_data['blockdev'],
                             self.lvmp.blockdev_data)

    def test_lvm_parser_lvm_partition_asdict(self):
        """ LvmParser returns expected dict for known lvm partition."""
        lv_name = "ubuntu-vg/my-storage"
        lv_config = self.lvmp.class_data['logical_volumes'][lv_name]
        expected_dict = {
            'type': 'lvm_partition',
            'name': 'my-storage',
            'id': 'lvm-partition-my-storage',
            'size': '1073741824B',
            'volgroup': 'lvm-volgroup-ubuntu-vg',
        }
        self.assertDictEqual(
            expected_dict, self.lvmp.lvm_partition_asdict(lv_name, lv_config))

    def test_lvm_parser_lvm_volgroup_asdict(self):
        """ LvmParser returns expected dict for known lvm volgroup."""
        vg_name = "vg1"
        lv_config = self.lvmp.class_data['volume_groups'][vg_name]
        expected_dict = {
            'type': 'lvm_volgroup',
            'name': 'vg1',
            'id': 'lvm-volgroup-vg1',
            'devices': ['partition-vda5', 'partition-vda6'],
        }
        self.assertDictEqual(expected_dict,
                             self.lvmp.lvm_volgroup_asdict(vg_name, lv_config))

    @skipUnlessJsonSchema()
    def test_lvm_parser_parses_all_lvs_vgs(self):
        """ LvmParser returns expected dicts for known lvm probe data."""
        configs, errors = self.lvmp.parse()
        self.assertEqual(5, len(configs))
        self.assertEqual(0, len(errors))
 def setUp(self):
     super(TestLvmParser, self).setUp()
     self.probe_data = _get_data('probert_storage_lvm.json')
     self.lvmp = LvmParser(self.probe_data)