
    fMO                     &   d dl 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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mZ d dlmZ d dlmZ d dlmZmZ d dl m!Z!m"Z" d dl#m$Z$ 	 d dl%m&Z& d dl(m)Z)  e       Z*dZ+dZ,ed        Z- G d dej\                        Z/ G d dej\                        Z0 G d dej\                        Z1 G d dej\                        Z2 G d  d!ej\                        Z3 G d" d#ej\                        Z4 G d$ d%ej\                        Z5 G d& d'ej\                        Z6 G d( d)ej\                        Z7 G d* d+ej\                        Z8 G d, d-ej\                        Z9 G d. d/e&      Z: G d0 d1e&      Z; G d2 d3e&      Z< G d4 d5e&      Z= G d6 d7e&      Z> G d8 d9e&      Z? G d: d;e&      Z@ G d< d=e&      ZA G d> d?e&      ZB G d@ dAej\                        ZC G dB dCe&      ZD G dD dEe&      ZEy#  d dl'm&Z& Y xY w)F    N)contextmanager)datetime)AlphabetDetector)VERSION)settings)
ArrayFieldcall_command)%validate_comma_separated_integer_list)models)IntegrityError)timezone)Faker	JSONField)Seed)SeederCommandErrorSeederException)FieldTypeGuesserNameGuesser)Seeder)TestCase)skipIfzdefault long descriptionzdefault short descriptionc              #      K   t        t        |       }t        t        | |       	 d t        t        | |       y# t        t        | |       w xY ww)z
    Generator that mutates the django.settings object during the context of a test run.

    :param name: The setting name to be affected
    :param value: The setting value to be defined during the execution
    :return:
    N)getattrr   setattr)namevalueoriginal_values      e/var/www/teaching_timetable/msuas_timetable/my_venv/lib/python3.12/site-packages/django_seed/tests.pydjango_settingr!   "   s@      Xt,NHdE"0$/$/s   "A; AAAc                      e Zd Z ej                  d      Z ej                  d      Z ej                         Z	 ej                         Z ej                  d      Z ej                  d      Z ej                         Z ej                          Z ej$                         Z ej(                         Z ej,                         Z ej0                         Z ej4                         Zy)Game   
max_lengthT)auto_now_add)auto_nowN)__name__
__module____qualname__r   	CharFieldtitle	SlugFieldslug	TextFielddescriptionDateTimeFieldgame_started
created_at
updated_at	DateFieldupdated_date	TimeFieldupdated_timeBooleanFieldactiveBigIntegerField	max_scoreSmallIntegerFieldlevelsIntegerFieldlikesBinaryFieldrandom_binary     r    r#   r#   4   s    F,E6s+D"&""$K'6'')L%%%48J%%%t4J#6##%L#6##%L V  "F&&&(I%V%%'FF!E&F&&(MrE   r#   c                      e Zd Z ej                  d      Z ej                  d      Z ej                         Z ej                         Z
 ej                         Z ej                  eej                        Z ej"                         Z ej                  egd      Z ej*                         Z ej.                         Zy)Playerd   r%      )to	on_delete  )
validatorsr&   N)r)   r*   r+   r   r,   nicknametaglineFilePathFieldavatarr<   scorer2   last_login_at
ForeignKeyr#   CASCADEgameGenericIPAddressFieldipr   achievementsPositiveIntegerFieldfriends
FloatFieldbalancerD   rE   r    rG   rG   D   s    v3/Hf#.G!V!!#F"F""$E(F((*M6?D	%	%	%	'B#6##0U/VcghL)f))+Gf!GrE   rG   c                   <   e Zd ZdZdZdZedfedfedffZ ej                  de      Z	 ej                         Z ej                         Z ej                         Z ej                   eej$                  d	d
      Z ej                   eej$                  dd      Zy)ActionfiremovestopFireMoveStop   r&   choicesactionsF)rJ   rK   related_namenullzenemy_actions+TN)r)   r*   r+   ACTION_FIREACTION_MOVEACTION_STOPACTIONSr   r,   r   r2   executed_atDurationFieldduration	UUIDFielduuidrT   rG   rU   actortargetrD   rE   r    r_   r_   P   s    KKK	f	f	fG
 6q':D&&&&(K#v##%H6DF&..i^cdEV&6>>P`gklFrE   r_   c                       e Zd Z ej                  d      Z ej                  de      Z ej                  e	      Z
 ej                  d      Zy)ProductrH   r%   )r&   default)ry   TN)r)   r*   r+   r   r,   r   DEF_SDshort_descriptionr0   DEF_LDr1   r:   enabledrD   rE   r    rx   rx   a   sM    6s+D(((CH"&""62K!f!!$/GrE   rx   c                       e Zd Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  dd      Z	 ej                  d      Zy	)
Customer   r%      2   FT)r(   r'   i  N)r)   r*   r+   r   r,   r   countryaddressr2   r4   r0   commentsrD   rE   r    r   r   g   s^    6s+Df"-Gf"-G%%%u4HJv3/HrE   r   c                   .    e Zd Z ej                         Zy)PenN)r)   r*   r+   r   rZ   ink_leftrD   rE   r    r   r   o   s    *v**,HrE   r   c                   n    e Zd Z ej                  d      Z ej                  eej                        Z	y)ReporterrH   r%   rK   N)
r)   r*   r+   r   r,   r   OneToOneFieldr   rU   penrD   rE   r    r   r   s   s0    6s+D
&

..CrE   r   c                   n    e Zd Z ej                  d      Z ej                  eej                        Z	y)ArticlerH   r%   r   N)
r)   r*   r+   r   r,   r-   rT   r   rU   reporterrD   rE   r    r   r   {   s,    F,E v  V^^DHrE   r   c                       e Zd Z ej                  d      Z ej                  d      Z ej                  eej                        Z
 ej                  e      Zy)	NewspaperrH   r%   P   r   N)r)   r*   r+   r   r,   r   r   rT   r   rU   articlesManyToManyFieldr   	reportersrD   rE   r    r   r      sR    6s+Df"-G v  FNNCH '&&x0IrE   r   c                       e Zd Z e       Zy)NotCoveredFieldsN)r)   r*   r+   r   jsonrD   rE   r    r   r      s	    ;DrE   r   c                   f    e Zd Zdej                  v r e ej                  ddd            ZydZy)PhoneNumberPersonpostgreszPhone Numberr   T)r&   unique)
base_fieldN)	r)   r*   r+   r   	DATABASESr   r   r,   phonesrD   rE   r    r   r      sA     
x))	) #6##
F 04 rE   r   c                       e Zd Zd Zd Zy)NameGuesserTestCasec                 ,    t        t              | _        y N)r   fakeinstanceselfs    r    setUpzNameGuesserTestCase.setUp   s    #D)rE   c                    d}t        dd      5  |D ]Y  } | j                  j                  |      t        j                               }| j                  t        j                  |             [ 	 d d d        t        dd      5  |D ]Y  } | j                  j                  |      t        j                               }| j                  t        j                  |             [ 	 d d d        y # 1 sw Y   ~xY w# 1 sw Y   y xY w)N)something_atsomething_AtgameUpdated_Atgame_created_atUSE_TZTF)	r!   r   guess_formatr   now
assertTruer   is_awareassertFalse)r   
test_namesr   r   s       r    test_guess_format_timezonez.NameGuesserTestCase.test_guess_format_timezone   s    Z
Hd+ 	:" :82248H 1 1% 89:	:
 He, 	;" ;82248H  !2!25!9:;	; 	;	: 	:
	; 	;s   AC,AC8,C58DN)r)   r*   r+   r   r   rD   rE   r    r   r      s    *;rE   r   c                   B    e Zd Zd Zd Z eed   dk  d      d        Zy)FieldTypeGuesserTestCasec                 ,    t        t              | _        y r   )r   r   r   r   s    r    r   zFieldTypeGuesserTestCase.setUp   s    (.rE   c                    | j                   j                  t        j                               }t	        dd      5   |t        j                               }| j                  t        j                  |             d d d        t	        dd      5   |t        j                               }| j                  t        j                  |             d d d        y # 1 sw Y   ]xY w# 1 sw Y   y xY w)Nr   TF)r   r   r   r2   r!   r   r   r   r   r   r   )r   	generatorr   s      r    test_guess_with_datetimez1FieldTypeGuesserTestCase.test_guess_with_datetime   s    MM..v/C/C/EF	Hd+ 	6hlln-EOOH--e45	6 He, 	7hlln-EX..u56	7 	7		6 	6	7 	7s   ?C?C!C!C*r      (JSONField does not work with Django 1.11c                     ddl m} | j                  j                   |             }| j	                   |i       d       y )Nr   r   z{})$django.contrib.postgres.fields.jsonbr   r   r   assertEquals)r   r   r   s      r    test_guess_not_in_formatz1FieldTypeGuesserTestCase.test_guess_not_in_format   s1    B MM..y{;	)B-.rE   N)r)   r*   r+   r   r   r   django_versionr   rD   rE   r    r   r      s3    /	7 N1!#MN/ O/rE   r   c                   r    e Zd Zd Zd Zd Zd Zd Z ee	d   dk  d      d	        Z
d
 Zd Zd Zd Zd Zy)SeederTestCasec                    t         }t        |      }|j                  t        d       | j	                  t        |j                         t                 d       | j	                  t        t        j                  j                               d       |j                  t        d       | j	                  t        |j                         t                 d       | j	                  t        t        j                  j                               d       y )N
   (   r   )	r   r   
add_entityr#   assertEquallenexecuteobjectsallr   fakerseeders      r    test_populationzSeederTestCase.test_population   s    $#V^^-d34b9T\\--/0"5$#V^^-d34b9T\\--/0"5rE   c                 l   t         }t        |      }|j                  t        dddi       |j                  t        dddi       |j	                         }| j                  t        |t                 d       | j                  t        t        j                  j                               d       | j                  t        j                  j                  |t           d         j                  d       | j                  t        j                  j                  |t           d	         j                  d       y )
Nr   r-   z
First Game   zSecond Gamer   r   id)r   r   r   r#   r   r   r   r   r   getr-   )r   r   r   inserted_pkss       r    test_same_model_unique_fieldsz,SeederTestCase.test_same_model_unique_fields   s    $\%
 	 	$]%
 	 ~~'\$/0"5T\\--/0"5))\$-?-B)CII<X))\$-?-C)DJJMZrE   c                     t         fdd_        t              }|j                  t        ddi       | j                  t        |j                         t                 j                         y )Nc                 R    xj                   dz  c_         j                         }|S N   )countcompany)argr   r   
title_fakes     r    r   z/SeederTestCase.test_guesser.<locals>.title_fake   s$    !==?DKrE   r   r   r-   )r   r   r   r   r#   r   r   r   )r   r   r   r   s     @@r    test_guesserzSeederTestCase.test_guesser   se    	 
$Z%
 	 	V^^-d34j6F6FGrE   c                 Z    |}d|j                   cxk  xr dk  nc xr d|j                  v S )Nr   rL   @rR   rN   )r   playerps      r    valid_playerzSeederTestCase.valid_player   s)    AGG#t#9qzz(99rE   c           
         t         }t        |      }|j                  t        d       |j                  t        dd d d       |j                  t
        d       |j                         }| j                  t        |t                 dk(         | j                  t        |t                 dk(         t        j                  j                         }| j                  t        |D cg c]  }| j                  |       c}             y c c}w )N   r   c                 .    t        j                  dd      S )Nr   rL   )randomrandintxs    r    <lambda>z/SeederTestCase.test_formatter.<locals>.<lambda>   s    v~~a6 rE   c                 *    t         j                         S r   )r   emailr   s    r    r   z/SeederTestCase.test_formatter.<locals>.<lambda>   s    $**, rE   r   r   )r   r   r   r#   rG   r_   r   r   r   r   r   anyr   )r   r   r   r   playersr   s         r    test_formatterzSeederTestCase.test_formatter   s    $"&"6.'
 	 	&"%~~'L./145L01R78..$$&7CaT..q1CDECs   $Dr   r   r   c                 n   t         }t        |      j                  t        ddfdi       j	                         }| j                  t        |t                 dk(         | j                  t        t        j                  j                         D cg c]  }|j                   c}             yc c}w )z
        Tell the django-seed how to work with fields which are
        not covered by the code. Avoids AttributeError(field).
        :return:
        r   r   c                 p    j                   j                         dj                   j                         iiS )Nr1   )r   domain_nametext)r   r   s    r    r   z8SeederTestCase.test_not_covered_fields.<locals>.<lambda>  s+    v||779M6<<K\K\K^;_` rE   N)
r   r   r   r   r   r   r   r   r   r   )r   r   r   fieldr   s       @r    test_not_covered_fieldsz&SeederTestCase.test_not_covered_fields  s     *B`1
 	 ~~'L)9:;rAB5E5M5M5Q5Q5STEUZZTUVTs   B2c           
      T   t               }t        d      }t        |      }|j                  t        d       |j                          | j                  t        t        j                  j                         D cg c]  }|j                  |j                         c}             y c c}w )Nru_RUr   )r   r   r   r   r#   r   r   r   r   is_cyrillicr-   )r   adr   r   rV   s        r    test_localezSeederTestCase.test_locale  so    g$"DLLDTDTDVWDR^^DJJ7WXYWs   7"B%c                     t         }t        |      }	 |j                  t        d       |j	                          y # t
        $ r)}| j                  t        |t                     Y d }~y d }~ww xY wr   )	r   r   r   r_   r   	Exceptionr   
isinstancer   r   r   r   es       r    test_null_foreign_keyz$SeederTestCase.test_null_foreign_key  s_    	<fa(NN 	  	<OOJq/:;;	<s   &: 	A,A''A,c                     t         }t        |      }	 |j                          y # t        $ r)}| j	                  t        |t                     Y d }~y d }~ww xY wr   )r   r   r   r  r   r  r   r  s       r    test_no_entities_addedz%SeederTestCase.test_no_entities_added%  sE    	<NN 	<OOJq/:;;	<s   $ 	AAAc                 2   t        ddddd      t        }t        |      }|j                  t        ddfdi       |j                         t           }t        j                  j                  |      }| j                  t        fd	|D                     y )
N           r   r4   c                     S r   rD   r   dates    r    r   z2SeederTestCase.test_auto_now_add.<locals>.<lambda>2      D rE   pk__inc              3   <   K   | ]  }|j                   k(    y wr   )r4   .0rV   r  s     r    	<genexpr>z3SeederTestCase.test_auto_now_add.<locals>.<genexpr>7       FDOOt3F   
r   r   r   r   r#   r   r   filterr   r   r   r   r   r   gamesr  s        @r    test_auto_now_addz SeederTestCase.test_auto_now_add-      aB+$.%
 	 ~~'-##<#8FFFGrE   c                 2   t        ddddd      t        }t        |      }|j                  t        ddfdi       |j                         t           }t        j                  j                  |      }| j                  t        fd	|D                     y )
Nr  r  r  r  r   r5   c                     S r   rD   r  s    r    r   z.SeederTestCase.test_auto_now.<locals>.<lambda>>  r  rE   r  c              3   <   K   | ]  }|j                   k(    y wr   )r5   r  s     r    r  z/SeederTestCase.test_auto_now.<locals>.<genexpr>C  r  r  r  r  s        @r    test_auto_nowzSeederTestCase.test_auto_now9  r   rE   N)r)   r*   r+   r   r   r   r   r   r   r   r   r  r  r	  r  r$  rD   rE   r    r   r      sc    	6[$H:F  N1!#MNW OWZ<
H
HrE   r   c                   $    e Zd Zd Zd Zd Zd Zy)APISeedTestCasec                 @    t               | _        t               | _        y r   )r   seed1seed2r   s    r    r   zAPISeedTestCase.setUpH  s    V
V
rE   c                     | j                  | j                  | j                         | j                  | j                  | j                         y r   )r   r(  r)  assertIsr   s    r    test_django_seed_singletonz*APISeedTestCase.test_django_seed_singletonL  s0    TZZ0djj$**-rE   c                    | j                   j                         }| j                  j                         }| j                  ||       | j                   j                  d      }| j                  j                  d      }| j                  ||       | j                   j                  d      }| j                  j                  d      }| j                  ||       y )Nry   )codenameit_ITlocale)r(  r   r)  r+  )r   gen1gen2s      r    test_faker_cache_fakerz&APISeedTestCase.test_faker_cache_fakerP  s    zz!zz!dD!zz3zz3dD!zzw/zzw/dD!rE   c                 x   | j                   j                         }| j                  j                         }| j                  ||       |j                  }|j                  }| j                  ||       | j                   j                  d      }| j                  j                  d      }| j                  ||       y )Nr/  r0  )r(  r   r)  r+  r   )r   seeder1seeder2r2  r3  s        r    test_faker_cache_seederz'APISeedTestCase.test_faker_cache_seeder]  s    **##%**##%gw'}}}}dD!**##7#3**##7#3gw'rE   N)r)   r*   r+   r   r,  r4  r8  rD   rE   r    r&  r&  F  s    ."(rE   r&  c                       e Zd Zd Zd Zd Zy)SeedCommandTestCasec                      t        ddd       y )Nseeddjango_seedr   numberr	   r   s    r    test_seed_commandz%SeedCommandTestCase.test_seed_commandm  s    V]26rE   c                     	 t        ddd       y # t        $ r)}| j                  t        |t                     Y d }~y d }~ww xY w)Nr<  r=  asdfr>  )r
   r  r   r  r   )r   r  s     r    test_invalid_number_argz+SeedCommandTestCase.test_invalid_number_argp  sD    	?v> 	  	?OOJq*<=>>	?s    	A>Ac                     t        dddddd       t        j                  j                         }| j	                  |d   j
                  dk(         | j	                  t        |      dk(         y )	Nr<  r=  z--seederzCustomer.nameBobbyLongNamez--number=12r      )r
   r   r   r   r   r   r   )r   	customerss     r    test_seed_command_forced_fieldz2SeedCommandTestCase.test_seed_command_forced_fieldw  sY    V]JZgh$$((*		!))_<=I",-rE   N)r)   r*   r+   r@  rC  rH  rD   rE   r    r:  r:  k  s    7.rE   r:  c                       e Zd Zd Zd Zy)DefaultValueTestCasec                 d   t         }t        |      }|j                  t        dddi       |j	                         }| j                  |       t        j                  j                  |t           d         }| j                  |j                  t               | j                  |j                         y )Nr   r   zAwesome Productr   r   )r   r   r   rx   r   assertIsNotNoner   r   r   r{   rz   r   r}   r   r   r   _idproducts        r    (test_default_value_guessed_by_field_typez=DefaultValueTestCase.test_default_value_guessed_by_field_type  s    '1v.?&@AnnS!//%%Wa%9'33V<(rE   c                 .   t         }t        |      }|j                  t        dddi       |j	                         }| j                  |       t        j                  j                  |t           d         }| j                  |j                  t               y )Nr   r   zGreat Productr   r   )r   r   r   rx   r   rL  r   r   r   r1   r|   rM  s        r    (test_default_value_guessed_by_field_namez=DefaultValueTestCase.test_default_value_guessed_by_field_name  sv    '1vo&>?nnS!//%%Wa%9'--v6rE   N)r)   r*   r+   rP  rR  rD   rE   r    rJ  rJ    s    )7rE   rJ  c                       e Zd Zd Zd Zy)LengthRulesTestCasec                    t         }t        |      }t        j                  j	                  d      j
                  }t        j                  j	                  d      j
                  }t        j                  j	                  d      j
                  }t        j                  j	                  d      j
                  }t        j                  dd      }d||z   z  d||z   z  d	||z   z  d
||z   z  d}|j                  t        d|       |j                         }	t        j                  j                  |	t           d         }
| j                  t        |
j                        |k  dj                  t        |
j                        |             | j                  t        |
j                         |k  dj                  t        |
j                        |             | j                  t        |
j"                        |k  dj                  t        |
j                        |             | j                  t        |
j$                        |k  dj                  t        |
j$                        |             y )Nr   r   r   r   r   r   r   r   to)r   r   r   r   r   r   zBname with length {}, does not respect max length restriction of {}zEcountry with length {}, does not respect max length restriction of {}zEaddress with length {}, does not respect max length restriction of {}zFcomments with length {}, does not respect max length restriction of {})r   r   r   _meta	get_fieldr&   r   r   r   r   r   r   r   r   r   formatr   r   r   )r   r   r   name_max_lencountry_max_lenaddress_max_lencomments_max_lenranddatarN  customers              r    test_max_lengthz#LengthRulesTestCase.test_max_length  s   ~~//7BB"..229=HH"..229=HH#>>33J?JJ~~a$ <$./o45o45/$67	
 	(At,nn##''3x=+;'<HMM*l:PVC&5	7 	H,,-@SVC&8	: 	H,,-@SVC&8	: 	H--.2BBTVC))*,<=	?rE   c                 .   t         }t        |      }|j                  t        d       |j	                         }t        j
                  j                  |t           d         }| j                  t        t              t        |j                        k(         y Nr   r   r   )r   r   r   rx   r   r   r   r   r   r|   r1   rM  s        r    test_default_with_max_lengthz0LengthRulesTestCase.test_default_with_max_length  sk    '1%nn//%%Wa%9Fs7+>+>'??@rE   N)r)   r*   r+   rb  re  rD   rE   r    rT  rT    s    %?T
ArE   rT  c                   *    e Zd Zd Zd Zd Zd Zd Zy)RelationshipTestCasec                 N   t         }t        |      }|j                  t        d       |j                  t        d       |j                         }| j                  t        j                  j                  |t           d         j                  j                  |t           d          y rd  )r   r   r   r   r   r   r   r   r   r   pkr   r   r   results       r    test_one_to_onez$RelationshipTestCase.test_one_to_one  s    #q!(A&!))--1A!1D-EIILLfUXkZ[n]rE   c                     t         }t        |      }|j                  t        d       |j                  t        d       | j                  t        |j                         y r   )r   r   r   r   r   assertRaisesr   r   r   s      r    test_one_to_one_wrong_orderz0RelationshipTestCase.test_one_to_one_wrong_order  sD    (A&#q!/6>>:rE   c                 b   t         }t        |      }|j                  t        d       |j                  t        d       |j                  t
        d       |j                         }| j                  t        j                  j                  |t           d         d        | j                  t
        j                  j                  |t
           d         d        | j                  t
        j                  j                  |t
           d         j                  j                  |t           d          y rd  )r   r   r   r   r   r   r   assertNotEqualr   r   r   r   ri  r   r   r   resultss       r    test_many_to_onez%RelationshipTestCase.test_many_to_one  s    #q!(A&'1%.."H,,00GH4Ea4H0I4PGOO//773CA3F/GN,,0@0C,DMMPPRYZbRcdeRfgrE   c                     t         }t        |      }|j                  t        d       |j                  t        d       |j                  t
        d       | j                  t        |j                         y r   )	r   r   r   r   r   r   rn  r   r   r   s      r    test_many_to_one_wrong_orderz1RelationshipTestCase.test_many_to_one_wrong_order  sT    '1%#q!(A&/6>>:rE   c                    t         }t        |      }|j                  t        d       |j                  t        d       |j                  t
        d       |j                  t        d       |j                         }| j                  t        j                  j                  d      d        | j                  t        j                  j                  d      d        | j                  t
        j                  j                  d      d        | j                  t        t        j                  j                  d      j                  j                               d       y )Nr   r   )r   r   r   r   r   r   r   r   rq  r   r   r   r   newspaper_setr   rr  s       r    test_many_to_manyz&RelationshipTestCase.test_many_to_many  s    #q!(A&'1%)Q'.."I--11Q17>H,,00A06=GOO//1/5t<X--11Q17EEIIKLaPrE   N)r)   r*   r+   rl  ro  rt  rv  ry  rD   rE   r    rg  rg    s    ^;h;QrE   rg  c                   P    e Zd Z eej
                  d   d   dk7  d      d        Zy)EdgeCaseFieldTestCasery   ENGINEz&django.db.backends.postgresql_psycopg2z_Postgres database is not configured, or the tests aren't being run with the `actions` argument.c                     t        d       t        }t        |      }|j                  t        d       |j                          y )NAasdfr   )printr   r   r   r   r   r   s      r    test_postgres_array_fieldz/EdgeCaseFieldTestCase.test_postgres_array_field'  s2    g*A.rE   N)r)   r*   r+   r   r   r   r  rD   rE   r    r{  r{  %  s:    Hy)(37__  bC  D DrE   r{  c                       e Zd Zg dZ ej
                  de      Zg dZ ej                  ed      Z	 ej                  e      Zg dZ ej                  e      Zy	)
Animal))DGDog)CTCat)ELElephantr   rg   ))r   Black)r   White)r  BrownT)rh   r   )rh   ))	Alansburg))r   zRuby's farm)r   z
Ben's farm)Cornwall))r  zBecky's farm)rf   z
Tom's farm)r   zInternet farmN)r)   r*   r+   SPECIES_CHOICESr   r,   speciesCOLOR_CHOICESr>   first_colorr<   second_colorFARM_CHOICESr@   farmrD   rE   r    r  r  0  sx    O f!G
M +&**K *6))LL$ 6DrE   r  c                       e Zd Zd Zy)Choicesc                    t         }t        |      }|j                  t        d       |j	                         }t        j
                  j                  |t           d         }| j                  |j                  t        j                  D cg c]  }|d   	 c}v        | j                  |j                  t        j                  D cg c]  }|d   	 c}v        | j                  |j                  t        j                  D cg c]  }|d   	 c}v        | j                  |j                  dk         y c c}w c c}w c c}w )Nr   r   r   r   )r   r   r   r  r   r   r   r   r  r  r  r  r  r  )r   r   r   rk  animal_objectr   s         r    test_fieldszChoices.test_fieldsa  s    &!$!**fVnQ.?*@--@V@V1W1!A$1WWX11FDXDX5Yqad5YYZ22VEYEY6Zqt6ZZ[**a/0 2X5Y6Zs   
D5
D:
D?
N)r)   r*   r+   r  rD   rE   r    r  r  `  s    1rE   r  c                       e Zd Zd Zd Zy)UniquenessTestCasec                 r    t         }t        |      }|j                  t        d       |j	                         }y )N   )r   r   r   r  r   rj  s       r    test_pigeon_hole_principlez-UniquenessTestCase.test_pigeon_hole_principleq  s,    &!$!rE   c                 H   t         }t        |      }|j                  t        dddi       |j                  t        dddi       |j                  t        dddi       |j	                         }|j                  t        d       | j                  t        |j                         y )Nr   r  r   r  )r   r   r   r  r   rn  r   rj  s       r    test_impossible_uniquenessz-UniquenessTestCase.test_impossible_uniquenessy  s    &!1&
 	 	&!1&
 	 	&!1&
 	 ! 	&!$.&..9rE   N)r)   r*   r+   r  r  rD   rE   r    r  r  p  s    ":rE   r  )Fr   
contextlibr   r   alphabet_detectorr   djangor   r   django.confr   django.contrib.postgres.fieldsr   django.core.managementr
   django.core.validatorsr   	django.dbr   django.db.utilsr   django.utilsr   r   r   	jsonfieldr   r=  r   django_seed.exceptionsr   r   django_seed.guessersr   r   django_seed.seederr   django.utils.unittestr   django.testunittestr   r   r|   rz   r!   Modelr#   rG   r_   rx   r   r   r   r   r   r   r   r   r   r   r&  r:  rJ  rT  rg  r{  r  r  r  rD   rE   r    <module>r     s    %  . ,   5 / H  * !    F > %%. w	#	$0 0")6<< ) 
"V\\ 
"mV\\ m"0fll 00v|| 0-&,, -v|| Efll E
1 1v|| 
4 4;( ;&/x /0@HX @HF"(h "(J.( .(78 7:6A( 6Ap:Q8 :Qb	H 	.V\\ .`1h 1 : :q%$$s   0H H