def test_an_error(self, mock_func):
        mock_segDimValues = mock.Mock()
        mock_segDimValues.values.return_value = []
        mock_edt_norm = mock.Mock()
        mock_edt_norm.date.return_value = date(year=2015, month=1, day=1)
        mock_edt_off = mock.Mock()
        mock_edt_off.date.return_value = date(year=2015, month=2, day=1)
        mock_off_context = mock.Mock(endDatetime=mock_edt_off, segDimValues=mock_segDimValues)
        self.fact_end.xValue = mock_edt_norm
        self.fact_good1.context = mock_off_context

        mock_model = mock.Mock(
            facts=[
                self.fact_good1,
                self.fact_good2,
                self.fact_good3,
                self.fact_bad1,
                self.fact_bad2,
                self.fact_bad3,
                self.fact_end,
            ]
        )
        res = dpedc._doc_period_end_date_check(mock_model)
        self.assertTrue(len(res) == 1)
        code, message, eop_date, eop_fact, dped_fact = res[0]
        self.assertEqual(code, "DQC.US.0033.2")
    def test_a_warn_and_error(self, mock_func):
        mock_mem_qn = mock.Mock(localName='foo')
        mock_dim_qn = mock.Mock(localName='LegalEntityAxis')
        mock_dim_dim = mock.Mock(qname=mock_dim_qn)
        mock_member = mock.Mock(qname=mock_mem_qn)
        mock_dim = mock.Mock(isExplicit=True, member=mock_member, dimension=mock_dim_dim)

        mock_more_dims = mock.Mock()
        mock_more_dims.values.return_value = [mock_dim]

        mock_segDimValues = mock.Mock()
        mock_segDimValues.values.return_value = []

        mock_edt_norm = mock.Mock()
        mock_edt_norm.date.return_value = date(year=2015, month=1, day=1)

        mock_edt_off = mock.Mock()
        mock_edt_off.date.return_value = date(year=2015, month=2, day=1)
        mock_off_context = mock.Mock(endDatetime=mock_edt_off, segDimValues=mock_segDimValues)
        mock_off_context_lea = mock.Mock(endDatetime=mock_edt_off, segDimValues=mock_more_dims)

        m_qn_bad = mock.Mock(
            localName='DocumentPeriodEndDate', namespaceURI='http://xbrl.sec.gov/dei/2014-01-31')
        concept_EndDate = mock.Mock(qname=m_qn_bad)
        mock_dped_off = mock.Mock(context=mock_off_context, xValue=mock_edt_off,
                                  concept=concept_EndDate, qname=m_qn_bad, namespaceURI='http://xbrl.sec.gov/dei/2014-01-31')
        self.fact_end.xValue = mock_edt_off

        self.fact_good1.context = mock_off_context
        mock_model = mock.Mock(facts=[self.fact_good1, self.fact_good2, self.fact_good3,
                                      self.fact_bad1, self.fact_bad2, self.fact_bad3, self.fact_end, mock_dped_off])

        res = dpedc._doc_period_end_date_check(mock_model)
        self.assertEqual(len(res), 1)  # Only expect one because test 33 will not happen if 36 fires.
    def test_a_warn_and_error(self, mock_func):
        mock_mem_qn = mock.Mock(localName='foo')
        mock_dim_qn = mock.Mock(localName='LegalEntityAxis')
        mock_dim_dim = mock.Mock(qname=mock_dim_qn)
        mock_member = mock.Mock(qname=mock_mem_qn)
        mock_dim = mock.Mock(isExplicit=True,
                             member=mock_member,
                             dimension=mock_dim_dim)

        mock_more_dims = mock.Mock()
        mock_more_dims.values.return_value = [mock_dim]

        mock_segDimValues = mock.Mock()
        mock_segDimValues.values.return_value = []

        mock_edt_norm = mock.Mock()
        mock_edt_norm.date.return_value = date(year=2015, month=1, day=1)

        mock_edt_off = mock.Mock()
        mock_edt_off.date.return_value = date(year=2015, month=2, day=1)
        mock_off_context = mock.Mock(endDatetime=mock_edt_off,
                                     segDimValues=mock_segDimValues)
        mock_off_context_lea = mock.Mock(endDatetime=mock_edt_off,
                                         segDimValues=mock_more_dims)

        m_qn_bad = mock.Mock(localName='DocumentPeriodEndDate',
                             namespaceURI='http://xbrl.sec.gov/dei/2014-01-31')
        concept_EndDate = mock.Mock(qname=m_qn_bad)
        mock_dped_off = mock.Mock(
            context=mock_off_context,
            xValue=mock_edt_off,
            concept=concept_EndDate,
            qname=m_qn_bad,
            namespaceURI='http://xbrl.sec.gov/dei/2014-01-31')
        self.fact_end.xValue = mock_edt_off

        self.fact_good1.context = mock_off_context
        mock_model = mock.Mock(facts=[
            self.fact_good1, self.fact_good2, self.fact_good3, self.fact_bad1,
            self.fact_bad2, self.fact_bad3, self.fact_end, mock_dped_off
        ])

        res = dpedc._doc_period_end_date_check(mock_model)
        self.assertEqual(
            len(res),
            1)  # Only expect one because test 33 will not happen if 36 fires.
    def test_a_warn(self, mock_func):
        mock_segDimValues = mock.Mock()
        mock_segDimValues.values.return_value = []
        mock_edt_norm = mock.Mock()
        mock_edt_norm.date.return_value = date(year=2015, month=1, day=1)
        mock_dped_context = mock.Mock(endDatetime=mock_edt_norm, segDimValues=mock_segDimValues)
        mock_edt_off = mock.Mock()
        mock_edt_off.date.return_value = date(year=2015, month=2, day=1)
        self.fact_end.context = mock_dped_context
        self.fact_end.xValue = mock_edt_off

        mock_model = mock.Mock(facts=[self.fact_good1, self.fact_good2, self.fact_good3, self.fact_bad1, self.fact_bad2, self.fact_bad3,
                                      self.fact_shares, self.fact_public, self.fact_end])

        res = dpedc._doc_period_end_date_check(mock_model)
        self.assertTrue(len(res) == 1)
        code, message, eop_date, eop_fact, dped_fact = res[0]
        self.assertEqual(code, 'DQC.US.0036.1')
    def test_an_error(self, mock_func):
        mock_segDimValues = mock.Mock()
        mock_segDimValues.values.return_value = []
        mock_edt_norm = mock.Mock()
        mock_edt_norm.date.return_value = date(year=2015, month=1, day=1)
        mock_edt_off = mock.Mock()
        mock_edt_off.date.return_value = date(year=2015, month=2, day=1)
        mock_off_context = mock.Mock(endDatetime=mock_edt_off,
                                     segDimValues=mock_segDimValues)
        self.fact_end.xValue = mock_edt_norm
        self.fact_good1.context = mock_off_context

        mock_model = mock.Mock(facts=[
            self.fact_good1, self.fact_good2, self.fact_good3, self.fact_bad1,
            self.fact_bad2, self.fact_bad3, self.fact_end
        ])
        res = dpedc._doc_period_end_date_check(mock_model)
        self.assertTrue(len(res) == 1)
        code, message, eop_date, eop_fact, dped_fact = res[0]
        self.assertEqual(code, 'DQC.US.0033.2')