class TestReportPresenter(unittest.TestCase):

    pre = post = None

    def setUp(self):
        global pre, post
        self.presenter = ReportPresenter()
        pre = post = self
        self.builder = mock()
        rr = ReportResult("Valid")
        when(self.builder).build_report(any()).thenReturn(rr)
        self.presenter.set_builder(self.builder)

    def test_when_transform_a_report_to_gui_first_text_is_report_name(self):
        result = self.presenter._toGUIMode(Reports.asylum, Reports.asylum_keywords)
        post.assertEqual(result.text[0], Reports.asylum['title'])

    def test_when_transform_a_report_to_gui_has_as_many_nexttext_as_keywords(self):
        result = self.presenter._toGUIMode(Reports.asylum, Reports.asylum_keywords)
        print result.nexttext
        post.assertEqual(len(result.nexttext), 4)

    def test_set_database(self):
        mongo_mock = MockMongo()
        self.presenter.database = mongo_mock
        self.assertEquals(self.presenter.database, mongo_mock)

    def test_report_and_stats_returns_a_report_and_stats__(self):
        result = self.presenter.report_and_stats({'keywords':[]})
        post.assertIsNotNone(result)
        post.assertIsNotNone(result.report)
        post.assertIsNotNone(result.report_stats)

    def test_report_and_stats_returns_a_valid_report(self):
        result = self.presenter.report_and_stats({'keywords':[]})
        post.assertEquals(result.report, "Valid")

    def test_report_and_stats_returns_a_valid_stats(self):
        text_stats = self.presenter.generateStats(PreGeneratedReports.report_asylum_games, Reports.asylum)
        post.assertEquals(text_stats.text[0], "Asuntos encontrados: 4")
        post.assertEquals(text_stats.text[1], "Mensajes encontrados: 8")
        post.assertEquals(len(text_stats.text), 2)

    def test_when_filtering_the_stats_includes_a_msg_describibg_the_filter(self):
        result = self.presenter.report_and_stats({'keywords':[]}, filter_year='2015')
        stats = result.report_stats
        post.assertEquals(len(stats.text), 3)
        post.assertEquals(stats.text[2], "Se omiten asuntos sin mensajes desde el 2016 o posteriores")
class TestReportPresenter(unittest.TestCase):

    pre = post = None
    #post = None
    def setUp(self):
        global pre, post
        self.presenter = ReportPresenter()
        self.asylum = Reports.asylum
        pre = post = self
        #post = self

    def test_when_transform_a_report_to_gui_first_text_is_report_name(self):
        result = self.presenter._toGUIMode(self.asylum, Reports.asylum_keywords)
        post.assertEqual(result.text[0], self.asylum['title'])

    def test_when_transform_a_report_to_gui_has_as_many_nexttext_as_keywords(self):
        result = self.presenter._toGUIMode(self.asylum, Reports.asylum_keywords)
        print result.nexttext
        post.assertEqual(len(result.nexttext), 4)

    def test_set_database(self):
        mock = MockMongo()
        self.presenter.database = mock
        self.assertEquals(self.presenter.database, mock)