Skip to content

Commit e868ffa

Browse files
committed
Test nested PublishedState
1 parent 6a1713b commit e868ffa

1 file changed

Lines changed: 45 additions & 4 deletions

File tree

sasdata/fair_database/data/test/test_session.py

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
from rest_framework.test import APIClient, APITestCase
44
from rest_framework import status
55

6-
7-
from data.models import DataSet, Session
6+
from data.models import DataSet, PublishedState, Session
87

98

109
class TestSession(APITestCase):
@@ -117,6 +116,7 @@ def test_session_created(self):
117116
}
118117
],
119118
"is_public": True,
119+
"published_state": {"published": False},
120120
}
121121
request = self.auth_client1.post(
122122
"/v1/data/session/", data=session, format="json"
@@ -125,6 +125,7 @@ def test_session_created(self):
125125
new_session = Session.objects.get(id=max_id)
126126
new_dataset = new_session.datasets.get()
127127
new_metadata = new_dataset.metadata
128+
new_published_state = new_session.published_state
128129
self.assertEqual(request.status_code, status.HTTP_201_CREATED)
129130
self.assertEqual(
130131
request.data,
@@ -142,6 +143,7 @@ def test_session_created(self):
142143
self.assertEqual(new_session.current_user, self.user1)
143144
self.assertEqual(new_dataset.current_user, self.user1)
144145
self.assertTrue(all([new_session.is_public, new_dataset.is_public]))
146+
self.assertFalse(new_published_state.published)
145147
new_session.delete()
146148

147149
# Test creating a private session
@@ -303,6 +305,12 @@ def setUpTestData(cls):
303305
cls.unowned_dataset = DataSet.objects.create(
304306
id=3, is_public=True, name="Unowned Dataset", session=cls.unowned_session
305307
)
308+
cls.private_published_state = PublishedState.objects.create(
309+
id=2,
310+
session=cls.private_session,
311+
published=False,
312+
doi="http://localhost:8000/v1/data/session/2/",
313+
)
306314
cls.auth_client1 = APIClient()
307315
cls.auth_client2 = APIClient()
308316
cls.auth_client1.force_authenticate(cls.user1)
@@ -320,7 +328,6 @@ def test_get_public_session(self):
320328
"users": [],
321329
"is_public": True,
322330
"title": "Public Session",
323-
"published_state": None,
324331
"datasets": [
325332
{
326333
"id": 1,
@@ -333,6 +340,7 @@ def test_get_public_session(self):
333340
"data_contents": [],
334341
}
335342
],
343+
"published_state": None,
336344
},
337345
)
338346

@@ -348,7 +356,12 @@ def test_get_private_session(self):
348356
"users": [],
349357
"is_public": False,
350358
"title": "Private Session",
351-
"published_state": None,
359+
"published_state": {
360+
"id": 2,
361+
"published": False,
362+
"doi": "http://localhost:8000/v1/data/session/2/",
363+
"session": 2,
364+
},
352365
"datasets": [
353366
{
354367
"id": 2,
@@ -421,6 +434,17 @@ def test_update_public_session(self):
421434
session.is_public = False
422435
session.save()
423436

437+
def test_update_session_new_published_state(self):
438+
request = self.auth_client1.put(
439+
"/v1/data/session/1/",
440+
data={"published_state": {"published": False}},
441+
format="json",
442+
)
443+
new_published_state = Session.objects.get(id=1).published_state
444+
self.assertEqual(request.status_code, status.HTTP_200_OK)
445+
self.assertFalse(new_published_state.published)
446+
new_published_state.delete()
447+
424448
# Test that another user's public session cannot be updated
425449
def test_update_public_session_unauthorized(self):
426450
request1 = self.auth_client2.put(
@@ -454,6 +478,16 @@ def test_update_private_session(self):
454478
session.is_public = False
455479
session.save()
456480

481+
def test_update_session_published_state(self):
482+
request = self.auth_client1.put(
483+
"/v1/data/session/2/",
484+
data={"published_state": {"published": True}},
485+
format="json",
486+
)
487+
self.assertEqual(request.status_code, status.HTTP_200_OK)
488+
self.assertTrue(PublishedState.objects.get(id=2).published)
489+
self.private_published_state.save()
490+
457491
# Test that another user's private session cannot be updated
458492
def test_update_private_session_unauthorized(self):
459493
request1 = self.auth_client2.put(
@@ -485,6 +519,7 @@ def test_delete_private_session(self):
485519
self.assertEqual(request.status_code, status.HTTP_200_OK)
486520
self.assertRaises(Session.DoesNotExist, Session.objects.get, id=2)
487521
self.assertRaises(DataSet.DoesNotExist, DataSet.objects.get, id=2)
522+
self.assertRaises(PublishedState.DoesNotExist, PublishedState.objects.get, id=2)
488523
self.private_session = Session.objects.create(
489524
id=2, current_user=self.user1, title="Private Session", is_public=False
490525
)
@@ -494,6 +529,12 @@ def test_delete_private_session(self):
494529
name="Private Dataset",
495530
session=self.private_session,
496531
)
532+
self.private_published_state = PublishedState.objects.create(
533+
id=2,
534+
session=self.private_session,
535+
published=False,
536+
doi="http://localhost:8000/v1/data/session/2/",
537+
)
497538

498539
# Test that another user's private session cannot be deleted
499540
def test_delete_private_session_unauthorized(self):

0 commit comments

Comments
 (0)