def test_create_quantile_output(self):
        period = 0.025

        writer = QuantileCurveWriter(
            self.job, quantile=0.5, imt="SA(%s)" % period)
        curve, output = writer.create_aggregate_result()
        self.assertEqual(1,
                         oq_models.Output.objects.filter(pk=output.id).count())
        self.assertEqual(
            1,
            oq_models.HazardCurve.objects.filter(pk=curve.id).count())
        self.assertEqual("hazard_curve", output.output_type)
        self.assertFalse(curve.lt_realization)
        self.assertEqual("quantile", curve.statistics)
        self.assertEqual("SA", curve.imt)
        self.assertEqual(oq_models.DEFAULT_SA_DAMPING, curve.sa_damping)
        self.assertEqual(period, curve.sa_period)
        self.assertEqual(curve.output, output)
    def setUp(self):
        cfg = helpers.demo_file('simple_fault_demo_hazard/job.ini')
        self.job = helpers.get_hazard_job(cfg, username="******")

        self.mean_curve_writer = MeanCurveWriter(self.job, imt="PGA")
        self.mean_curve, self.mean_output = (
            self.mean_curve_writer.create_aggregate_result())
        self.quantile_curve_writer = QuantileCurveWriter(
            self.job, quantile=0.5, imt="PGA")
        self.quantile_curve, self.quantile_output = (
            self.quantile_curve_writer.create_aggregate_result())
class AggregateResultWriterTestCase(unittest.TestCase):
    """
    Test the manager to create aggregate result
    """
    def setUp(self):
        cfg = helpers.demo_file('simple_fault_demo_hazard/job.ini')
        self.job = helpers.get_hazard_job(cfg, username="******")

        self.mean_curve_writer = MeanCurveWriter(self.job, imt="PGA")
        self.mean_curve, self.mean_output = (
            self.mean_curve_writer.create_aggregate_result())
        self.quantile_curve_writer = QuantileCurveWriter(
            self.job, quantile=0.5, imt="PGA")
        self.quantile_curve, self.quantile_output = (
            self.quantile_curve_writer.create_aggregate_result())

    def test_create_mean_curves(self):
        a_location = helpers.random_location_generator()
        poes = [random.random()]

        with self.mean_curve_writer as writer:
            writer.add_data(
                location=a_location.wkb,
                poes=poes)
            writer.add_data(
                location=a_location.wkb,
                poes=poes)

        self.assertEqual(2,
                         self.mean_curve.hazardcurvedata_set.count())
        curvedata = self.mean_curve.hazardcurvedata_set.all()[0]
        self.assertEqual(
            1,
            oq_models.HazardCurveData.objects.filter(pk=curvedata.id).count())

    def test_create_quantile_curves(self):
        a_location = helpers.random_location_generator()
        poes = [random.random()]

        with self.quantile_curve_writer as writer:
            writer.add_data(
                location=a_location.wkb,
                poes=poes)
        self.assertEqual(1,
                         self.quantile_curve.hazardcurvedata_set.count())
        curvedata = self.quantile_curve.hazardcurvedata_set.all()[0]

        self.assertEqual(
            1,
            oq_models.HazardCurveData.objects.filter(pk=curvedata.id).count())