def test_add_lifestage_model(self,get_g,m_ls):
        self.make_grass_mock(get_g.return_value)
        # Assume no appropriate files in tmp
        c = config.get_config()
        m = ModelRepository(self.temp_dir)
        m2 = ModelRepository()
        a_file = m2.get_models()['lifestage_test']

        self.create_mock_location(self.temp_dir)
        self.assertEqual(len(m.get_models()), 0)
        # add location to model, save as new
        dm = DispersalModel(a_file)
        dm.set_location('grass_location')
        temp_model_fn = os.path.join(os.path.dirname(a_file),"with_location_model.xml")
        dm.save_model(filename=temp_model_fn)

        get_g.return_value.get_range.return_value = [ 'xxxxxx10' ] * 10
        get_g.return_value.raster_value_freq.return_value = [ [1],[2],[3] ]
        m_ls.return_value = {}

        # and then try to add
        m.add_model(temp_model_fn) 
        self.assertEqual(len(m.get_models()), 1)
        # more tests about lifestage resources?
        self.remove_mock_location(self.temp_dir)
    def test_add_lifestage_model(self, get_g, m_ls):
        self.make_grass_mock(get_g.return_value)
        # Assume no appropriate files in tmp
        c = config.get_config()
        m = ModelRepository(self.temp_dir)
        m2 = ModelRepository()
        a_file = m2.get_models()['lifestage_test']

        self.create_mock_location(self.temp_dir)
        self.assertEqual(len(m.get_models()), 0)
        # add location to model, save as new
        dm = DispersalModel(a_file)
        dm.set_location('grass_location')
        temp_model_fn = os.path.join(os.path.dirname(a_file),
                                     "with_location_model.xml")
        dm.save_model(filename=temp_model_fn)

        get_g.return_value.get_range.return_value = ['xxxxxx10'] * 10
        get_g.return_value.raster_value_freq.return_value = [[1], [2], [3]]
        m_ls.return_value = {}

        # and then try to add
        m.add_model(temp_model_fn)
        self.assertEqual(len(m.get_models()), 1)
        # more tests about lifestage resources?
        self.remove_mock_location(self.temp_dir)
        self.assertEqual(len(m.get_models()), 1)
        self.remove_mock_location(self.temp_dir)

        # test when mapset already exists with the name of model
        get_g.return_value.check_mapset.return_value = True
        m.get_models = Mock()
        m.get_models.return_value = {'variables':'blreerger'}
        self.assertRaises(mdig.modelrepository.RepositoryException,m.add_model,temp_model_fn)
        get_g.return_value.check_mapset.return_value = False
        m = ModelRepository(self.temp_dir)

        # test what happens if we can't create new mapset
        get_g.return_value.change_mapset.return_value = False
        self.create_mock_location(self.temp_dir)
        try:
            m.add_model(temp_model_fn)
            os.remove(temp_model_fn)
            self.fail("RepositoryException not generated")
        except RepositoryException, e:
            self.assertTrue("Couldn't create mapset" in str(e))
        self.remove_mock_location(self.temp_dir)
        get_g.return_value.change_mapset.return_value = True
        
        # test response when failure to create mdig dir 
        get_g.return_value.create_mdig_subdir.side_effect = OSError('test')
        self.create_mock_location(self.temp_dir)
        self.assertRaises(RepositoryException,m.add_model,temp_model_fn) 
        self.assertEqual(len(m.get_models()), 0)
        self.remove_mock_location(self.temp_dir)

        os.remove(temp_model_fn)
        self.remove_mock_location(self.temp_dir)

        # test when mapset already exists with the name of model
        get_g.return_value.check_mapset.return_value = True
        m.get_models = Mock()
        m.get_models.return_value = {'variables': 'blreerger'}
        self.assertRaises(mdig.modelrepository.RepositoryException,
                          m.add_model, temp_model_fn)
        get_g.return_value.check_mapset.return_value = False
        m = ModelRepository(self.temp_dir)

        # test what happens if we can't create new mapset
        get_g.return_value.change_mapset.return_value = False
        self.create_mock_location(self.temp_dir)
        try:
            m.add_model(temp_model_fn)
            os.remove(temp_model_fn)
            self.fail("RepositoryException not generated")
        except RepositoryException, e:
            self.assertTrue("Couldn't create mapset" in str(e))
        self.remove_mock_location(self.temp_dir)
        get_g.return_value.change_mapset.return_value = True

        # test response when failure to create mdig dir
        get_g.return_value.create_mdig_subdir.side_effect = OSError('test')
        self.create_mock_location(self.temp_dir)
        self.assertRaises(RepositoryException, m.add_model, temp_model_fn)
        self.assertEqual(len(m.get_models()), 0)
        self.remove_mock_location(self.temp_dir)

        os.remove(temp_model_fn)