def test_get_emails_for_sending(self):
     all = contact_corresponding.get_isi_fields(test_isi_fake_data_file)
     assert_equals(len(all), 35)
     unique = contact_corresponding.get_unique_items(all)
     assert_equals(len(unique), 31)
     articles = contact_corresponding.get_filtered_dict(unique, lambda k, v: k == "type" and v == "Article")
     assert_equals(len(articles), 23)
     articles_of_months = contact_corresponding.get_filtered_dict(
         articles, lambda k, v: k == "data_month" and v in ["OCT", "NOV", "FAL"]
     )
     assert_equals(len(articles_of_months), 12)
     one_row_per_email = contact_corresponding.get_one_row_per_email(articles_of_months)
     assert_equals(len(one_row_per_email), 14)
     (first_occurrence, dupes) = contact_corresponding.email_first_occurrence(one_row_per_email, True)
     assert_equals(len(first_occurrence), 10)
     assert_equals(len(dupes), 4)
     (first_occurrence2, dupes2) = contact_corresponding.email_not_in_already_sent(first_occurrence, test_sent_file)
     assert_equals(len(first_occurrence2), 9)
     assert_equals(len(dupes2), 1)
     (first_occurrence3, dupes3) = contact_corresponding.filter_unsubscribe_list(first_occurrence2)
     assert_equals(len(first_occurrence3), 8)
     assert_equals(len(dupes3), 1)
     (first_occurrence4, dupes4) = contact_corresponding.filter_exclude_list(first_occurrence3, test_exclude_file)
     assert_equals(len(first_occurrence4), 6)
     assert_equals(len(dupes4), 2)
    def test_filter_months(self):
        all = contact_corresponding.get_isi_fields(test_isi_fake_data_file)
        assert_equals(len(all), 35)
        all_months = [d["data_month"] for d in all]
        assert_equals(set(all_months), set(["NOV", "DEC"]))

        result = contact_corresponding.get_filtered_dict(
            all, lambda k, v: k == "data_month" and v in ["OCT", "NOV", "FAL"]
        )
        assert_equals(len(result), 14)
        result_months = [d["data_month"] for d in result]
        assert_equals(set(result_months), set(["NOV"]))

        result = contact_corresponding.get_filtered_dict(
            all, lambda k, v: k == "data_month" and v in ["NOV", "DEC", "FAL"]
        )
        assert_equals(len(result), 35)
        result_months = [d["data_month"] for d in result]
        assert_equals(set(result_months), set(["NOV", "DEC"]))
    def test_filter_research_articles(self):
        all = contact_corresponding.get_isi_fields(test_isi_fake_data_file)
        assert_equals(len(all), 35)
        all_types = [d["type"] for d in all]
        assert_equals(
            set(all_types),
            set(["Biographical-Item", "Review", "Letter", "Editorial Material", "Article", "Correction"]),
        )

        result = contact_corresponding.get_filtered_dict(all, lambda k, v: k == "type" and v == "Article")
        assert_equals(len(result), 24)
        result_types = [d["type"] for d in result]
        assert_equals(set(result_types), set(["Article"]))