1
- import io
2
1
import datetime as dt
3
2
4
3
import pytest
5
- from openpyxl .reader .excel import load_workbook
6
4
from rest_framework .test import APIClient
7
5
from time_machine import TimeMachineFixture
8
6
9
7
from tests .testapp .models import ExampleModel , AllFieldsModel , Tag
10
8
11
-
12
9
pytestmark = pytest .mark .django_db
13
10
14
11
@@ -17,7 +14,7 @@ def api_client():
17
14
return APIClient ()
18
15
19
16
20
- def test_simple_viewset_model (api_client ):
17
+ def test_simple_viewset_model (api_client , workbook_reader ):
21
18
ExampleModel .objects .create (title = "test 1" , description = "This is a test" )
22
19
ExampleModel .objects .create (title = "test 2" , description = "Another test" )
23
20
ExampleModel .objects .create (title = "test 3" , description = "Testing this out" )
@@ -33,11 +30,10 @@ def test_simple_viewset_model(api_client):
33
30
response .headers ["content-disposition" ] == "attachment; filename=my_export.xlsx"
34
31
)
35
32
36
- workbook_buffer = io .BytesIO (response .content )
37
- workbook = load_workbook (workbook_buffer , read_only = True )
33
+ wb = workbook_reader (response .content )
38
34
39
- assert len (workbook .worksheets ) == 1
40
- sheet = workbook .worksheets [0 ]
35
+ assert len (wb .worksheets ) == 1
36
+ sheet = wb .worksheets [0 ]
41
37
rows = list (sheet .rows )
42
38
assert len (rows ) == 4
43
39
r0 , r1 , r2 , r3 = rows
@@ -59,7 +55,9 @@ def test_simple_viewset_model(api_client):
59
55
assert r3 [1 ].value == "Testing this out"
60
56
61
57
62
- def test_all_fields_viewset (api_client , time_machine : TimeMachineFixture ):
58
+ def test_all_fields_viewset (
59
+ api_client , time_machine : TimeMachineFixture , workbook_reader
60
+ ):
63
61
time_machine .move_to (dt .datetime (2023 , 9 , 10 , 15 , 44 , 37 ))
64
62
instance = AllFieldsModel .objects .create (title = "Hello" , age = 36 , is_active = True )
65
63
instance .tags .set (
@@ -71,9 +69,8 @@ def test_all_fields_viewset(api_client, time_machine: TimeMachineFixture):
71
69
response = api_client .get ("/all-fields/" )
72
70
assert response .status_code == 200
73
71
74
- workbook_buffer = io .BytesIO (response .content )
75
- workbook = load_workbook (workbook_buffer , read_only = True )
76
- sheet = workbook .worksheets [0 ]
72
+ wb = workbook_reader (response .content )
73
+ sheet = wb .worksheets [0 ]
77
74
rows = list (sheet .rows )
78
75
assert len (rows ) == 2
79
76
r0 , r1 = rows
0 commit comments