@@ -159,3 +159,99 @@ async def test_bulk_create_models_with_commit(db: AsyncSession, crud_ins: CRUDPl
159159 assert len (results ) == 2
160160 assert results [0 ].name == 'bulk_commit_1'
161161 assert results [1 ].name == 'bulk_commit_2'
162+
163+
164+ @pytest .mark .asyncio
165+ async def test_create_model_with_dict (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
166+ async with db .begin ():
167+ data = {'name' : 'dict_item' }
168+ result = await crud_ins .create_model (db , data )
169+
170+ assert result .name == 'dict_item'
171+ assert result .id is not None
172+
173+
174+ @pytest .mark .asyncio
175+ async def test_create_model_with_dict_and_flush (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
176+ async with db .begin ():
177+ data = {'name' : 'dict_flush_item' }
178+ result = await crud_ins .create_model (db , data , flush = True )
179+
180+ assert result .name == 'dict_flush_item'
181+ assert result .id is not None
182+
183+
184+ @pytest .mark .asyncio
185+ async def test_create_model_with_dict_and_commit (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
186+ data = {'name' : 'dict_commit_item' }
187+ result = await crud_ins .create_model (db , data , commit = True )
188+
189+ assert result .name == 'dict_commit_item'
190+ assert result .id is not None
191+
192+
193+ @pytest .mark .asyncio
194+ async def test_create_model_with_dict_and_kwargs (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
195+ async with db .begin ():
196+ data = {'name' : 'dict_kwargs_item' }
197+ result = await crud_ins .create_model (db , data , is_deleted = True )
198+
199+ assert result .name == 'dict_kwargs_item'
200+ assert result .is_deleted is True
201+
202+
203+ @pytest .mark .asyncio
204+ async def test_create_models_with_dict (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
205+ async with db .begin ():
206+ data = [{'name' : f'dict_batch_{ i } ' } for i in range (3 )]
207+ results = await crud_ins .create_models (db , data )
208+
209+ assert len (results ) == 3
210+ assert all (r .name .startswith ('dict_batch_' ) for r in results )
211+ assert all (r .id is not None for r in results )
212+
213+
214+ @pytest .mark .asyncio
215+ async def test_create_models_with_dict_and_flush (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
216+ async with db .begin ():
217+ data = [{'name' : f'dict_flush_batch_{ i } ' } for i in range (2 )]
218+ results = await crud_ins .create_models (db , data , flush = True )
219+
220+ assert len (results ) == 2
221+ assert all (r .id is not None for r in results )
222+
223+
224+ @pytest .mark .asyncio
225+ async def test_create_models_with_dict_and_commit (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
226+ data = [{'name' : f'dict_commit_batch_{ i } ' } for i in range (2 )]
227+ results = await crud_ins .create_models (db , data , commit = True )
228+
229+ assert len (results ) == 2
230+ assert all (r .id is not None for r in results )
231+
232+
233+ @pytest .mark .asyncio
234+ async def test_create_models_with_dict_and_kwargs (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
235+ async with db .begin ():
236+ data = [{'name' : f'dict_kwargs_batch_{ i } ' } for i in range (2 )]
237+ results = await crud_ins .create_models (db , data , is_deleted = True )
238+
239+ assert len (results ) == 2
240+ assert all (r .is_deleted is True for r in results )
241+
242+
243+ @pytest .mark .asyncio
244+ async def test_create_models_with_mixed_input (db : AsyncSession , crud_ins : CRUDPlus [Ins ]):
245+ async with db .begin ():
246+ data = [
247+ CreateIns (name = 'schema_item' ),
248+ {'name' : 'dict_item' },
249+ CreateIns (name = 'schema_item_2' ),
250+ ]
251+ results = await crud_ins .create_models (db , data )
252+
253+ assert len (results ) == 3
254+ assert results [0 ].name == 'schema_item'
255+ assert results [1 ].name == 'dict_item'
256+ assert results [2 ].name == 'schema_item_2'
257+ assert all (r .id is not None for r in results )
0 commit comments