From c9d5081ccae30c57df4fe5a731a9183c156d45e1 Mon Sep 17 00:00:00 2001 From: "Taihsiang Ho (tai271828)" Date: Mon, 25 May 2020 22:28:51 +0800 Subject: [PATCH] test(render_mail): introduce test_render_mail.py and its testing data Issue #7 --- ...ai271828+sponsorship.testemail.1@gmail.com | 30 ++++++++ ...ai271828+sponsorship.testemail.2@gmail.com | 30 ++++++++ ...ai271828+sponsorship.testemail.3@gmail.com | 30 ++++++++ ...1828+sponsorship.testemail.4.3@solvcon.net | 30 ++++++++ ...4\211\351\231\220\345\205\254\345\217\270" | 30 ++++++++ ...4\211\351\231\220\345\205\254\345\217\270" | 30 ++++++++ ...4\211\351\231\220\345\205\254\345\217\270" | 30 ++++++++ ...4\211\351\231\220\345\205\254\345\217\270" | 30 ++++++++ tests/test_render_mail.py | 73 +++++++++++++++++++ 9 files changed, 313 insertions(+) create mode 100644 tests/data/no-separator/tai271828+sponsorship.testemail.1@gmail.com create mode 100644 tests/data/no-separator/tai271828+sponsorship.testemail.2@gmail.com create mode 100644 tests/data/no-separator/tai271828+sponsorship.testemail.3@gmail.com create mode 100644 tests/data/no-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net create mode 100644 "tests/data/with-separator/tai271828+sponsorship.testemail.1@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24601\346\234\211\351\231\220\345\205\254\345\217\270" create mode 100644 "tests/data/with-separator/tai271828+sponsorship.testemail.2@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24602\346\234\211\351\231\220\345\205\254\345\217\270" create mode 100644 "tests/data/with-separator/tai271828+sponsorship.testemail.3@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24603\346\234\211\351\231\220\345\205\254\345\217\270" create mode 100644 "tests/data/with-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24604\346\234\211\351\231\220\345\205\254\345\217\270" create mode 100644 tests/test_render_mail.py diff --git a/tests/data/no-separator/tai271828+sponsorship.testemail.1@gmail.com b/tests/data/no-separator/tai271828+sponsorship.testemail.1@gmail.com new file mode 100644 index 0000000..9cd2596 --- /dev/null +++ b/tests/data/no-separator/tai271828+sponsorship.testemail.1@gmail.com @@ -0,0 +1,30 @@ +謹致 贊助組測試01有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試01有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git a/tests/data/no-separator/tai271828+sponsorship.testemail.2@gmail.com b/tests/data/no-separator/tai271828+sponsorship.testemail.2@gmail.com new file mode 100644 index 0000000..2b951a7 --- /dev/null +++ b/tests/data/no-separator/tai271828+sponsorship.testemail.2@gmail.com @@ -0,0 +1,30 @@ +謹致 贊助組測試02有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試02有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git a/tests/data/no-separator/tai271828+sponsorship.testemail.3@gmail.com b/tests/data/no-separator/tai271828+sponsorship.testemail.3@gmail.com new file mode 100644 index 0000000..14cd517 --- /dev/null +++ b/tests/data/no-separator/tai271828+sponsorship.testemail.3@gmail.com @@ -0,0 +1,30 @@ +謹致 贊助組測試03有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試03有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git a/tests/data/no-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net b/tests/data/no-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net new file mode 100644 index 0000000..615e204 --- /dev/null +++ b/tests/data/no-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net @@ -0,0 +1,30 @@ +謹致 贊助組測試04有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試04有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git "a/tests/data/with-separator/tai271828+sponsorship.testemail.1@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24601\346\234\211\351\231\220\345\205\254\345\217\270" "b/tests/data/with-separator/tai271828+sponsorship.testemail.1@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24601\346\234\211\351\231\220\345\205\254\345\217\270" new file mode 100644 index 0000000..9cd2596 --- /dev/null +++ "b/tests/data/with-separator/tai271828+sponsorship.testemail.1@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24601\346\234\211\351\231\220\345\205\254\345\217\270" @@ -0,0 +1,30 @@ +謹致 贊助組測試01有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試01有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git "a/tests/data/with-separator/tai271828+sponsorship.testemail.2@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24602\346\234\211\351\231\220\345\205\254\345\217\270" "b/tests/data/with-separator/tai271828+sponsorship.testemail.2@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24602\346\234\211\351\231\220\345\205\254\345\217\270" new file mode 100644 index 0000000..2b951a7 --- /dev/null +++ "b/tests/data/with-separator/tai271828+sponsorship.testemail.2@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24602\346\234\211\351\231\220\345\205\254\345\217\270" @@ -0,0 +1,30 @@ +謹致 贊助組測試02有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試02有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git "a/tests/data/with-separator/tai271828+sponsorship.testemail.3@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24603\346\234\211\351\231\220\345\205\254\345\217\270" "b/tests/data/with-separator/tai271828+sponsorship.testemail.3@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24603\346\234\211\351\231\220\345\205\254\345\217\270" new file mode 100644 index 0000000..14cd517 --- /dev/null +++ "b/tests/data/with-separator/tai271828+sponsorship.testemail.3@gmail.com - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24603\346\234\211\351\231\220\345\205\254\345\217\270" @@ -0,0 +1,30 @@ +謹致 贊助組測試03有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試03有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git "a/tests/data/with-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24604\346\234\211\351\231\220\345\205\254\345\217\270" "b/tests/data/with-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24604\346\234\211\351\231\220\345\205\254\345\217\270" new file mode 100644 index 0000000..615e204 --- /dev/null +++ "b/tests/data/with-separator/tai271828+sponsorship.testemail.4@gmail.com, tai271828+sponsorship.testemail.4.1@pycon.tw, taihsiangho+sponsorship.testemail.4.2@gmail.com,tai271828+sponsorship.testemail.4.3@solvcon.net - \350\264\212\345\212\251\347\265\204\346\270\254\350\251\24604\346\234\211\351\231\220\345\205\254\345\217\270" @@ -0,0 +1,30 @@ +謹致 贊助組測試04有限公司, + +Tha「Life is short (You need Python)」自這句名言以來,Python 程式語言儼然成為「簡單、易用、開放與自由社群」的代名詞。截至今日,全球已有 47 個國家自主成立官方 Python Conference 社群 ( https://www.python.org/psf/trademarks/pycon/ )。 + +臺灣亦在此全球趨勢下,自 2012 年起正式成立 PyCon Taiwan。來自全臺各地,自願付出的志工們為了推動臺灣的程式交流持續努力,與所有的會眾和贊助夥伴一同經歷了八年的持續成長與茁壯,已經累積與會數千人次,成為臺灣數一數二規模的技術研討會。 + +但是我們仍在思考,如何更進一步地擴大年會的影響力呢? + +答案是,讓支持著台灣 Python 年會的各地社群成長與彼此交流,一旦各地社群能夠穩定發展,將可以從點的質變形成連接彼此的線,進一步的推進全臺灣程式社群的量變。 + +今年年會將安排於濁水溪以南的府城,加重對非北部 Python 在地社群的推廣力道,更在會期之間加入了有別以往的社群軌議程。我們捨棄了儘管專業卻死板的會議室,將各地社群帶進了咖啡廳、展演空間甚至是古蹟內,以在地的社群主辦人擔任主持,協助講者與會眾進行更深度的交流互動。 + +換言之,我們希望今年的年會不僅是一場盛大的活動,也能夠持續性的活化台灣各地的 Python 社群。 + +為此,我們誠摯地邀請 贊助組測試04有限公司 一同加入我們的行列,給予 PyCon Taiwan 最需要的支持與贊助!展現貴公司所重視的企業價值、面對面接觸專業人士且於會期中招募所需人才。 + +為感謝您共襄盛舉,贊助廠商可選擇不同的贊助方案且享有多項的回饋服務。我們亦提供社群軌議程的贊助方案,使您可以選定主題以包下整個場地,來對參與的會眾(甚至講者)做精準的接觸;同時,由於主持人為各地社群主辦人,您亦有機會與社群意見領袖建立連結,甚至洽談後續社群活動贊助事宜。後附「PyCon Taiwan 2020」贊助方案,供您參酌。 + +若您有任何相關活動問題或是合作想法,請務必與我們聯繫! + + +會期資訊:5-6 Sep, 2020 於國立成功大學與週邊地區 +贊助方案:https://tw.pycon.org/2020/zh-hant/sponsor/prospectus/ +PyCon TW 官網:http://pycon.tw/ + + +敬祝 昌隆, + +2020 台灣 Python 年會籌備團隊 贊助組 +Taihsiang Ho \ No newline at end of file diff --git a/tests/test_render_mail.py b/tests/test_render_mail.py new file mode 100644 index 0000000..47d6c4f --- /dev/null +++ b/tests/test_render_mail.py @@ -0,0 +1,73 @@ +import filecmp +import glob +import os +import pytest + +from click.testing import CliRunner +from render_mail import main + + +path_j2 = '../templates/sponsorship/spam_sponsors_2020.j2' +path_receivers_json = '../examples/sponsorship/spam_sponsors_2020.json' +path_mails_to_send_no_separator = '/tmp/mails_to_send/no-separator' +path_mails_to_send_with_separator = '/tmp/mails_to_send/with-separator' +path_pre_rendered_mails_no_separator = './data/no-separator' +path_pre_rendered_mails_with_separator = './data/with-separator' + + +@pytest.fixture +def all_mails_base_no_separator(): + return get_all_mail_names_from_path(glob.glob('/'.join((path_pre_rendered_mails_no_separator, '*@*')))) + + +@pytest.fixture +def all_mails_base_with_separator(): + return get_all_mail_names_from_path(glob.glob('/'.join((path_pre_rendered_mails_with_separator, '*@*')))) + + +def get_all_mail_names_from_path(mails): + all_mail_names = [] + for mail in mails: + all_mail_names.append(os.path.basename(mail)) + + return all_mail_names + + +def compare_rendered_mail_all(targets, base_prefix='./data', target_prefix='../examples'): + for mail_name in targets: + if not compare_rendered_mail('/'.join((base_prefix, mail_name)), '/'.join((target_prefix, mail_name))): + return False + + return True + + +def compare_rendered_mail(base, target): + return filecmp.cmp(base, target, shallow=False) + + +def test_rendered_mail_no_separator(all_mails_base_no_separator): + runner = CliRunner() + result = runner.invoke(main, [path_j2, path_receivers_json, '--output_path', path_mails_to_send_no_separator]) + + all_mails_target = get_all_mail_names_from_path(glob.glob('/'.join((path_mails_to_send_no_separator, '*@*')))) + + assert result.exit_code == 0 + assert len(all_mails_base_no_separator) == len(all_mails_target) + assert compare_rendered_mail_all(all_mails_target, + base_prefix=path_pre_rendered_mails_no_separator, + target_prefix=path_mails_to_send_no_separator) + + +def test_rendered_mail_with_separator_dash(all_mails_base_with_separator): + runner = CliRunner() + result = runner.invoke(main, [path_j2, path_receivers_json, + '--output_path', path_mails_to_send_with_separator, + '--separator', ' - ']) + + all_mails_target = get_all_mail_names_from_path(glob.glob('/'.join((path_mails_to_send_with_separator, '*@*')))) + + assert result.exit_code == 0 + assert len(all_mails_base_with_separator) == len(all_mails_target) + assert compare_rendered_mail_all(all_mails_target, + base_prefix=path_pre_rendered_mails_with_separator, + target_prefix=path_mails_to_send_with_separator)