Fix: MACHETE test_get_products lock_table

This commit is contained in:
Rodia 2024-12-29 15:31:24 -05:00
parent dbe5f4a116
commit 4541ad05f3
3 changed files with 95 additions and 39 deletions

View File

@ -1,34 +1,42 @@
from trytond.wsgi import app
from trytond.protocols.wrappers import (
# with_pool,
# with_transaction,
with_pool,
with_transaction,
user_application,
# allow_null_origin
)
import json
allow_null_origin)
# from werkzeug.wrappers import Response
don_confiao_application = user_application(
'sale_don_confiao')
@app.route('/<database_name>/sale_don_confiao/parties', methods=[
'GET'])
@app.route('/<database_name>/sale_don_confiao/parties', methods=[
'POST'])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
@app.route('/parties', methods=['GET'])
@app.route('/<database_name>/sale_don_confiao/parties')
def get_parties(request):
parties = [{
'id': 1,
'name': 'Alejandro'
}]
def parties(request, pool):
Party = pool.get('party.party')
parties = Party.search_read(
[],
order=[('id', 'ASC')],
fields_names=['id', 'name'])
return parties
return json.dumps(parties)
# @app.route('/parties')
# @allow_null_origin
# @with_pool
# @with_transaction()
# @don_confiao_application
# def get_parties(request, pool):
# Party = pool.get('party.party')
# parties = Party.search([])
# return json.dumps(parties)
@app.route('/<database_name>/sale_don_confiao/products', methods=['GET'])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def get_products(request, pool):
Product = pool.get('product.product')
products = Product.search_read(
[],
order=[('id', 'ASC')],
fields_names=['id', 'name'])
return products

View File

@ -1,17 +1,15 @@
from trytond.tests.test_routes import RoutesTestCase
from trytond.tests.test_tryton import Client
from trytond.protocols.wrappers import Response
from trytond.tests.test_tryton import RouteTestCase
from trytond.pool import Pool
from trytond.wsgi import app
from http import HTTPStatus
import uuid
import json
from trytond.tests.test_tryton import DB_NAME
from trytond.transaction import Transaction
class DonConfiaoApiRouteTestCase(
RoutesTestCase):
"Speco API Routes"
RouteTestCase):
"Don Confiao API Routes"
module = 'sale_don_confiao'
@ -21,23 +19,72 @@ class DonConfiaoApiRouteTestCase(
def setUpDatabase(cls):
pool = Pool()
Application = pool.get('res.user.application')
Company = pool.get('company.company')
Party = pool.get('party.party')
# Product = pool.get('product.product')
Application(
key=cls.key,
user=1,
application='sale_don_confiao',
state='validated').save()
customer = Party()
customer.name = 'Dunkan'
customer.save()
company = Company(
party=1,
currency=1
)
company.save()
def test_get_parties(self):
client = Client(app, Response)
client = self.client()
response = client.get(
'/parties',
f'/{self.db_name}/sale_don_confiao/parties',
headers={
'Authorization': f'bearer {self.key}',
})
parties = json.loads(
response.get_data().decode())
self.assertEqual(response.status_code, HTTPStatus.OK)
# response = client.get(
# '/parties',
# headers={
# 'Authorization': f'bearer {self.key}',
# })
# self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertEqual(len(parties), 1)
def test_get_products(self):
pool = Pool(DB_NAME)
transaction = Transaction().start(DB_NAME, 0, _lock_tables=[
'product_product'])
with transaction:
# MACHETE: Se bloquea la tabla manualmente
# transaction._locked_tables = ['product_product']
User = pool.get('res.user')
admin, = User.search([('login', '=', 'admin')])
admin.password = 'password'
admin.save()
ProductTemplate = pool.get('product.template')
Product = pool.get('product.product')
Uom = pool.get('product.uom')
template, = ProductTemplate.create([
{'name': 'Product',
'default_uom': Uom.search([('name', '=', 'Unit')])[0].id
}
])
Product.create([{'template': template.id}])
client = self.client()
response = client.get(
f'/{self.db_name}/sale_don_confiao/products',
headers={
'Authorization': f'bearer {self.key}',
})
products = json.loads(
response.get_data().decode())
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertEqual(len(products), 1)

View File

@ -1,6 +1,7 @@
[tryton]
version=6.8.0
version=7.4.0
depends:
ir
party
product
xml: