22from math import fabs
33from typing import Any
44
5+ import pytest
6+
57from rogii_solo .calculations .constants import DELTA
68from rogii_solo .calculations .interpretation import get_segments , get_segments_with_dip
79from rogii_solo .calculations .trajectory import calculate_trajectory
10+ from rogii_solo .exceptions import InvalidTopDataException
811from tests .papi_data import (
912 EI_LAST_SEGMENT_EXTENDED_NAME ,
1013 LOG_NAME ,
1114 NESTED_WELL_NAME ,
1215 STARRED_NESTED_WELL_NAME ,
13- STARRED_TOPSET_NAME ,
1416 TYPEWELL_NAME ,
1517 WELL_NAME ,
1618)
@@ -229,11 +231,27 @@ def test_create_typewell_log(project_papi):
229231 assert typewell .logs .find_by_name (log_name ) is not None
230232
231233
234+ def test_update_log_meta (project_papi ):
235+ well = project_papi .wells .find_by_name (WELL_NAME )
236+ assert well is not None
237+
238+ log = well .logs .find_by_name (LOG_NAME )
239+ assert log is not None
240+
241+ input_data = {
242+ 'name' : f'Log { random .randint (0 , 10000 )} ' ,
243+ }
244+ log .update_meta (** input_data )
245+
246+ log_data = log .to_dict ()
247+ assert log_data ['name' ] == input_data ['name' ]
248+
249+
232250def test_create_topset_top (project_papi ):
233251 well = project_papi .wells .find_by_name (WELL_NAME )
234252 assert well is not None
235253
236- topset = well .topsets . find_by_name ( STARRED_TOPSET_NAME )
254+ topset = well .starred_topset
237255 assert topset is not None
238256
239257 input_data = {
@@ -251,6 +269,68 @@ def test_create_topset_top(project_papi):
251269 assert np_is_close (top_data ['md' ], input_data ['md' ])
252270
253271
272+ def test_create_topset_top_with_invalid_md (project_papi ):
273+ well = project_papi .wells .find_by_name (WELL_NAME )
274+ assert well is not None
275+
276+ topset = well .starred_topset
277+ assert topset is not None
278+
279+ input_data = {
280+ 'name' : f'Top { random .randint (0 , 10000 )} ' ,
281+ 'md' : - 1 ,
282+ }
283+ with pytest .raises (InvalidTopDataException ):
284+ topset .create_top (** input_data )
285+
286+ input_data = {
287+ 'name' : f'Top { random .randint (0 , 10000 )} ' ,
288+ 'md' : 1000001 ,
289+ }
290+ with pytest .raises (InvalidTopDataException ):
291+ topset .create_top (** input_data )
292+
293+
294+ def test_update_topset_top_meta (project_papi ):
295+ well = project_papi .wells .find_by_name (WELL_NAME )
296+ assert well is not None
297+
298+ top = well .starred_topset .starred_top_center
299+ assert top is not None
300+
301+ input_data = {
302+ 'name' : f'Top { random .randint (0 , 10000 )} ' ,
303+ 'md' : random .randint (11400 , 11500 ),
304+ }
305+ top .update_meta (** input_data )
306+
307+ top_data = top .to_dict ()
308+ assert top_data ['name' ] == input_data ['name' ]
309+ assert np_is_close (top_data ['md' ], input_data ['md' ])
310+
311+
312+ def test_update_topset_top_with_incorrect_md (project_papi ):
313+ well = project_papi .wells .find_by_name (WELL_NAME )
314+ assert well is not None
315+
316+ top = well .starred_topset .starred_top_center
317+ assert top is not None
318+
319+ input_data = {
320+ 'name' : f'Top { random .randint (0 , 10000 )} ' ,
321+ 'md' : - 1 ,
322+ }
323+ with pytest .raises (InvalidTopDataException ):
324+ top .update_meta (** input_data )
325+
326+ input_data = {
327+ 'name' : f'Top { random .randint (0 , 10000 )} ' ,
328+ 'md' : 1000001 ,
329+ }
330+ with pytest .raises (InvalidTopDataException ):
331+ top .update_meta (** input_data )
332+
333+
254334def test_update_well_meta (project_papi ):
255335 well = project_papi .wells .find_by_name (WELL_NAME )
256336 assert well is not None
0 commit comments