Skip to content

Commit 687d7c2

Browse files
test(firestore): add cases for set() method
1 parent 7217f57 commit 687d7c2

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

tests/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"apiKey": config('FIREBASE_API_KEY'),
1515
"authDomain": config('FIREBASE_AUTH_DOMAIN'),
1616
"databaseURL": config('FIREBASE_DATABASE_URL'),
17+
"projectId": config('FIREBASE_PROJECT_ID'),
1718
"storageBucket": config('FIREBASE_STORAGE_BUCKET'),
1819
}
1920

tests/conftest.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import pytest
88

9-
from tests.tools import make_auth, make_db, make_storage
9+
from tests.tools import make_auth, make_db, make_ds, make_storage
1010
from tests.config import TEST_USER_EMAIL, TEST_USER_PASSWORD
1111

1212

@@ -35,6 +35,16 @@ def email():
3535
return TEST_USER_EMAIL
3636

3737

38+
@pytest.fixture(scope='session')
39+
def ds():
40+
return make_ds()
41+
42+
43+
@pytest.fixture(scope='session')
44+
def ds_admin():
45+
return make_ds(True)
46+
47+
3848
@pytest.fixture(scope='session')
3949
def password():
4050
return TEST_USER_PASSWORD

tests/test_firestore.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
2+
# Copyright (c) 2022 Asif Arman Rahman
3+
# Licensed under MIT (https://github.com/AsifArmanRahman/firebase/blob/main/LICENSE)
4+
5+
# --------------------------------------------------------------------------------------
6+
7+
8+
class TestFirestoreAdmin:
9+
movies = {
10+
'name': 'Iron Man',
11+
'lead': {'name': 'Robert Downey Jr.'},
12+
'released': False,
13+
'year': 2008,
14+
'rating': 7.9,
15+
'prequel': None,
16+
'cast': ['Jon Favreau', 'Gwyneth Paltrow', 'Jeff Bridges', b'J.A.R.V.I.S', 'Terrence Howard']
17+
}
18+
19+
def test_manual_doc_set(self, ds_admin):
20+
assert ds_admin.collection('Marvels').document('Movies').set(self.__class__.movies) is None
21+
22+
23+
class TestFirestoreAuth:
24+
movies = {
25+
'name': 'Dr. Strange',
26+
'lead': {'name': 'Benedict Cumberbatch'},
27+
'released': False,
28+
'year': 2016,
29+
'rating': 7.5,
30+
'prequel': None,
31+
'cast': ['Tilda Swinton', 'Rachel McAdams', 'Mads Mikkelsen', 'Chiwetel Ejiofor', 'Benedict Wong']
32+
}
33+
user = None
34+
35+
def test_create_test_user(self, auth):
36+
user = auth.sign_in_anonymous()
37+
self.__class__.user = user
38+
assert user
39+
assert user.get('idToken')
40+
41+
def test_manual_doc_set(self, ds):
42+
assert ds.collection('Marvels').document('Movies').set(self.__class__.movies, token=self.__class__.user.get('idToken')) is None
43+
44+
def test_delete_test_user(self, auth):
45+
assert auth.delete_user_account(self.__class__.user.get('idToken'))
46+
47+
48+
class TestFirestore:
49+
series = {
50+
'name': 'Moon Knight',
51+
'lead': {'name': 'Oscar Issac'},
52+
'released': False,
53+
'year': 2022,
54+
'rating': 7.4,
55+
'prequel': None,
56+
'cast': ['Ethan Hawke', 'May Calamawy', 'F. Murray Abraham']
57+
}
58+
59+
def test_manual_doc_set(self, ds):
60+
assert ds.collection('Marvels').document('Series').set(self.__class__.series) is None

tests/tools.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ def make_db(service_account=False):
3131
return initialize_app(c).database()
3232

3333

34+
def make_ds(service_account=False):
35+
if service_account:
36+
c = config.SERVICE_CONFIG
37+
else:
38+
c = config.SIMPLE_CONFIG
39+
40+
return initialize_app(c).firestore()
41+
42+
3443
def make_storage(service_account=False):
3544
if service_account:
3645
c = config.SERVICE_CONFIG

0 commit comments

Comments
 (0)