From d5580b393eedcc9cfb2b8d35e254e5cc0e3b4121 Mon Sep 17 00:00:00 2001 From: Thomas Eidens Date: Wed, 4 Oct 2023 21:27:08 +0200 Subject: [PATCH] Improved handling of empty/short affiliations --- mecadoi/crossref/peer_review.py | 46 +++--- scripts/unittest.sh | 2 +- tests/resources/expected/no-institution.xml | 115 ++++++++++++++ tests/resources/expected/no-institution.yml | 34 +++++ .../688_1_merged_1608565201.pdf | Bin 0 -> 3016 bytes .../Article Tracked Changes.doc | Bin 0 -> 30208 bytes .../meca/no-institution/Article-1.doc | Bin 0 -> 30208 bytes .../resources/meca/no-institution/Article.doc | Bin 0 -> 30208 bytes .../resources/meca/no-institution/article.xml | 137 +++++++++++++++++ .../meca/no-institution/decision.pdf | Bin 0 -> 4459 bytes .../meca/no-institution/manifest.xml | 43 ++++++ .../resources/meca/no-institution/reviews.xml | 119 +++++++++++++++ .../meca/no-institution/transfer.xml | 57 +++++++ tests/test_article.py | 141 +++++++++++++----- tests/test_batch.py | 6 +- tests/test_cli.py | 2 +- tests/test_generate_peer_review_deposition.py | 1 + tests/test_meca.py | 117 +++++++++++++++ 18 files changed, 762 insertions(+), 58 deletions(-) create mode 100644 tests/resources/expected/no-institution.xml create mode 100644 tests/resources/expected/no-institution.yml create mode 100644 tests/resources/meca/no-institution/688_1_merged_1608565201.pdf create mode 100644 tests/resources/meca/no-institution/Article Tracked Changes.doc create mode 100644 tests/resources/meca/no-institution/Article-1.doc create mode 100644 tests/resources/meca/no-institution/Article.doc create mode 100644 tests/resources/meca/no-institution/article.xml create mode 100644 tests/resources/meca/no-institution/decision.pdf create mode 100644 tests/resources/meca/no-institution/manifest.xml create mode 100644 tests/resources/meca/no-institution/reviews.xml create mode 100644 tests/resources/meca/no-institution/transfer.xml diff --git a/mecadoi/crossref/peer_review.py b/mecadoi/crossref/peer_review.py index 91360ba..e056e82 100644 --- a/mecadoi/crossref/peer_review.py +++ b/mecadoi/crossref/peer_review.py @@ -27,7 +27,7 @@ DoiBatch, DoiData, Head, - Institution, + Institution as CrossrefInstitution, InterWorkRelation, Orcid, PeerReview, @@ -37,7 +37,7 @@ ReviewDate, Titles, ) -from mecadoi.model import Author +from mecadoi.model import Author, Institution as MecadoiInstitution def generate_peer_review_deposition(articles: List[Article]) -> str: @@ -119,7 +119,7 @@ def generate_reviews(article: Article) -> Generator[PeerReview, None, None]: month=review.publication_date.month, day=review.publication_date.day, ), - institution=Institution(institution_name=INSTITUTION_NAME), + institution=CrossrefInstitution(institution_name=INSTITUTION_NAME), running_number=str(running_number), program=Program(related_item=[is_review_of_relation]), doi_data=DoiData( @@ -149,7 +149,7 @@ def generate_reviews(article: Article) -> Generator[PeerReview, None, None]: month=review.publication_date.month, day=review.publication_date.day, ), - institution=Institution(institution_name=INSTITUTION_NAME), + institution=CrossrefInstitution(institution_name=INSTITUTION_NAME), running_number="Author Reply", program=Program( related_item=[is_review_of_relation] @@ -171,6 +171,30 @@ def generate_reviews(article: Article) -> Generator[PeerReview, None, None]: ) +def create_institution(institution: MecadoiInstitution) -> CrossrefInstitution: + city = ( + institution.city + if institution.city and len(institution.city) > 1 + else None + ) + country = ( + institution.country + if institution.country and len(institution.country) > 1 + else None + ) + place = ( + f"{city}, {country}" if city and country + else city if city + else country if country + else None + ) + return CrossrefInstitution( + institution_name=institution.name, + institution_department=institution.department, + institution_place=place, + ) + + def create_contributors(authors: List[Author]) -> Contributors: contributors = Contributors( person_name=[ @@ -182,19 +206,7 @@ def create_contributors(authors: List[Author]) -> Contributors: affiliations=( Affiliations( institution=[ - Institution( - institution_name=institution.name, - institution_department=institution.department, - institution_place=( - f"{institution.city}, {institution.country}" - if institution.city and institution.country - else institution.city - if institution.city - else institution.country - if institution.country - else None - ), - ) + create_institution(institution) for institution in author.institutions ] ) diff --git a/scripts/unittest.sh b/scripts/unittest.sh index 063e28c..d16af7b 100755 --- a/scripts/unittest.sh +++ b/scripts/unittest.sh @@ -3,4 +3,4 @@ # If any command fails, exit immediately with that command's exit status set -eo pipefail -ENV_FILE=.env.ci python -m unittest \ No newline at end of file +ENV_FILE=.env.ci python -m unittest $@ diff --git a/tests/resources/expected/no-institution.xml b/tests/resources/expected/no-institution.xml new file mode 100644 index 0000000..1caac8b --- /dev/null +++ b/tests/resources/expected/no-institution.xml @@ -0,0 +1,115 @@ + + + 0000 + 0 + + EMBO + eidens@embl.de + + EMBO + + + + + + + + Peer Review #1 of An article with a single revision round. + + + 10 + 20 + 2020 + + + Review Commons + + 1 + + + 10.1101/single-revision-round.123.456.7890 + + + + 10.15252/rc.2020123456 + https://eeb.embo.org/doi/10.1101/single-revision-round.123.456.7890#rev0-rr1 + + + + + + + + Peer Review #2 of An article with a single revision round. + + + 10 + 20 + 2020 + + + Review Commons + + 2 + + + 10.1101/single-revision-round.123.456.7890 + + + + 10.15252/rc.2020123456 + https://eeb.embo.org/doi/10.1101/single-revision-round.123.456.7890#rev0-rr2 + + + + + + Jane + Doe + + + / + + + https://orcid.org/0000-0012-3456-7890 + + + John + Doe + + + / + + + + + + Author Reply to Peer Reviews of An article with a single revision round. + + + 10 + 20 + 2020 + + + Review Commons + + Author Reply + + + 10.1101/single-revision-round.123.456.7890 + + + 10.15252/rc.2020123456 + + + 10.15252/rc.2020123456 + + + + 10.15252/rc.2020123456 + https://eeb.embo.org/doi/10.1101/single-revision-round.123.456.7890#rev0-ar + + + + \ No newline at end of file diff --git a/tests/resources/expected/no-institution.yml b/tests/resources/expected/no-institution.yml new file mode 100644 index 0000000..b59bffa --- /dev/null +++ b/tests/resources/expected/no-institution.yml @@ -0,0 +1,34 @@ +doi: 10.1101/single-revision-round.123.456.7890 +review_process: +- author_reply: + authors: + - affiliation: / + given_name: Jane + is_corresponding_author: true + orcid: + id: https://orcid.org/0000-0012-3456-7890 + is_authenticated: true + surname: Doe + - affiliation: / + given_name: John + is_corresponding_author: false + orcid: null + surname: Doe + doi: 10.15252/rc.2020123456 + publication_date: 2020-10-20 00:00:00 + text: {} + reviews: + - authors: [] + doi: 10.15252/rc.2020123456 + publication_date: 2020-10-20 00:00:00 + text: + Estimated time to Complete Revisions (Required): Cannot tell / Not applicable + Significance (Required): Lorem ipsum dolor sit amet. + - authors: [] + doi: 10.15252/rc.2020123456 + publication_date: 2020-10-20 00:00:00 + text: + Estimated time to Complete Revisions (Required): Between 3 and 6 months + Evidence, reproducibility and clarity (Required): 'Summary: this is a test' + Significance (Required): 'Signification: also a test' +title: An article with a single revision round. diff --git a/tests/resources/meca/no-institution/688_1_merged_1608565201.pdf b/tests/resources/meca/no-institution/688_1_merged_1608565201.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7cb1aa187932502ab1f3ea9d9b9b68ceab7b82bd GIT binary patch literal 3016 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 literal 0 HcmV?d00001 diff --git a/tests/resources/meca/no-institution/Article-1.doc b/tests/resources/meca/no-institution/Article-1.doc new file mode 100644 index 0000000000000000000000000000000000000000..d9fd9e27f0364dc18f5bf3badeba022400cd4441 GIT binary patch literal 30208 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 + +

+ + + reviewcommonstest + + Review Commons - TEST + + + 2575-1077 + 2575-1077 + + + 10.12345/single-revision-round.1234567890 + single-revision-round-2020-1234 + + + Research Article + + + + An article with a single revision round. + + + + https://orcid.org/0000-0012-3456-7890 + + Doe + Jane + Dr. + + janedoe@example.com + + + + + + Doe + John + + johndoe@example.com + + + + + / + None + / + / + / + + + / + None + / + / + + + + + + Corresponding Author: + Jane Doe, Medicinal Chemistry, EMBL + + +

Author contributions: J.D. conceptualization; J.D. data curation.

+
+
+ + + 1234-5678.single-revision-round-2020-1234 + + + 12 + 12 + 2020 + + + + + 2020 + + +

This article has a single revision round and thus in ...

+
+ + test + test1 + test2 + + + + + EMBO + http://dx.doi.org/10.12345/asdf1234567890 + + + + + + + dual_publication + 0 + + + human_subjects + 0 + + + animal_subjects + 0 + + + Rebuttal Submitted to Hypothes.is + Yes + + + Pre-existing BioRxiv Preprint + Yes + + + Pre-existing BioRxiv Preprint DOI + 10.1101/single-revision-round.123.456.7890 + + + BioRxiv Preprint Submitted on Author's Behalf + Yes + + + Acknowledgment of Policy on Original Data + EJ + + +
+
+
diff --git a/tests/resources/meca/no-institution/decision.pdf b/tests/resources/meca/no-institution/decision.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b95f516f8e6900834f653edb7acdc4d267ac612f GIT binary patch literal 4459 zcmb7I2Uru?77n_um=y#?1?!~=mYA7IqluIdiu3@MfWD9n5J)g5=Bu{WE3g4S zgNCrI5X5Ra)zOiP%f*CNjL)@8jKu-nEkW(hS3`L!o$n0P$~fY|2OzT%j7k>?0XiFj z$~$XDXHPze5K2`fk5Cl@=)MX$KCnHrZ+ijVU#M2&N;#l&@py>{4|I14)9Sz(q=Tza zEtD!E;c19ed(%@DwO>aR@C1px?xV3ABoP{=`Q?0{ znDfZUsu%O0IUIPj`Nq}(URTv@hz>y5N;etGI7p3_$E z_sM$7ZO)3h!hp&px87ICS1}GJPI^|;VhQy4m~W=P_l~i8FZKVt;yhHZrz#GpL1)_N z%fHnX{?xAPW<)WRys*kk{;|&eO-I)ouZTN0-;EfKY@bHU|IV$wb^lBwPHL8yvyER^ zLAOp5C*j>W3&syRhQk)0t{I;<{E30uJb3=N^vn)>e3@}@V_|7Cc4_+23j+Gm4e@?@ zUH)9L)6Y8oI=Q229UjdJ+@$}#$@ds7d>R8Yy}qyPG}C-ch1YbGEdkFdvv@gGe$!tZ zKRL_%MLZ)o=+$u^&vSo9!l{^f^FQ5h-#X(+r)5ceO2x`f@x6rMdhAz2mtW{;Btp8+ zbbSd%n3=FV17T|89VOyf;|)L$B9o5rFc(*el#*EZP0)DUS15z&7~ta!ubI9QS$Ld^ zFO+-J0`bT=$RQO*s$jrrcwNY_rJ)=qpkX#F7~vQOY*`E#0d!B8OA?W@JQ99-5XkSW z5)oNKtWsf=YG$Mqj8tK)2QG<>(k}DWxGV&)2r)uM7%Vsj(EdQ}J0nT>GQ3cLp|)%& z))#H4CT{8fE8LQUmwWRgjpnv?bc{=DSk!Rg(m|*FM*R3_i= zx&5}QT9wkewB|cq3bsIZWZnGJXM*3ZZYr~o4BNuK8I%(oWOHn@LC^5|MwW$cNbE|T z*wVVDpOC~O_@Opb$W}Jb(q;83sV_8LGm`RVUa8K7d z%B@kl!|N-2?M9xhD}MaW_({~Z=N}7tKPA_!sWP8D#WVbf!?n^@9;PeoxMff*e(S7r zENZU1d1(Dx!x0h3S_+Fy=l!|CvUH;{-)w_Pvg^v2=;!lmnv<(r(xPJKgcU3-;0zCF z{p;nM=<*MGQpcx%oxE4wvu@o9b?2puQSI%Q=4^ZH7}S1inbGU0rU~wwXO6hoY2p%X zwJ+P+4B=(@t#!L};CkKxB+=-IuE_YhNyLLq>(*r$Wa!VijV863*|pDgTai@r221Pw z;BV`n*(5KOJ?pLSt?ND3J7pnl@A{$uE@KszzCpZcOUyL0N0~;s>5qc0riO~p?^eBW z+300r?=x<~r<|Uy>NJMnnrxRJC*^hVb8h3NpU=roT|9WPEDb;0JnV4y$%}ukew?0T zA&8s2dhNZ+%JO@+cW3PIJEWrdZVuaZGwVtDuci}TzGwUL3;-_mz%0y$7(M77s`sN= zKq1B4MQLfBl=fa4Cc8gv*P;DQj8`^|Kh>Om0Xo!&ljoleUGn?}{RgShl&(_Q9bj9f zy7c$24^}CrV9(y`+RCh^@){0)BM$G$R0f|g%&e+%oEl?%(sXjQIcPARxUEY!pxegG zP~XbJG`02o5)1bWZ^xAyj=nzOA?@kX^#aSAm$$d81gKr_oL{pZIuunoo*!d!S=IBq zpmOFWc2#EBy3Mxp469;_@0P5wUoix|++f0PRC=<=nCEMk<(Pm1biZqw(}}tnn7^yhx9A1#O$MQ$F4@ z7-K=xS=?N_W@G*KGw4|Yg5ve9I=OJn_tVZ=J{X$+_L}xi@l)Mioq1)FmuhFSvi@P(ew4 zBU*rtRv)UF)qK^FeK8_^tkaDxkI*wLE8LgoDAcRf;r>8v6Jn*UTUTD}jiOYQJV>nE7yUTx z=&{u)v%-7R?`4cD@UtF+*D>O=GtDzcM`WC2`KVjDf{R(B?gqO&TXm;F1wLdawQdMG zbujQuf!&;`m)yg6*RVMc@239ZX439(h}}d>cxD~8>bFyWS178Sj|9KA-za%EW!iFm zn~=Za1c%ytHeLVcp68msjUGe~H(avuRYduyYZRT6Cpz#s)r%+Obz3dvP z;PO!2B_@Htdr=lXnD`?|$>$|xpIDl=YP#{ny$iQCjk+?avDWNkO5$GqGgm0S2ht`) zrFtxItCAO%PonO%sWowOXLKy-oLD>Kvd03~yk7gMBij5&WIk+J^srgSlR?`N)#4LG zTj*ovv#54+M$woC&p@ATJL0cz$@H*ZP0ibWe44`@&!=Yfc7=?(Y~R~q?m4@boZH?p zgl}PCFxGFIqti~XE(N=>Jt73f3i<-`=5|bURTY75SYILgI zTm1%?VY2=ZB?@IDHvNTI3r`&!J}<-&@5Y6z$-3<7$tCI@QKTXIbrGs?5{uCXm1D@r zPgKEb=_!v;K&%EJ+>De!D3A!Oogvc3rvtj5Qj9Al@B$XJxO;Magb-V5<*D@f1XvYd95&#KAZ#0A~Yj9cS7w2rc_C4xyE&T%ra z$f@uIVhO~lni=^kk_ltUBmEyX3wGrXHWv`%5pW}D6b)J;O-<99hX!Q^I7p-gb%7G7 zMi~O^st5$H6v|=$;DEr(5jgPRMK(xZtz#Og@Q5$j`=rQ$+yjMsAP5Qv0UVibF_!UidV4fYOkQOj)vJq|)a}#411)P)U9m z*03FngE@whEi@UbuqWm6VBX^iFn&E{u!D5z8(lxof&?WD7zCgkD&b+x1=uVWg9ReM z01e`N;sSCljbY1#IQdH&g0f+=`xOmi!$W*UV=!UI_9cyBgAC@wYzMs;VY8swzLbT% z|6o}rd(b-&Hse3YvS5Gw)qWTow#Z-7Fk72JGzK>KyqGQPGo95+A?zuXlyACLNPQMXE1 literal 0 HcmV?d00001 diff --git a/tests/resources/meca/no-institution/manifest.xml b/tests/resources/meca/no-institution/manifest.xml new file mode 100644 index 0000000..09bb455 --- /dev/null +++ b/tests/resources/meca/no-institution/manifest.xml @@ -0,0 +1,43 @@ + + + + + This file contains transfer information + + + + This file contains submission metadata + + + + This file contains peer reviews + + + + Decision Letter + + + + Cover Letter + + 0 + + + + Manuscript + + 2 + + + + Response to Reviewer + + 1 + + + + Merged PDF + + + + diff --git a/tests/resources/meca/no-institution/reviews.xml b/tests/resources/meca/no-institution/reviews.xml new file mode 100644 index 0000000..4ca459c --- /dev/null +++ b/tests/resources/meca/no-institution/reviews.xml @@ -0,0 +1,119 @@ + + + + + + + + 15 + 07 + 2019 + + + 26 + 07 + 2019 + + + 25 + 07 + 2019 + + + + + + redacted + + + + + + + + + <b>Significance:</b> + Significance (Required) + + + + Lorem ipsum dolor sit amet. + + + + + <b>How much time do you estimate the authors will need to complete the suggested revisions:</b> + Estimated time to Complete Revisions (Required) + (Decision Recommendation) + + + Cannot tell / Not applicable + + + + + + + + 16 + 07 + 2019 + + + 26 + 07 + 2019 + + + 21 + 12 + 2020 + + + + + + redacted + redacted + redacted + + redacted + + + redacted + + + + + <b>Evidence, reproducibility and clarity:</b> + Evidence, reproducibility and clarity (Required) + + + + Summary: this is a test + + + + + <b>Significance:</b> + Significance (Required) + + + + Signification: also a test + + + + + <b>How much time do you estimate the authors will need to complete the suggested revisions:</b> + Estimated time to Complete Revisions (Required) + (Decision Recommendation) + + + Between 3 and 6 months + + + + + + diff --git a/tests/resources/meca/no-institution/transfer.xml b/tests/resources/meca/no-institution/transfer.xml new file mode 100644 index 0000000..ab5b8f8 --- /dev/null +++ b/tests/resources/meca/no-institution/transfer.xml @@ -0,0 +1,57 @@ + + + + + + eJournalPress + + + Support + eJournalPress + + + + + + + Review Commons - TEST + reviewcommonstest + + + + + + + + + + + + + + + + + + + + + + + + eLife Test + elifetest + + + + + + + + + + + + + + diff --git a/tests/test_article.py b/tests/test_article.py index 5997b86..9297e81 100644 --- a/tests/test_article.py +++ b/tests/test_article.py @@ -133,9 +133,9 @@ def assertArticlesEqual( ] ARTICLES = { - "no-author-reply": Article( - doi="10.1101/no-author-reply.123.456.7890", - title="An article without author reply.", + "multiple-revision-rounds": Article( + doi="10.1101/multiple-revision-rounds.123.456.7890", + title="An article with multiple revision rounds.", review_process=[ RevisionRound( reviews=[ @@ -143,7 +143,7 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Consectetur adipiscing elit.", + "Significance (Required)": "Lorem ipsum dolor sit amet.", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, @@ -152,7 +152,7 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Sed do eiusmod tempor incididunt ut labore et dolore.", + "Significance (Required)": "Consectetur adipiscing elit.", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, @@ -161,13 +161,47 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Cras adipiscing enim eu turpis egestas pretium aenean.", + "Significance (Required)": "Sed do eiusmod tempor incididunt ut labore.", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, ), ], - author_reply=None, + author_reply=AuthorReply( + authors=[ + Author( + given_name="Jane", + surname="Doe", + orcid=None, + is_corresponding_author=True, + institutions=[ + Institution( + name="EMBL", + department="Medicinal Chemistry", + city="Heidelberg", + country="Germany", + ) + ], + ), + Author( + given_name="John", + surname="Doe", + orcid=None, + is_corresponding_author=False, + institutions=[ + Institution( + name="EMBL", + department="Medicinal Chemistry", + city="Heidelberg", + country="Germany", + ) + ], + ), + ], + text={}, + doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, + publication_date=PUBLICATION_DATE, + ), ), RevisionRound( reviews=[ @@ -186,9 +220,9 @@ def assertArticlesEqual( ), ], ), - "multiple-revision-rounds": Article( - doi="10.1101/multiple-revision-rounds.123.456.7890", - title="An article with multiple revision rounds.", + "no-author-reply": Article( + doi="10.1101/no-author-reply.123.456.7890", + title="An article without author reply.", review_process=[ RevisionRound( reviews=[ @@ -196,7 +230,7 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Lorem ipsum dolor sit amet.", + "Significance (Required)": "Consectetur adipiscing elit.", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, @@ -205,7 +239,7 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Consectetur adipiscing elit.", + "Significance (Required)": "Sed do eiusmod tempor incididunt ut labore et dolore.", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, @@ -214,7 +248,52 @@ def assertArticlesEqual( authors=[], text={ "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Significance (Required)": "Sed do eiusmod tempor incididunt ut labore.", + "Significance (Required)": "Cras adipiscing enim eu turpis egestas pretium aenean.", + }, + doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, + publication_date=PUBLICATION_DATE, + ), + ], + author_reply=None, + ), + RevisionRound( + reviews=[ + Review( + authors=[], + text={ + "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", + "Evidence, reproducibility and clarity (Required)": "This is sample of evidence answer", + "Significance (Required)": "This is a sample of significance", + }, + doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, + publication_date=PUBLICATION_DATE, + ), + ], + author_reply=None, + ), + ], + ), + "no-institution": Article( + doi="10.1101/single-revision-round.123.456.7890", + title="An article with a single revision round.", + review_process=[ + RevisionRound( + reviews=[ + Review( + authors=[], + text={ + "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", + "Significance (Required)": "Lorem ipsum dolor sit amet.", + }, + doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, + publication_date=PUBLICATION_DATE, + ), + Review( + authors=[], + text={ + "Estimated time to Complete Revisions (Required)": "Between 3 and 6 months", + "Evidence, reproducibility and clarity (Required)": "Summary: this is a test", + "Significance (Required)": "Signification: also a test", }, doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, publication_date=PUBLICATION_DATE, @@ -225,14 +304,17 @@ def assertArticlesEqual( Author( given_name="Jane", surname="Doe", - orcid=None, + orcid=Orcid( + id="https://orcid.org/0000-0012-3456-7890", + is_authenticated=True, + ), is_corresponding_author=True, institutions=[ Institution( - name="EMBL", - department="Medicinal Chemistry", - city="Heidelberg", - country="Germany", + name="/", + department=None, + city="/", + country="/", ) ], ), @@ -243,10 +325,10 @@ def assertArticlesEqual( is_corresponding_author=False, institutions=[ Institution( - name="EMBL", - department="Medicinal Chemistry", - city="Heidelberg", - country="Germany", + name="/", + department=None, + city="/", + country=None, ) ], ), @@ -256,21 +338,6 @@ def assertArticlesEqual( publication_date=PUBLICATION_DATE, ), ), - RevisionRound( - reviews=[ - Review( - authors=[], - text={ - "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", - "Evidence, reproducibility and clarity (Required)": "This is sample of evidence answer", - "Significance (Required)": "This is a sample of significance", - }, - doi=DOI_FOR_REVIEWS_AND_AUTHOR_REPLIES, - publication_date=PUBLICATION_DATE, - ), - ], - author_reply=None, - ), ], ), "single-revision-round": Article( diff --git a/tests/test_batch.py b/tests/test_batch.py index 9a1a680..1f20bb8 100644 --- a/tests/test_batch.py +++ b/tests/test_batch.py @@ -35,6 +35,7 @@ def setUp(self) -> None: ParsedFile.Valid: [ "multiple-revision-rounds", "no-author-reply", + "no-institution", "single-revision-round", ], } @@ -111,6 +112,7 @@ def setUp(self) -> None: input_files = [ "multiple-revision-rounds", "no-author-reply", + # "no-institution", "single-revision-round", ] parsed_files = [ @@ -234,7 +236,7 @@ def test_depositing_parsed_files( expected_deposition_attempts, actual_deposition_attempts ) self.assertEqual(self.expected_articles, actual_articles) - self.assertEqual(3, len(deposit_file_mock.mock_calls)) + self.assertEqual(len(self.parsed_files), len(deposit_file_mock.mock_calls)) self.assert_deposition_attempts_in_db(expected_deposition_attempts) def test_deposition_fails( @@ -257,7 +259,7 @@ def test_deposition_fails( ) self.assertEqual([], actual_articles) self.assert_deposition_attempts_in_db(expected_deposition_attempts) - self.assertEqual(3, len(deposit_file_mock.mock_calls)) + self.assertEqual(len(self.parsed_files), len(deposit_file_mock.mock_calls)) @patch( "mecadoi.batch.generate_peer_review_deposition", side_effect=Exception("Boom!") diff --git a/tests/test_cli.py b/tests/test_cli.py index 9d18e75..e56be48 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -172,7 +172,7 @@ def test_batch_deposit( self.assert_deposition_attempts_in_db(self.expected_deposition_attempts()) self.assert_articles_in_output_dir(actual_output["id"], self.expected_articles) - self.assertEqual(3, len(deposit_file_mock.mock_calls)) + self.assertEqual(len(self.parsed_files), len(deposit_file_mock.mock_calls)) def test_batch_deposit_retry( self, diff --git a/tests/test_generate_peer_review_deposition.py b/tests/test_generate_peer_review_deposition.py index ad40e0e..1e2bd9f 100644 --- a/tests/test_generate_peer_review_deposition.py +++ b/tests/test_generate_peer_review_deposition.py @@ -11,6 +11,7 @@ def setUp(self) -> None: self.fixtures = [ "multiple-revision-rounds", "no-author-reply", + "no-institution", "single-revision-round", ] self.publication_date = datetime(2020, 10, 10) diff --git a/tests/test_meca.py b/tests/test_meca.py index 28e45a4..c833048 100644 --- a/tests/test_meca.py +++ b/tests/test_meca.py @@ -45,6 +45,123 @@ def assertArticlesEqual( MANUSCRIPTS = { + "no-institution": Manuscript( + authors=[ + Author( + given_name="Jane", + surname="Doe", + orcid=Orcid( + id="https://orcid.org/0000-0012-3456-7890", is_authenticated=True + ), + is_corresponding_author=True, + institutions=[ + Institution( + name="/", + department=None, + city="/", + country="/", + ) + ], + ), + Author( + given_name="John", + surname="Doe", + orcid=None, + is_corresponding_author=False, + institutions=[ + Institution( + name="/", + department=None, + city="/", + country=None, + ) + ], + ), + ], + text={ + "abstract": "This article has a single revision round and thus in ...", + }, + doi="10.12345/single-revision-round.1234567890", + preprint_doi="10.1101/single-revision-round.123.456.7890", + journal="Review Commons - TEST", + review_process=[ + RevisionRound( + revision_id="0", + reviews=[ + Review( + authors=[ + Author( + given_name="", + surname="redacted", + orcid=None, + is_corresponding_author=False, + institutions=[], + ), + ], + text={ + "Estimated time to Complete Revisions (Required)": "Cannot tell / Not applicable", + "Significance (Required)": "Lorem ipsum dolor sit amet.", + }, + running_number="1", + ), + Review( + authors=[ + Author( + given_name="redacted", + surname="redacted", + orcid=None, + is_corresponding_author=False, + institutions=[], + ), + ], + text={ + "Estimated time to Complete Revisions (Required)": "Between 3 and 6 months", + "Evidence, reproducibility and clarity (Required)": "Summary: this is a test", + "Significance (Required)": "Signification: also a test", + }, + running_number="2", + ), + ], + author_reply=AuthorReply( + authors=[ + Author( + given_name="Jane", + surname="Doe", + orcid=Orcid( + id="https://orcid.org/0000-0012-3456-7890", + is_authenticated=True, + ), + is_corresponding_author=True, + institutions=[ + Institution( + name="/", + department=None, + city="/", + country="/", + ) + ], + ), + Author( + given_name="John", + surname="Doe", + orcid=None, + is_corresponding_author=False, + institutions=[ + Institution( + name="/", + department=None, + city="/", + country=None, + ) + ], + ), + ], + text={}, + ), + ), + ], + title="An article with a single revision round.", + ), "no-reviews": Manuscript( authors=[ Author(