def test_alert_generated(self):
        self._setup()

        page_threshold_limit(
            db=self.db,
            debug=True
        )

        ## VERIFY AN ALERT IS GENERATED
        alert = self.db.query("""
            SELECT
                id,
                status,
                create_time,
                tdad_id,
                reason,
                details,
                severity,
                confidence
            FROM
                alerts
            WHERE
                reason={{reason}}
            """, {
            "reason": REASON
        })

        assert len(alert) == 1
        assert alert[0].status == 'new'
        assert alert[0].severity == self.severity
        assert alert[0].confidence == 1.0

        #VERIFY last_run HAS BEEEN UPDATED
        last_run = self.db.query(
            "SELECT last_run FROM reasons WHERE code={{type}}",
            {"type": REASON}
        )[0].last_run
        assert last_run >= datetime.utcnow() + timedelta(minutes=-1)

        #REMEMEBER id FOR CHECKING OBSOLETE
        self.alert_id = alert[0].id

        #VERIFY test_data_all_dimensions HAS BEEN MARKED PROPERLY
        h0_rejected = self.db.query("""
            SELECT
                h0_rejected
            FROM
                test_data_all_dimensions t
            JOIN
                alerts a ON a.tdad_id=t.id
            WHERE
                a.id={{alert_id}}
            """,
                                    {"alert_id": alert[0].id}
        )

        assert len(h0_rejected) == 1
        assert h0_rejected[0].h0_rejected == 1
    def test_alert_obsolete(self):
        ##SETUP
        assert self.alert_id != None  #EXPECTING test_alert_generated TO BE RUN FIRST

        self.db.execute("UPDATE alert_page_thresholds SET threshold={{threshold}} WHERE page={{page_id}}", {
            "threshold": 900,
            "page_id": self.page_id
        })

        ## TEST
        page_threshold_limit(
            db=self.db,
            debug=True
        )

        ## VERIFY SHOWING OBSOLETE
        new_state = self.db.query(
            "SELECT status FROM alerts WHERE id={{alert_id}}",
            {"alert_id": self.alert_id}
        )
        assert len(new_state) == 1
        assert new_state[0].status == "obsolete"

        #VERIFY test_data_all_dimensions HAS BEEN UNMARKED PROPERLY
        h0_rejected = self.db.query("""
            SELECT
                h0_rejected
            FROM
                test_data_all_dimensions t
            JOIN
                alerts a ON a.tdad_id=t.id
            WHERE
                a.id={{alert_id}}
            """,
                                    {"alert_id": self.alert_id}
        )
        assert len(h0_rejected) == 1
        assert h0_rejected[0].h0_rejected == 0