From 54213ba4d4613c2375150083a702e8e5f2a2be5d Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Sat, 10 Jul 2021 16:43:33 +0200 Subject: [PATCH] Implement add book test --- manuels/fixtures/editors.yaml | 96 +++ manuels/fixtures/levels.yaml | 161 +++++ .../manuels/list_books_supplies.html | 4 +- .../cassettes/add_book_with_decitre.yaml | 586 ++++++++++++++++++ manuels/tests/test_add_book.py | 82 ++- poetry.lock | 129 +++- pyproject.toml | 1 + 7 files changed, 1045 insertions(+), 14 deletions(-) create mode 100644 manuels/fixtures/editors.yaml create mode 100644 manuels/fixtures/levels.yaml create mode 100644 manuels/tests/cassettes/add_book_with_decitre.yaml diff --git a/manuels/fixtures/editors.yaml b/manuels/fixtures/editors.yaml new file mode 100644 index 0000000..5989585 --- /dev/null +++ b/manuels/fixtures/editors.yaml @@ -0,0 +1,96 @@ +- model: manuels.editor + pk: 1 + fields: + created_at: 2018-05-21 23:52:04.625313+00:00 + updated_at: 2018-05-21 23:52:04.625339+00:00 + name: Nathan Technique +- model: manuels.editor + pk: 2 + fields: + created_at: 2018-05-23 21:30:36.614547+00:00 + updated_at: 2018-05-23 21:30:36.614582+00:00 + name: Foucher +- model: manuels.editor + pk: 3 + fields: + created_at: 2018-05-23 21:30:53.729217+00:00 + updated_at: 2018-05-23 21:30:53.729244+00:00 + name: Delagrave +- model: manuels.editor + pk: 4 + fields: + created_at: 2018-05-24 07:42:36.637920+00:00 + updated_at: 2020-06-30 11:05:21.154628+00:00 + name: BPI (Editions) +- model: manuels.editor + pk: 5 + fields: + created_at: 2018-05-24 07:43:36.023261+00:00 + updated_at: 2018-05-24 07:43:36.023288+00:00 + name: Delagrave Lanore +- model: manuels.editor + pk: 6 + fields: + created_at: 2018-05-24 07:46:42.224916+00:00 + updated_at: 2018-05-24 07:46:42.224969+00:00 + name: Bertrand-Lacoste +- model: manuels.editor + pk: 7 + fields: + created_at: 2018-05-24 07:47:02.123413+00:00 + updated_at: 2018-05-24 07:47:02.123470+00:00 + name: Livre de Poche +- model: manuels.editor + pk: 8 + fields: + created_at: 2018-05-24 07:47:27.845201+00:00 + updated_at: 2018-05-24 07:49:43.457058+00:00 + name: Le Génie Editeur +- model: manuels.editor + pk: 9 + fields: + created_at: 2018-05-24 07:50:08.412072+00:00 + updated_at: 2018-05-24 07:50:08.412099+00:00 + name: Librio +- model: manuels.editor + pk: 10 + fields: + created_at: 2018-05-24 07:50:15.312354+00:00 + updated_at: 2018-05-24 07:50:15.312401+00:00 + name: Belin +- model: manuels.editor + pk: 11 + fields: + created_at: 2018-05-24 07:50:29.376570+00:00 + updated_at: 2018-05-24 07:50:29.376595+00:00 + name: LT Jacques Lanore +- model: manuels.editor + pk: 12 + fields: + created_at: 2018-05-24 08:41:15.179008+00:00 + updated_at: 2018-05-24 08:41:15.179039+00:00 + name: Hachette Education +- model: manuels.editor + pk: 13 + fields: + created_at: 2018-05-24 08:41:23.198186+00:00 + updated_at: 2018-05-24 08:41:23.198211+00:00 + name: Hachette Technique +- model: manuels.editor + pk: 14 + fields: + created_at: 2019-04-06 15:56:17.391985+00:00 + updated_at: 2019-04-06 15:56:17.392024+00:00 + name: AUTRE +- model: manuels.editor + pk: 15 + fields: + created_at: 2020-06-30 11:05:52.948953+00:00 + updated_at: 2020-06-30 11:05:52.948979+00:00 + name: BPI +- model: manuels.editor + pk: 16 + fields: + created_at: 2020-06-30 11:07:41.171551+00:00 + updated_at: 2020-06-30 11:07:41.171584+00:00 + name: Nathan diff --git a/manuels/fixtures/levels.yaml b/manuels/fixtures/levels.yaml new file mode 100644 index 0000000..1c3cc8c --- /dev/null +++ b/manuels/fixtures/levels.yaml @@ -0,0 +1,161 @@ +- model: manuels.level + pk: 1 + fields: + created_at: 2018-05-21 23:51:32.192659+00:00 + updated_at: 2021-06-10 14:49:31.808889+00:00 + name: TEPC + order: 60 +- model: manuels.level + pk: 2 + fields: + created_at: 2018-05-21 23:51:32.192659+00:00 + updated_at: 2021-05-09 15:46:27.101295+00:00 + name: 1EPC + order: 50 +- model: manuels.level + pk: 3 + fields: + created_at: 2018-05-22 09:35:47.899146+00:00 + updated_at: 2019-05-28 08:22:28.856626+00:00 + name: 1HCR + order: 70 +- model: manuels.level + pk: 4 + fields: + created_at: 2018-05-22 09:36:20.462287+00:00 + updated_at: 2019-05-28 08:22:28.840231+00:00 + name: TC + order: 40 +- model: manuels.level + pk: 6 + fields: + created_at: 2018-05-22 09:40:05.347592+00:00 + updated_at: 2019-05-28 08:22:28.861702+00:00 + name: THCR + order: 80 +- model: manuels.level + pk: 10 + fields: + created_at: 2018-05-24 07:21:03.328756+00:00 + updated_at: 2021-06-10 15:00:11.767805+00:00 + name: 2BR (FMHR) + order: 100 +- model: manuels.level + pk: 13 + fields: + created_at: 2018-05-24 07:23:10.806269+00:00 + updated_at: 2019-05-28 08:22:28.830441+00:00 + name: TAPH + order: 20 +- model: manuels.level + pk: 14 + fields: + created_at: 2018-05-24 07:30:03.322522+00:00 + updated_at: 2021-06-10 15:01:09.966530+00:00 + name: 1BR (FMHR) + order: 120 +- model: manuels.level + pk: 16 + fields: + created_at: 2018-05-24 07:31:24.408312+00:00 + updated_at: 2019-05-28 08:22:28.890927+00:00 + name: TBR Cuisine + order: 140 +- model: manuels.level + pk: 17 + fields: + created_at: 2018-05-24 07:31:32.980401+00:00 + updated_at: 2019-05-28 08:22:28.896019+00:00 + name: TBR Service + order: 150 +- model: manuels.level + pk: 18 + fields: + created_at: 2018-05-24 07:33:31.956769+00:00 + updated_at: 2019-05-28 08:22:28.901015+00:00 + name: 2BHPS + order: 160 +- model: manuels.level + pk: 19 + fields: + created_at: 2018-05-24 07:33:38.415125+00:00 + updated_at: 2019-05-28 08:22:28.905544+00:00 + name: 1BHPS + order: 170 +- model: manuels.level + pk: 20 + fields: + created_at: 2018-05-24 07:34:31.289711+00:00 + updated_at: 2019-05-28 08:22:28.910135+00:00 + name: TBHPS + order: 180 +- model: manuels.level + pk: 22 + fields: + created_at: 2018-05-24 07:36:38.466515+00:00 + updated_at: 2019-05-28 09:11:16.516466+00:00 + name: FCCDR + order: 210 +- model: manuels.level + pk: 24 + fields: + created_at: 2018-05-24 07:37:17.698638+00:00 + updated_at: 2019-05-28 09:14:54.078509+00:00 + name: PCR/APH + order: 225 +- model: manuels.level + pk: 26 + fields: + created_at: 2019-05-28 08:08:16.829760+00:00 + updated_at: 2019-05-28 09:14:11.945424+00:00 + name: BTS MSE1 + order: 250 +- model: manuels.level + pk: 27 + fields: + created_at: 2019-05-28 08:08:24.160816+00:00 + updated_at: 2019-05-28 09:14:11.953016+00:00 + name: BTS MSE2 + order: 260 +- model: manuels.level + pk: 28 + fields: + created_at: 2019-05-28 09:11:52.129850+00:00 + updated_at: 2019-05-28 09:12:37.745160+00:00 + name: CS1 + order: 220 +- model: manuels.level + pk: 29 + fields: + created_at: 2019-05-28 09:13:22.829655+00:00 + updated_at: 2019-07-02 08:48:52.770113+00:00 + name: 1ACR + order: 231 +- model: manuels.level + pk: 30 + fields: + created_at: 2019-05-28 09:13:29.936347+00:00 + updated_at: 2019-07-02 08:48:52.779779+00:00 + name: TACR + order: 241 +- model: manuels.level + pk: 31 + fields: + created_at: 2021-05-09 15:46:45.283121+00:00 + updated_at: 2021-05-09 15:46:45.283173+00:00 + name: 3e Prépa Métiers + order: 0 +- model: manuels.level + pk: 32 + fields: + created_at: 2021-05-09 15:47:10.620285+00:00 + updated_at: 2021-05-09 15:47:21.317562+00:00 + name: 1 APH + order: 10 +- model: manuels.level + pk: 33 + fields: + created_at: 2021-05-09 15:48:31.353920+00:00 + updated_at: 2021-05-09 15:48:31.353972+00:00 + name: 1C + order: 30 diff --git a/manuels/templates/manuels/list_books_supplies.html b/manuels/templates/manuels/list_books_supplies.html index c9abe75..6ecbbbd 100644 --- a/manuels/templates/manuels/list_books_supplies.html +++ b/manuels/templates/manuels/list_books_supplies.html @@ -33,7 +33,9 @@

Liste des livres demandés {% if not teacher.has_confirmed_list %} - + Ajouter un livre {% endif %} diff --git a/manuels/tests/cassettes/add_book_with_decitre.yaml b/manuels/tests/cassettes/add_book_with_decitre.yaml new file mode 100644 index 0000000..dc304f7 --- /dev/null +++ b/manuels/tests/cassettes/add_book_with_decitre.yaml @@ -0,0 +1,586 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.25.1 + method: GET + uri: https://www.decitre.fr/livres/9782216157396.html + response: + body: + string: !!binary | + H4sIAAAAAAAAAwMAAAAAAAAAAAA= + headers: + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Length: + - '20' + Content-Type: + - text/html; charset=UTF-8 + Date: + - Sat, 10 Jul 2021 14:38:39 GMT + Keep-Alive: + - timeout=10 + Location: + - https://www.decitre.fr/livres/francais-cap-les-nouveaux-cahiers-9782216157396.html + Server: + - nginx + Vary: + - Accept-Encoding + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.25.1 + method: GET + uri: https://www.decitre.fr/livres/francais-cap-les-nouveaux-cahiers-9782216157396.html + response: + body: + string: !!binary | + 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 + headers: + Accept-Ranges: + - bytes + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Length: + - '28668' + Content-Type: + - text/html; charset=UTF-8 + Date: + - Sat, 10 Jul 2021 14:38:39 GMT + Keep-Alive: + - timeout=10 + Last-Modified: + - Sat, 10 Jul 2021 03:35:55 GMT + Server: + - nginx + Vary: + - Accept-Encoding + X-Page: + - product + status: + code: 200 + message: OK +version: 1 diff --git a/manuels/tests/test_add_book.py b/manuels/tests/test_add_book.py index e3b8842..520b16f 100644 --- a/manuels/tests/test_add_book.py +++ b/manuels/tests/test_add_book.py @@ -1,17 +1,75 @@ +from pathlib import Path + +import vcr +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions +from selenium.webdriver.support.wait import WebDriverWait + +from manuels.models import Book, Editor from manuels.tests.selenium import TeacherSeleniumTestCase class AddBookTestCase(TeacherSeleniumTestCase): + fixtures = ["editors", "levels"] + + @vcr.use_cassette( + str((Path(__file__).parent / "cassettes/add_book_with_decitre.yaml").resolve()), + ignore_localhost=True, + ) def test_add_book_with_decitre(self): - # empty cache - # use vcrpy to reproduce decitre call on a known book - # Click on add book button - # select level - # fill discipline - # fill ISBN - # click on "fill with decitre" - # check info is filled - # check values, especially price - # finish filling form - # check book is created - assert False + field = "Français" + isbn = "978-2-216-15739-6" + title = "Français CAP Les nouveaux cahiers" + authors = ( + "Michèle Sendre-Haïdar,Nathalie Leduc,Florian Seuzaret,Emmanuelle Goulard" + ) + price = 17.5 + editor = Editor.objects.get(name__iexact="Foucher") + + self.get(self.teacher.get_absolute_url()) + self.selenium.find_element_by_id("add-book").click() + self.selenium.find_element_by_id("id_levels").send_keys("TEPC") + self.selenium.find_element_by_id("id_field").send_keys(field) + self.selenium.find_element_by_id("id_isbn").send_keys(isbn) + self.selenium.find_element_by_id("id_isbn_button").click() + + self._wait_for_elements_by_css_selector("#id_isbn.is-valid") + self.assert_input_value("id_title", title) + self.assert_input_value("id_publication_year", "2020") + self.assert_input_value("id_editor", editor.pk) + self.assert_input_value("id_authors", authors) + self.assert_input_value("id_price", str(price)) + + self.selenium.find_element_by_id("id_previously_acquired").send_keys("Non") + self.selenium.find_element_by_id("id_consumable").send_keys("Non") + self.selenium.find_element_by_css_selector("[for=id_add_another]").click() + self.selenium.find_element_by_css_selector(".btn[type=submit]").click() + + expected_url = self.teacher.get_absolute_url() + expected_url = self.get_full_url(expected_url) + assert self.selenium.current_url == expected_url + + book = Book.objects.first() + assert book.teacher == self.teacher + assert book.isbn == isbn + assert book.field == field + assert book.title == title + assert book.publication_year == 2020 + assert book.editor == editor + assert book.authors == authors + assert book.previously_acquired is False + assert book.consumable is False + + def assert_input_value(self, input_id, expected_value): + assert self.selenium.find_element_by_id(input_id).get_attribute("value") == str( + expected_value + ) + + def _wait_for_elements_by_css_selector(self, css_selector, wait_time=5): + wait = WebDriverWait(self.selenium, wait_time) + markers = wait.until( + expected_conditions.presence_of_all_elements_located( + (By.CSS_SELECTOR, css_selector) + ) + ) + return markers diff --git a/poetry.lock b/poetry.lock index 9d3413a..e9a7840 100644 --- a/poetry.lock +++ b/poetry.lock @@ -278,6 +278,14 @@ python-versions = "*" [package.dependencies] django = ">=2.2" +[[package]] +name = "multidict" +version = "5.1.0" +description = "multidict implementation" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "nodeenv" version = "1.6.0" @@ -545,6 +553,20 @@ brotli = ["brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "vcrpy" +version = "4.1.1" +description = "Automatically mock your HTTP interactions to simplify and speed up testing" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +PyYAML = "*" +six = ">=1.5" +wrapt = "*" +yarl = {version = "*", markers = "python_version >= \"3.6\""} + [[package]] name = "virtualenv" version = "20.4.7" @@ -574,6 +596,14 @@ python-versions = ">=3.5, <4" [package.extras] brotli = ["brotli"] +[[package]] +name = "wrapt" +version = "1.12.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "xlrd" version = "2.0.1" @@ -595,10 +625,22 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "yarl" +version = "1.6.3" +description = "Yet another URL library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "337fda673a0bc3b5148651917cc641f5d6ce56b39af26d1fcd53624f02feff8c" +content-hash = "a297139d52d31a113cebd44e779dc35d41b8c6fa42213c13c5d52b3593563d12" [metadata.files] appdirs = [ @@ -709,6 +751,45 @@ model-bakery = [ {file = "model_bakery-1.3.2-py2.py3-none-any.whl", hash = "sha256:bebde0d4f895f55a8cf26706275a238fecdf0fddd227214675b7351598c99ce5"}, {file = "model_bakery-1.3.2.tar.gz", hash = "sha256:7e06071c7ba5c58f9c1d7245b4b80cc5240806f30c4561f5c04a652d67626725"}, ] +multidict = [ + {file = "multidict-5.1.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:b7993704f1a4b204e71debe6095150d43b2ee6150fa4f44d6d966ec356a8d61f"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:9dd6e9b1a913d096ac95d0399bd737e00f2af1e1594a787e00f7975778c8b2bf"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f21756997ad8ef815d8ef3d34edd98804ab5ea337feedcd62fb52d22bf531281"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab820665e67373de5802acae069a6a05567ae234ddb129f31d290fc3d1aa56d"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:9436dc58c123f07b230383083855593550c4d301d2532045a17ccf6eca505f6d"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:830f57206cc96ed0ccf68304141fec9481a096c4d2e2831f311bde1c404401da"}, + {file = "multidict-5.1.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:2e68965192c4ea61fff1b81c14ff712fc7dc15d2bd120602e4a3494ea6584224"}, + {file = "multidict-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:2f1a132f1c88724674271d636e6b7351477c27722f2ed789f719f9e3545a3d26"}, + {file = "multidict-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3a4f32116f8f72ecf2a29dabfb27b23ab7cdc0ba807e8459e59a93a9be9506f6"}, + {file = "multidict-5.1.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:46c73e09ad374a6d876c599f2328161bcd95e280f84d2060cf57991dec5cfe76"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:018132dbd8688c7a69ad89c4a3f39ea2f9f33302ebe567a879da8f4ca73f0d0a"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:4b186eb7d6ae7c06eb4392411189469e6a820da81447f46c0072a41c748ab73f"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3a041b76d13706b7fff23b9fc83117c7b8fe8d5fe9e6be45eee72b9baa75f348"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:051012ccee979b2b06be928a6150d237aec75dd6bf2d1eeeb190baf2b05abc93"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:6a4d5ce640e37b0efcc8441caeea8f43a06addace2335bd11151bc02d2ee31f9"}, + {file = "multidict-5.1.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:5cf3443199b83ed9e955f511b5b241fd3ae004e3cb81c58ec10f4fe47c7dce37"}, + {file = "multidict-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:f200755768dc19c6f4e2b672421e0ebb3dd54c38d5a4f262b872d8cfcc9e93b5"}, + {file = "multidict-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:05c20b68e512166fddba59a918773ba002fdd77800cad9f55b59790030bab632"}, + {file = "multidict-5.1.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:54fd1e83a184e19c598d5e70ba508196fd0bbdd676ce159feb412a4a6664f952"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:0e3c84e6c67eba89c2dbcee08504ba8644ab4284863452450520dad8f1e89b79"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:dc862056f76443a0db4509116c5cd480fe1b6a2d45512a653f9a855cc0517456"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:0e929169f9c090dae0646a011c8b058e5e5fb391466016b39d21745b48817fd7"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:d81eddcb12d608cc08081fa88d046c78afb1bf8107e6feab5d43503fea74a635"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:585fd452dd7782130d112f7ddf3473ffdd521414674c33876187e101b588738a"}, + {file = "multidict-5.1.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:37e5438e1c78931df5d3c0c78ae049092877e5e9c02dd1ff5abb9cf27a5914ea"}, + {file = "multidict-5.1.0-cp38-cp38-win32.whl", hash = "sha256:07b42215124aedecc6083f1ce6b7e5ec5b50047afa701f3442054373a6deb656"}, + {file = "multidict-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:929006d3c2d923788ba153ad0de8ed2e5ed39fdbe8e7be21e2f22ed06c6783d3"}, + {file = "multidict-5.1.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b797515be8743b771aa868f83563f789bbd4b236659ba52243b735d80b29ed93"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d5c65bdf4484872c4af3150aeebe101ba560dcfb34488d9a8ff8dbcd21079647"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b47a43177a5e65b771b80db71e7be76c0ba23cc8aa73eeeb089ed5219cdbe27d"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:806068d4f86cb06af37cd65821554f98240a19ce646d3cd24e1c33587f313eb8"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:46dd362c2f045095c920162e9307de5ffd0a1bfbba0a6e990b344366f55a30c1"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:ace010325c787c378afd7f7c1ac66b26313b3344628652eacd149bdd23c68841"}, + {file = "multidict-5.1.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:ecc771ab628ea281517e24fd2c52e8f31c41e66652d07599ad8818abaad38cda"}, + {file = "multidict-5.1.0-cp39-cp39-win32.whl", hash = "sha256:fc13a9524bc18b6fb6e0dbec3533ba0496bbed167c56d0aabefd965584557d80"}, + {file = "multidict-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7df80d07818b385f3129180369079bd6934cf70469f99daaebfac89dca288359"}, + {file = "multidict-5.1.0.tar.gz", hash = "sha256:25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5"}, +] nodeenv = [ {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"}, @@ -855,6 +936,10 @@ urllib3 = [ {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"}, {file = "urllib3-1.26.5.tar.gz", hash = "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"}, ] +vcrpy = [ + {file = "vcrpy-4.1.1-py2.py3-none-any.whl", hash = "sha256:12c3fcdae7b88ecf11fc0d3e6d77586549d4575a2ceee18e82eee75c1f626162"}, + {file = "vcrpy-4.1.1.tar.gz", hash = "sha256:57095bf22fc0a2d99ee9674cdafebed0f3ba763018582450706f7d3a74fff599"}, +] virtualenv = [ {file = "virtualenv-20.4.7-py2.py3-none-any.whl", hash = "sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76"}, {file = "virtualenv-20.4.7.tar.gz", hash = "sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467"}, @@ -863,6 +948,9 @@ whitenoise = [ {file = "whitenoise-5.2.0-py2.py3-none-any.whl", hash = "sha256:05d00198c777028d72d8b0bbd234db605ef6d60e9410125124002518a48e515d"}, {file = "whitenoise-5.2.0.tar.gz", hash = "sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7"}, ] +wrapt = [ + {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"}, +] xlrd = [ {file = "xlrd-2.0.1-py2.py3-none-any.whl", hash = "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd"}, {file = "xlrd-2.0.1.tar.gz", hash = "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88"}, @@ -871,3 +959,42 @@ xlwt = [ {file = "xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e"}, {file = "xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88"}, ] +yarl = [ + {file = "yarl-1.6.3-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:0355a701b3998dcd832d0dc47cc5dedf3874f966ac7f870e0f3a6788d802d434"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:bafb450deef6861815ed579c7a6113a879a6ef58aed4c3a4be54400ae8871478"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:547f7665ad50fa8563150ed079f8e805e63dd85def6674c97efd78eed6c224a6"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:63f90b20ca654b3ecc7a8d62c03ffa46999595f0167d6450fa8383bab252987e"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:97b5bdc450d63c3ba30a127d018b866ea94e65655efaf889ebeabc20f7d12406"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:d8d07d102f17b68966e2de0e07bfd6e139c7c02ef06d3a0f8d2f0f055e13bb76"}, + {file = "yarl-1.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:15263c3b0b47968c1d90daa89f21fcc889bb4b1aac5555580d74565de6836366"}, + {file = "yarl-1.6.3-cp36-cp36m-win32.whl", hash = "sha256:b5dfc9a40c198334f4f3f55880ecf910adebdcb2a0b9a9c23c9345faa9185721"}, + {file = "yarl-1.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:b2e9a456c121e26d13c29251f8267541bd75e6a1ccf9e859179701c36a078643"}, + {file = "yarl-1.6.3-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:ce3beb46a72d9f2190f9e1027886bfc513702d748047b548b05dab7dfb584d2e"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2ce4c621d21326a4a5500c25031e102af589edb50c09b321049e388b3934eec3"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d26608cf178efb8faa5ff0f2d2e77c208f471c5a3709e577a7b3fd0445703ac8"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:4c5bcfc3ed226bf6419f7a33982fb4b8ec2e45785a0561eb99274ebbf09fdd6a"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:4736eaee5626db8d9cda9eb5282028cc834e2aeb194e0d8b50217d707e98bb5c"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:68dc568889b1c13f1e4745c96b931cc94fdd0defe92a72c2b8ce01091b22e35f"}, + {file = "yarl-1.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:7356644cbed76119d0b6bd32ffba704d30d747e0c217109d7979a7bc36c4d970"}, + {file = "yarl-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:00d7ad91b6583602eb9c1d085a2cf281ada267e9a197e8b7cae487dadbfa293e"}, + {file = "yarl-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:69ee97c71fee1f63d04c945f56d5d726483c4762845400a6795a3b75d56b6c50"}, + {file = "yarl-1.6.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e46fba844f4895b36f4c398c5af062a9808d1f26b2999c58909517384d5deda2"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:31ede6e8c4329fb81c86706ba8f6bf661a924b53ba191b27aa5fcee5714d18ec"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fcbb48a93e8699eae920f8d92f7160c03567b421bc17362a9ffbbd706a816f71"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:72a660bdd24497e3e84f5519e57a9ee9220b6f3ac4d45056961bf22838ce20cc"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:324ba3d3c6fee56e2e0b0d09bf5c73824b9f08234339d2b788af65e60040c959"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:e6b5460dc5ad42ad2b36cca524491dfcaffbfd9c8df50508bddc354e787b8dc2"}, + {file = "yarl-1.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:6d6283d8e0631b617edf0fd726353cb76630b83a089a40933043894e7f6721e2"}, + {file = "yarl-1.6.3-cp38-cp38-win32.whl", hash = "sha256:9ede61b0854e267fd565e7527e2f2eb3ef8858b301319be0604177690e1a3896"}, + {file = "yarl-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:f0b059678fd549c66b89bed03efcabb009075bd131c248ecdf087bdb6faba24a"}, + {file = "yarl-1.6.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:329412812ecfc94a57cd37c9d547579510a9e83c516bc069470db5f75684629e"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c49ff66d479d38ab863c50f7bb27dee97c6627c5fe60697de15529da9c3de724"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f040bcc6725c821a4c0665f3aa96a4d0805a7aaf2caf266d256b8ed71b9f041c"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:d5c32c82990e4ac4d8150fd7652b972216b204de4e83a122546dce571c1bdf25"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:d597767fcd2c3dc49d6eea360c458b65643d1e4dbed91361cf5e36e53c1f8c96"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:8aa3decd5e0e852dc68335abf5478a518b41bf2ab2f330fe44916399efedfae0"}, + {file = "yarl-1.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:73494d5b71099ae8cb8754f1df131c11d433b387efab7b51849e7e1e851f07a4"}, + {file = "yarl-1.6.3-cp39-cp39-win32.whl", hash = "sha256:5b883e458058f8d6099e4420f0cc2567989032b5f34b271c0827de9f1079a424"}, + {file = "yarl-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:4953fb0b4fdb7e08b2f3b3be80a00d28c5c8a2056bb066169de00e6501b986b6"}, + {file = "yarl-1.6.3.tar.gz", hash = "sha256:8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10"}, +] diff --git a/pyproject.toml b/pyproject.toml index 96297e1..4279b25 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ pytest-django = "^4.4.0" pytest-html = "^3.1.1" model-bakery = "^1.3.2" selenium = "^3.141.0" +vcrpy = "^4.1.1" [build-system] requires = ["poetry-core>=1.0.0"]