@@ -48,8 +48,159 @@ def test_no_delete_if_collection_objects_exist(self):
4848
4949 accession .collectionobjects .clear ()
5050
51+ accession_id = accession .id
52+
5153 accession .delete ()
5254
55+ self .assertFalse (
56+ models .Accession .objects .filter (id = accession_id ).exists ()
57+ )
58+
5359 self .assertEqual (
5460 models .Collectionobject .objects .filter (id__in = [co .id for co in self .collectionobjects ]).count (),
5561 len (self .collectionobjects ))
62+
63+ def test_create_accession_with_number_status_and_type (self ):
64+ accession = models .Accession .objects .create (
65+ accessionnumber = "A-8454-001" ,
66+ status = "Complete" ,
67+ type = "Gift" ,
68+ division = self .division ,
69+ )
70+ fetched = models .Accession .objects .get (id = accession .id )
71+
72+ self .assertEqual (fetched .accessionnumber , "A-8454-001" )
73+ self .assertEqual (fetched .status , "Complete" )
74+ self .assertEqual (fetched .type , "Gift" )
75+ self .assertEqual (fetched .division , self .division )
76+
77+ def test_add_existing_permit_to_accession (self ):
78+ accession = models .Accession .objects .create (
79+ accessionnumber = 'A-PERMIT-001' ,
80+ division = self .division ,
81+ )
82+
83+ permit = models .Permit .objects .create ( # since ApiTests doesn't have an existing permit, we create it
84+ permitnumber = 'P-EXISTING-001' ,
85+ institution = self .institution ,
86+ )
87+
88+ authorization = accession .accessionauthorizations .create (
89+ permit = permit ,
90+ remarks = 'Existing permit authorizations' ,
91+ )
92+
93+ fetched = models .Accessionauthorization .objects .get (
94+ id = authorization .id
95+ )
96+
97+ self .assertEqual (fetched .accession , accession )
98+ self .assertEqual (fetched .permit , permit )
99+ self .assertEqual (fetched .remarks , 'Existing permit authorizations' )
100+
101+ def test_add_multiple_agents_and_authorizations (self ):
102+ accession = models .Accession .objects .create (
103+ accessionnumber = 'A-MULTIPLE-001' ,
104+ division = self .division ,
105+ )
106+ agent_1 = models .Agent .objects .create (
107+ agenttype = 0 ,
108+ firstname = 'First' ,
109+ lastname = 'Agent' ,
110+ division = self .division ,
111+ )
112+ agent_2 = models .Agent .objects .create (
113+ agenttype = 0 ,
114+ firstname = 'Second' ,
115+ lastname = 'Agent' ,
116+ division = self .division ,
117+ )
118+ permit_1 = models .Permit .objects .create (
119+ permitnumber = 'P-MULTIPLE-001' ,
120+ institution = self .institution ,
121+ )
122+ permit_2 = models .Permit .objects .create (
123+ permitnumber = 'P-MULTIPLE-002' ,
124+ institution = self .institution ,
125+ )
126+ accession .accessionagents .create (
127+ agent = agent_1 ,
128+ role = 'Collector' ,
129+ )
130+ accession .accessionagents .create (
131+ agent = agent_2 ,
132+ role = 'Donor' ,
133+ )
134+ accession .accessionauthorizations .create (
135+ permit = permit_1 ,
136+ )
137+ accession .accessionauthorizations .create (
138+ permit = permit_2 ,
139+ )
140+ self .assertEqual (accession .accessionagents .count (), 2 )
141+ self .assertEqual (accession .accessionauthorizations .count (), 2 )
142+
143+ agent_ids = set (accession .accessionagents .values_list ('agent_id' , flat = True ))
144+ agent_roles = dict (
145+ accession .accessionagents .values_list ('agent_id' , 'role' )
146+ )
147+ permit_ids = set (accession .accessionauthorizations .values_list ('permit_id' , flat = True ))
148+
149+ self .assertEqual (agent_ids , {agent_1 .id , agent_2 .id })
150+ self .assertEqual (agent_roles , {
151+ agent_1 .id : 'Collector' ,
152+ agent_2 .id : 'Donor' ,
153+ })
154+ self .assertEqual (permit_ids , {permit_1 .id , permit_2 .id })
155+
156+ def test_add_attachment_to_accession (self ):
157+ accession = models .Accession .objects .create (
158+ accessionnumber = 'A-ATTACHMENT-001' ,
159+ division = self .division ,
160+ )
161+ attachment = models .Attachment .objects .create (
162+ origfilename = 'accession_document.pdf' ,
163+ tableid = accession .specify_model .tableId ,
164+ title = 'Accession Document' ,
165+ mimetype = 'application/pdf' ,
166+ )
167+
168+ accession_attachment = models .Accessionattachment .objects .create (
169+ accession = accession ,
170+ attachment = attachment ,
171+ ordinal = 0 ,
172+ )
173+ fetched = models .Accessionattachment .objects .get (
174+ id = accession_attachment .id
175+ )
176+
177+ self .assertEqual (accession .accessionattachments .count (), 1 )
178+ self .assertEqual (fetched .accession , accession )
179+ self .assertEqual (fetched .attachment , attachment )
180+ self .assertEqual (fetched .attachment .origfilename , 'accession_document.pdf' )
181+ self .assertEqual (fetched .ordinal , 0 )
182+
183+ def test_delete_attachment_from_accession (self ):
184+ accession = models .Accession .objects .create (
185+ accessionnumber = 'A-DELETE-ATTACHMENT-001' ,
186+ division = self .division ,
187+ )
188+ attachment = models .Attachment .objects .create (
189+ origfilename = 'delete_me.pdf' ,
190+ tableid = accession .specify_model .tableId ,
191+ title = 'Delete Me' ,
192+ mimetype = 'application/pdf' ,
193+ )
194+ accession_attachment = models .Accessionattachment .objects .create (
195+ accession = accession ,
196+ attachment = attachment ,
197+ ordinal = 0 ,
198+ )
199+ attachment_id = attachment .id
200+
201+ accession_attachment .delete ()
202+
203+ self .assertEqual (accession .accessionattachments .count (), 0 )
204+ self .assertFalse (
205+ models .Attachment .objects .filter (id = attachment_id ).exists ()
206+ )
0 commit comments