def test_uppercase_geo_id(self):
        validator = StaticValidator(self.params)
        report = ValidationReport([])
        df = pd.DataFrame(["ak", "AK"], columns=["geo_id"])
        validator.check_bad_geo_id_value(df, "name", "state", report)

        assert len(report.raised_errors) == 0
        assert len(report.raised_warnings) == 1
        assert "check_geo_id_lowercase" in report.raised_warnings[
            0].check_data_id
        assert "AK" in report.raised_warnings[0].expression
    def test_invalid_geo_id_national(self):
        validator = StaticValidator(self.params)
        report = ValidationReport([])
        df = pd.DataFrame(["us", "zz"], columns=["geo_id"])
        validator.check_bad_geo_id_value(df, "name", "national", report)

        assert len(report.raised_errors) == 1
        assert "check_bad_geo_id_value" in report.raised_errors[
            0].check_data_id
        assert len(report.raised_errors[0].expression) == 1
        assert "us" not in report.raised_errors[0].expression
        assert "zz" in report.raised_errors[0].expression
    def test_invalid_geo_id_msa(self):
        validator = StaticValidator(self.params)
        report = ValidationReport([])
        df = pd.DataFrame(["10180", "88888", "99999"], columns=["geo_id"])
        validator.check_bad_geo_id_value(df, "name", "msa", report)

        assert len(report.raised_errors) == 1
        assert "check_bad_geo_id_value" in report.raised_errors[
            0].check_data_id
        assert len(report.raised_errors[0].expression) == 2
        assert "10180" not in report.raised_errors[0].expression
        assert "88888" in report.raised_errors[0].expression
        assert "99999" in report.raised_errors[0].expression
 def test_empty_df(self):
     validator = StaticValidator(self.params)
     report = ValidationReport([])
     empty_df = pd.DataFrame(columns=["geo_id"], dtype=str)
     validator.check_bad_geo_id_value(empty_df, "name", "county", report)
     assert len(report.raised_errors) == 0