def setUp(self):
     self.config = ConfigurationToValidate()
     self.config.area = Area()
     self.config.area.ident = '3201'
     self.attrs_retriever = AreaConfig()
     record = {'GAFIDENT': '3201', 'DIEPTE': ' 1.17'}
     dbf = Mock()
     dbf.get_records = lambda: [record]
     self.attrs_retriever.open_database = Mock(return_value=dbf)
class AreaConfigTestSuite(TestCase):

    def setUp(self):
        self.config = ConfigurationToValidate()
        self.config.area = Area()
        self.config.area.ident = '3201'
        self.attrs_retriever = AreaConfig()
        record = {'GAFIDENT': '3201', 'DIEPTE': ' 1.17'}
        dbf = Mock()
        dbf.get_records = lambda: [record]
        self.attrs_retriever.open_database = Mock(return_value=dbf)

    def test_a(self):
        """Test the retrieval of a single record."""
        attrs = self.attrs_retriever.as_dict(self.config)
        self.assertEqual({'GAFIDENT': '3201', 'DIEPTE': ' 1.17'}, attrs)

    def test_b(self):
        """Test the retrieval of a single record of an unknown area."""
        self.config.area.ident = '3203'
        attrs = self.attrs_retriever.as_dict(self.config)
        self.assertEqual({}, attrs)

    def test_c(self):
        """Test the retrieval of records without a GAFIDENT field."""
        record = {'DIEPTE': ' 1.17'}
        dbf = Mock()
        dbf.get_records = lambda: [record]
        self.attrs_retriever.open_database = Mock(return_value=dbf)
        attrs = self.attrs_retriever.as_dict(self.config)
        self.assertEqual({}, attrs)

    def test_d(self):
        """Test the records are retrieved from the right file."""
        self.attrs_retriever.as_dict(self.config)
        args, kwargs = self.attrs_retriever.open_database.call_args
        self.assertEqual(self.config, args[0])

    def test_e(self):
        """Test the open DBF file is closed."""
        self.attrs_retriever.as_dict(self.config)
        mock_calls = self.attrs_retriever.open_database().mock_calls
        name, args, kwargs = mock_calls[-1]
        self.assertTrue('close' == name and () == args and {} == kwargs)