Commit 4b660520 authored by Rafael Monnerat's avatar Rafael Monnerat

slapos_mysql_innodb_catalog: Fixup and add test for catalog consistency

parent eca9bff4
Pipeline #17762 failed with stage
in 0 seconds
REPLACE INTO
consistency (uid, consistency_error)
DELETE FROM
consistency
WHERE
<dtml-in uid>
uid=<dtml-sqlvar sequence-item type="int"><dtml-if sequence-end><dtml-else> OR </dtml-if>
</dtml-in>
;
<dtml-var "'\0'">
INSERT INTO
consistency
VALUES
<dtml-in prefix="loop" expr="_.range(_.len(uid))">
(
......
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (C) 2013-2019 Nexedi SA and Contributors.
#
# This program is free software: you can Use, Study, Modify and Redistribute
# it under the terms of the GNU General Public License version 3, or (at your
# option) any later version, as published by the Free Software Foundation.
#
# You can also Link and Combine this program with other software covered by
# the terms of any of the Free Software licenses or any of the Open Source
# Initiative approved licenses and Convey the resulting work. Corresponding
# source of such a combination shall include the source code for all other
# software used.
#
# This program is distributed WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See COPYING file for full licensing terms.
# See https://www.nexedi.com/licensing for rationale and options.
#
##############################################################################
from erp5.component.test.SlapOSTestCaseMixin import SlapOSTestCaseMixin
import transaction
def checkConsistencyWithError(self, **kw):
return ["Inconsistent"]
def checkConsistencyWithoutError(self, **kw):
return []
class TestSlapOSCatalogConsistency(SlapOSTestCaseMixin):
def afterSetUp(self):
SlapOSTestCaseMixin.afterSetUp(self)
def testSaleInvoiceTransaction(self):
from Products.ERP5Type.Base import Base
sale_invoice_transaction = self.portal.accounting_module.newContent(
portal_type="Sale Invoice Transaction"
)
original_checkConsistency = Base.checkConsistency
Base.checkConsistency = checkConsistencyWithoutError
try:
transaction.commit()
sale_invoice_transaction.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Sale Invoice Transaction",
consistency_error=0,
uid=sale_invoice_transaction.getUid()
)
self.assertEqual(document, sale_invoice_transaction)
document = self.portal.portal_catalog.getResultValue(
portal_type="Sale Invoice Transaction",
consistency_error=1,
uid=sale_invoice_transaction.getUid()
)
self.assertEqual(document, None)
Base.checkConsistency = checkConsistencyWithError
transaction.commit()
sale_invoice_transaction.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Sale Invoice Transaction",
consistency_error=1,
uid=sale_invoice_transaction.getUid()
)
self.assertEqual(document, sale_invoice_transaction)
document = self.portal.portal_catalog.getResultValue(
portal_type="Sale Invoice Transaction",
consistency_error=0,
uid=sale_invoice_transaction.getUid(),
)
self.assertEqual(document, None)
finally:
Base.checkConsistency = original_checkConsistency
def testSubscriptionRequest(self):
from Products.ERP5Type.Base import Base
subscription_request = self.portal.subscription_request_module.newContent(
portal_type="Subscription Request"
)
original_checkConsistency = Base.checkConsistency
Base.checkConsistency = checkConsistencyWithoutError
try:
transaction.commit()
subscription_request.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Subscription Request",
consistency_error=0,
uid=subscription_request.getUid()
)
self.assertEqual(document, subscription_request)
document = self.portal.portal_catalog.getResultValue(
portal_type="Subscription Request",
consistency_error=1,
uid=subscription_request.getUid()
)
self.assertEqual(document, None)
Base.checkConsistency = checkConsistencyWithError
transaction.commit()
subscription_request.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Subscription Request",
consistency_error=1,
uid=subscription_request.getUid()
)
self.assertEqual(document, subscription_request)
document = self.portal.portal_catalog.getResultValue(
portal_type="Subscription Request",
consistency_error=0,
uid=subscription_request.getUid(),
)
self.assertEqual(document, None)
finally:
Base.checkConsistency = original_checkConsistency
def testNotIndexedOnConsistencyTable(self):
from Products.ERP5Type.Base import Base
person = self.portal.person_module.newContent(
portal_type="Person"
)
original_checkConsistency = Base.checkConsistency
Base.checkConsistency = checkConsistencyWithoutError
try:
transaction.commit()
person.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Person",
consistency_error=0,
uid=person.getUid()
)
self.assertEqual(document, None)
document = self.portal.portal_catalog.getResultValue(
portal_type="Person",
consistency_error=1,
uid=person.getUid()
)
self.assertEqual(document, None)
Base.checkConsistency = checkConsistencyWithError
transaction.commit()
person.immediateReindexObject()
self.tic()
document = self.portal.portal_catalog.getResultValue(
portal_type="Person",
consistency_error=1,
uid=person.getUid()
)
self.assertEqual(document, None)
document = self.portal.portal_catalog.getResultValue(
portal_type="Person",
consistency_error=0,
uid=person.getUid(),
)
self.assertEqual(document, None)
finally:
Base.checkConsistency = original_checkConsistency
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Test Component" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>testSlapOSCatalogConsistency</string> </value>
</item>
<item>
<key> <string>default_source_reference</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test.erp5.testSlapOSCatalogConsistency</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Test Component</string> </value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
test.erp5.testSlapOSCatalogConsistency
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment