
    Nwg                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dl d dlmZ  G d	 d
e      Z G d de      Zy)    )
skipUnless
connection)serializers)TestCase)
force_text)forms)*	JSONFieldc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z eej:                  dk(  d      d        Zy)JSONFieldTestc                 \    t        ddi      }| j                  |j                  ddi       y )NspameggsjsonJSONFieldTestModelassertEqualr   selfobjs     R/var/www/horilla/myenv/lib/python3.12/site-packages/jsonfield/tests/test_fields.pytest_json_fieldzJSONFieldTest.test_json_field   s*     vv&67FF#34    c                 T    t        d      }| j                  |j                  d       y )N r   r   r   s     r   test_json_field_emptyz#JSONFieldTest.test_json_field_empty   s      b)2&r   c                 T    t        d       }| j                  |j                  d        y )Nr   r   r   s     r   test_json_field_nullz"JSONFieldTest.test_json_field_null   s      d+4(r   c                     t         j                  j                  dddi       t         j                  j                  d      }| j	                  |j
                  ddi       y )N
   r   r   idr   r%   r   objectscreategetr   r   r   obj2s     r   test_json_field_savez"JSONFieldTest.test_json_field_save   sZ    ""))&! 	* 	
 "))---4VV$45r   c                     t         j                  j                  dd       t         j                  j                  d      }| j	                  |j
                  d       y )Nr#   r   r$   r&   r'   r+   s     r   test_json_field_save_emptyz(JSONFieldTest.test_json_field_save_empty"   sH    ""))Rb)9!))---4B'r   c                     t         j                  j                  dd        t         j                  j                  d      }| j	                  |j
                  d        y )Nr#   r$   r&   r'   r+   s     r   test_json_field_save_nullz'JSONFieldTest.test_json_field_save_null'   sH    ""))Rd);!))---4D)r   c                     t        d      }|j                  d       | j                  d |j                  d d              | j                  d|j                  ddid              y )Ntestr   r   z{"spam": "eggs"}r   r   )r   set_attributes_from_namer   get_db_prep_save)r   fields     r   test_db_prep_savezJSONFieldTest.test_db_prep_save,   sa    &!&&v.u55dt5LM+U-C-CVVDTae-C-fgr   c                     ddl m} ddlm} t	        d      }|j                  d       |j                         }| j                  t        |      |       | j                  t        |j                        |       y )Nr   )JSONFormField)
JSONWidgetr3   r   )
jsonfield.formsr9   jsonfield.widgetsr:   r   r4   	formfieldr   typewidget)r   r9   r:   r6   r=   s        r   test_formfieldzJSONFieldTest.test_formfield2   s[    10&!&&v.OO%	i-8i../<r   c                     t        d      }|j                         }| j                  t        j                  t        |j                  d         |j                  d       y )Nr3   requiredr   valuer   r=   assertRaisesMessager	   ValidationErrorr   error_messagescleanr   r6   r=   s      r   test_formfield_clean_blankz(JSONFieldTest.test_formfield_clean_blank;   sQ    &!OO%	  !!y//
;<OO	 	! 	r   c                     t        d      }|j                         }| j                  t        j                  t        |j                  d         |j                  d        y )Nr3   rB   rC   rE   rJ   s      r   test_formfield_clean_nonez'JSONFieldTest.test_formfield_clean_noneD   sQ    &!OO%	  !!y//
;<OO	 	! 	r   c                     t        ddd      }|j                         }| j                  |j                  d      d       y )Nr3   Tnullblankr   rC   r   r=   r   rI   rJ   s      r   )test_formfield_null_and_blank_clean_blankz7JSONFieldTest.test_formfield_null_and_blank_clean_blankM   s7    &t48OO%	r2B7r   c                     t        ddd      }|j                         }| j                  |j                  d       d        y )Nr3   TrO   rC   rR   rJ   s      r   (test_formfield_null_and_blank_clean_nonez6JSONFieldTest.test_formfield_null_and_blank_clean_noneR   s7    &t48OO%	t4d;r   c                     t        ddd      }|j                         }| j                  |j                  d      d       y )Nr3   FTrO   r   rC   rR   rJ   s      r    test_formfield_blank_clean_blankz.JSONFieldTest.test_formfield_blank_clean_blankW   s7    &uD9OO%	r2B7r   c                     t        ddd      }|j                         }| j                  |j                  d       d        y )Nr3   FTrO   rC   rR   rJ   s      r   test_formfield_blank_clean_nonez-JSONFieldTest.test_formfield_blank_clean_none\   s9     &uD9OO%	t4d;r   c                     t         j                  j                         }t         j                  j                  |j                        }| j                  |j                  ddi       y )Nr&   sukasukaYAAAAAZ)JSONFieldWithDefaultTestModelr(   r)   r*   r%   r   r   r   s     r   test_default_valuez JSONFieldTest.test_default_valuec   sL    +33::<+33773667BJ	#:;r   c                 h   t         j                  j                  i        t         j                  j                  ddi       | j                  dt         j                  j	                         j                                | j                  dt         j                  j                  i       j                                | j                  dt         j                  j                  i       j                                | j                  dt         j                  j                  ddi      j                                | j                  dt         j                  j                  ddi      j                                t         j                  j                  ddd       | j                  dt         j                  j                  ddi      j                                | j                  dt         j                  j                  d      j                                | j                  t        d	        y )
Nr   foobar      json__containsbing)r`   bazc                  F    t         j                  j                  ddg      S )Nrg   r`   rd   )r   r(   filter r   r   <lambda>z1JSONFieldTest.test_query_object.<locals>.<lambda>v   s"    -?-G-G-N-N_dfk^l-N-m r   )
r   r(   r)   r   allcountexcluderi   assertRaises	TypeErrorr   s    r   test_query_objectzJSONFieldTest.test_query_objecth   s   ""))r)2""))u~)>.66::<BBDE.66>>B>GMMOP.66==2=FLLNO.66==E5>=RXXZ[.66==eUZ^=\bbde""))uV/L)M.66==eUZ^=\bbde 	.66==U=SYY[\)%mnr   c                    t         j                  j                  d        t         j                  j                  i        t         j                  j                  ddi       | j                  dt         j                  j	                  d       j                                | j                  d t         j                  j                  d       j                         y )Nr   r`   ra   rc   )r   r(   r)   r   ri   rm   r*   r   rq   s    r   test_query_isnullzJSONFieldTest.test_query_isnullx   s    ""))t)4""))r)2""))u~)>.66==4=HNNPQ199==4=HMMNr   c                    t         j                  j                  dd        t         j                  j                         }| j	                  d |j
                         | j	                  d|j                         |j                          t         j                  j                         }| j	                  d |j
                         | j	                  d|j                         y Nr   )
blank_json	null_json)BlankJSONFieldTestModelr(   r)   r*   r   rx   rw   saver   s     r   test_jsonfield_blankz"JSONFieldTest.test_jsonfield_blank   s    ''..".M%--113s}}-S^^,
%--113s}}-S^^,r   c                     t         j                  j                          t         j                  j                         }| j	                  ddi|j
                         y )Nxrb   CallableDefaultModelr(   r)   r*   r   r   r   s     r   test_callable_defaultz#JSONFieldTest.test_callable_default   s@    $$++-"**..0#q388,r   c                     t         j                  j                  ddi       t         j                  j                         }| j	                  ddi|j
                         y )Nr}      r   r~   r   s     r    test_callable_default_overriddenz.JSONFieldTest.test_callable_default_overridden   sI    $$++#q+:"**..0#q388,r   c                     t               }t               }d|j                  d<   | j                  d|j                         y )Nra   r`   )r]   r   assertNotIn)r   obj1r,   s      r   test_mutable_default_checkingz+JSONFieldTest.test_mutable_default_checking   s4    ,.,. 		%		*r   c                     t        dd       y )Nr3   rb   )indentr   rq   s    r   test_indentzJSONFieldTest.test_indent   s    &#r   c                     t         j                  j                  d       | j                  dt         j                  j	                         j
                         y )Nz"foo"r   )r   r(   r)   r   r*   r   rq   s    r   test_string_is_not_json_decodedz-JSONFieldTest.test_string_is_not_json_decoded   s?    ""))w)7"4"<"<"@"@"B"G"GHr   c                     t         j                  j                  d       t        j                  dt         j                  j                               }| j                  d|       y )Nz["foo"]r   r   z"json": "[\"foo\"]")r   r(   r)   r   	serializerl   assertIn)r   
serializeds     r   test_serializingzJSONFieldTest.test_serializing   sM    ""))y)9 **6+=+E+E+I+I+KM
-z:r   
postgresqlzPostgreSQL-specific testc                     ddi}t         j                  j                  ||      }t         j                  j                  |j                        }| j                  |j                  |j                         y )Nr`   ra   )library_jsonpostgres_jsonr&   )PostgresParallelModelr(   r)   r*   r%   r   r   r   )r   datar   s      r   +test_work_parallel_with_postgres_json_fieldz9JSONFieldTest.test_work_parallel_with_postgres_json_field   s`    u~#++22TX2Y#++//366/:))3+<+<=r   N)__name__
__module____qualname__r   r   r!   r-   r/   r1   r7   r@   rK   rM   rS   rU   rW   rY   r^   rr   rt   r{   r   r   r   r   r   r   r   r   vendorr   rj   r   r   r   r      s    5')6(
*
h=8
<
8
<<
o O--
-
+$I; 
!!\13MN> O>r   r   c                       e Zd Zd Zy)SavingModelsTestc                     t         j                  j                  dd       }| j                  d|j                         | j                  d |j
                         y rv   )ry   r(   r)   r   rw   rx   r   s     r   test_saving_nullz!SavingModelsTest.test_saving_null   sE    %--44d4SS^^,s}}-r   N)r   r   r   r   rj   r   r   r   r      s    .r   r   N)unittestr   	django.dbr   django.corer   django.testr   DjangoTestCasedjango.utils.encodingr   djangor	   )jsonfield.tests.jsonfield_test_app.modelsjsonfield.fieldsr   r   r   rj   r   r   <module>r      s8       # 2 ,  7 &`>N `>F.~ .r   