<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mint</id>
	<title>Izara Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mint"/>
	<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php/Special:Contributions/Mint"/>
	<updated>2026-05-04T11:26:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4332</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4332"/>
		<updated>2026-05-04T04:11:47Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Example request param from Commerce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,	&lt;br /&gt;
    addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
    timestamp:1111111&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
            inventoryTemplateId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4331</id>
		<title>Service - Entry</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4331"/>
		<updated>2026-05-04T03:45:53Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A credit or debit entry linked between a journal entry and an account.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== entry ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;entry&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;organization&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
		  &amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
		  &amp;quot;tableName&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		entryId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph','dynamo']&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;entryId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* accountingStatus: when a period is being closed we set all entries to processing, then once the return is completed set to locked&lt;br /&gt;
* when beginning process of an entry, maybe trigger ComAcc plugin to check whether journalId can be locked, for example if it is connected to a sale and the sale is in saleCommitted=working/updateWorking cannot be locked&lt;br /&gt;
* when processing or locked entries cannot be changed (journals cannot be changed if either of the entries on each side are processing or locked&lt;br /&gt;
* maybe the journal also has an accountingStatus, so easy to confirm cannot make changes, or perhaps only journals because entries cannot be changed directly&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasEntry ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasEntry: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Journal&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;journal&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inAccount ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	inAccount: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;AccountManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;account&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Entry| Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Entry]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4330</id>
		<title>Service - Entry</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4330"/>
		<updated>2026-05-04T03:45:26Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A credit or debit entry linked between a journal entry and an account.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== entry ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;entry&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;organization&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
		  &amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
		  &amp;quot;tableName&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		entryId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph','dynamo']&lt;br /&gt;
		},&lt;br /&gt;
		accountingStatus: { // &amp;quot;open&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;locked&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;entryId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* accountingStatus: when a period is being closed we set all entries to processing, then once the return is completed set to locked&lt;br /&gt;
* when beginning process of an entry, maybe trigger ComAcc plugin to check whether journalId can be locked, for example if it is connected to a sale and the sale is in saleCommitted=working/updateWorking cannot be locked&lt;br /&gt;
* when processing or locked entries cannot be changed (journals cannot be changed if either of the entries on each side are processing or locked&lt;br /&gt;
* maybe the journal also has an accountingStatus, so easy to confirm cannot make changes, or perhaps only journals because entries cannot be changed directly&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasEntry ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasEntry: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Journal&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;journal&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inAccount ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	inAccount: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;AccountManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;account&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Entry| Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Entry]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4329</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4329"/>
		<updated>2026-05-04T02:30:08Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* comAccPurchase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,	&lt;br /&gt;
    addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
            inventoryTemplateId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4328</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4328"/>
		<updated>2026-05-04T02:23:00Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Object Schemas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
            inventoryTemplateId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4327</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4327"/>
		<updated>2026-05-04T02:21:54Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* comAccPurchaseLink */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
            inventoryTemplateId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4320</id>
		<title>Service - Entry</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Entry&amp;diff=4320"/>
		<updated>2026-05-01T03:12:15Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A credit or debit entry linked between a journal entry and an account.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== entry ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;entry&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;organization&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;entryDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				amount: {&lt;br /&gt;
					type: &amp;quot;currencyValue&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
        },	&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
		  &amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
		  &amp;quot;tableName&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		entryId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph','dynamo']&lt;br /&gt;
		},&lt;br /&gt;
		accountingStatus: { // &amp;quot;open&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;locked&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;entryId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* accountingStatus: when a period is being closed we set all entries to processing, then once the return is completed set to locked&lt;br /&gt;
* when beginning process of an entry, maybe trigger ComAcc plugin to check whether journalId can be locked, for example if it is connected to a sale and the sale is in saleCommitted=working/updateWorking cannot be locked&lt;br /&gt;
* when processing or locked entries cannot be changed (journals cannot be changed if either of the entries on each side are processing or locked&lt;br /&gt;
* maybe the journal also has an accountingStatus, so easy to confirm cannot make changes, or perhaps only journals because entries cannot be changed directly&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasEntry ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasEntry: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Journal&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;journal&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inAccount ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	inAccount: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Entry&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;entry&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;AccountManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;account&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Entry| Entry]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Entry]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Journal&amp;diff=4319</id>
		<title>Service - Journal</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Journal&amp;diff=4319"/>
		<updated>2026-05-01T03:11:54Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* organization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A journal entry is a single transaction, each journal entry will have credit and debit entries that add up to each other and match the functionalCurrencyAmount.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== organization ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;journal&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;organization&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;propertyValue&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;journalDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				timestamp: {&lt;br /&gt;
					type: &amp;quot;timestamp&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
				amount: {&lt;br /&gt;
					type: &amp;quot;currencyValue&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
				amountCurrency: {&lt;br /&gt;
					type: &amp;quot;currency&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
				functionalCurrencyAmount: {&lt;br /&gt;
					type: &amp;quot;currencyValue&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
				exchangeRate: {&lt;br /&gt;
					type: &amp;quot;number&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
        },	&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
		  &amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
		  &amp;quot;tableName&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		journalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph','dynamo']&lt;br /&gt;
		},&lt;br /&gt;
		accountingStatus: { // &amp;quot;open&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;locked&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;journalId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* maybe add accountingStatus, same as entry, so can check if journal can be adjusted, or perhaps only journals because entries cannot be changed directly&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
* probably need relationship to organization that owns the entry, because will be floating initially (until entries connect to accounts)&lt;br /&gt;
* maybe adjust relationship to organization according to open or locked status, to make it easier to see which journals are awaiting processing end of period?&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Journal| Journal]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Journal]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4318</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4318"/>
		<updated>2026-04-30T09:14:58Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Example request param from Commerce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
            inventoryTemplateId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4317</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4317"/>
		<updated>2026-04-30T09:10:30Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Example request param from Commerce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
			type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			subType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4316</id>
		<title>Service - CommerceAccounting Purchase</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Purchase&amp;diff=4316"/>
		<updated>2026-04-30T09:10:10Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Example request param from Commerce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Handle links between purchases and Accounting records.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// accountLinkTag // type of link: inputVAT|..&lt;br /&gt;
		// accountId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountLinkTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets which Accounting accountId journal entries are added to&lt;br /&gt;
&lt;br /&gt;
== comAccPurchase ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchase&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId,&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		inputVatJournalId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccPurchaseLineItem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;ComAccLink&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;comAccLinkByBusiness&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccPurchaseLineItem&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// purchaseId,&lt;br /&gt;
		// purchaseLineItemId,&lt;br /&gt;
		// journalId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;purchaseLineItemId&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== createPurchase ==&lt;br /&gt;
&lt;br /&gt;
* when creating a purchase, iterate purchaseLineItems to decide which journal entries are created&lt;br /&gt;
* accountsPayable accountId comes from [[Service - CommerceAccounting Vendor]]&lt;br /&gt;
* each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service&lt;br /&gt;
&lt;br /&gt;
=== Example request param from Commerce ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	belongToIdentifiers: {&lt;br /&gt;
	  businessId: &amp;quot;xxx&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	purchaseId: &amp;quot;&amp;quot;,&lt;br /&gt;
	vendorId: &amp;quot;&amp;quot;,&lt;br /&gt;
	purchaseCurrencyId: &amp;quot;&amp;quot;,&lt;br /&gt;
	inventoryLocationId: &amp;quot;&amp;quot;, // required if have any inventory/?assets&lt;br /&gt;
	purchaseLineItems: {&lt;br /&gt;
		{purchaseLineItemId}: {&lt;br /&gt;
            inventoryId: &amp;quot;&amp;quot;,&lt;br /&gt;
			Type: &amp;quot;&amp;quot;, // inventory|expense|services|freight|salesTax|vatTax|other&lt;br /&gt;
			SubType: &amp;quot;&amp;quot;, // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard&lt;br /&gt;
			lineItemQuantity: 1,&lt;br /&gt;
			lineItemUnitPrice: &amp;quot;2.00&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		//...&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== updatePurchase ==&lt;br /&gt;
&lt;br /&gt;
* make adjustment to journal entries when purchaseLineItemId changes&lt;br /&gt;
* handle removal of purchase/journal entries, or creation of new entries&lt;br /&gt;
* basically re-calculate all entries and check against existing&lt;br /&gt;
* each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Purchase| CommerceAccounting Purchase]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Purchase]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Account_Manager&amp;diff=4308</id>
		<title>Service - Account Manager</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Account_Manager&amp;diff=4308"/>
		<updated>2026-04-24T08:00:46Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* isChildAccount */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Each account is handled by a [[Service - Account (handlers)]] service.&lt;br /&gt;
&lt;br /&gt;
All accounts in the General Ledger account hierarchy are considered an Account, including Control Accounts, Sub-Accounts, Subsidiary Accounts, and all other account classifications businesses use.&lt;br /&gt;
&lt;br /&gt;
The Account Manager service handles detail shared by all Account Handler services.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== objType ==&lt;br /&gt;
&lt;br /&gt;
=== inventory ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;account&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: { &lt;br /&gt;
		serviceTag: &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;organization&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		accountId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Object Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== isChildAccount ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	isChildAccount: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;accountManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;account&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;accountManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;account&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Account Manager| Account Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Account Manager]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Link&amp;diff=4305</id>
		<title>Service - CommerceAccounting Link</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Link&amp;diff=4305"/>
		<updated>2026-04-18T06:55:46Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* comAccLinkByOrganization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Configures the link between a Business in Izara Commerce and an organization in Izara Accounting.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccLinkByBusiness ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccLinkByBusiness&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccLinkByBusiness&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId		&lt;br /&gt;
		// organizationId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			// businessId&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccLinkByOrganization ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccLinkByOrganization&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccLinkByOrganization&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// organizationId&lt;br /&gt;
		// businessId		&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			// organizationId&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccAccountLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccAccountLink&amp;quot;,&lt;br /&gt;
	canDelete: true,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccAccountLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		businessId: {&lt;br /&gt;
			fromObjType:{&lt;br /&gt;
			  serviceTag: &amp;quot;CommerceAccountingLink&amp;quot;,&lt;br /&gt;
			  objectType: &amp;quot;comAccLink&amp;quot; &lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		organizationId: {&lt;br /&gt;
			fromObjType:{&lt;br /&gt;
			  serviceTag: &amp;quot;CommerceAccountingLink&amp;quot;,&lt;br /&gt;
			  objectType: &amp;quot;comAccLink&amp;quot; &lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		accountTag: { // this is the granular accounting classification that actions need to add entries to&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: false,&lt;br /&gt;
			userCanUpdate: false,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
		accountId: { // accountId from Izara Accounting&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			userCanUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldNames: [&amp;quot;businessId&amp;quot;,&amp;quot;organizationId&amp;quot;],&lt;br /&gt;
			name: &amp;quot;comAccLinkId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets up which Accounting Accounts are used for different connection tasks&lt;br /&gt;
* example: which Accounting Account is adjusted when stock increases/decreases&lt;br /&gt;
* will need to have a plugIn level shared const lib of all accountTags&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Link| CommerceAccounting Link]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Link]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Link&amp;diff=4304</id>
		<title>Service - CommerceAccounting Link</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_CommerceAccounting_Link&amp;diff=4304"/>
		<updated>2026-04-18T06:53:09Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* comAccLinkByBusiness */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Configures the link between a Business in Izara Commerce and an organization in Izara Accounting.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== comAccLinkByBusiness ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccLinkByBusiness&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccLinkByBusiness&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// businessId		&lt;br /&gt;
		// organizationId&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			// businessId&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccLinkByOrganization ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccLinkByOrganization&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		// organizationId&lt;br /&gt;
		// businessId		&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			// organizationId&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== comAccAccountLink ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;comAccAccountLink&amp;quot;,&lt;br /&gt;
	canDelete: true,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;comAccAccountLink&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		businessId: {&lt;br /&gt;
			fromObjType:{&lt;br /&gt;
			  serviceTag: &amp;quot;CommerceAccountingLink&amp;quot;,&lt;br /&gt;
			  objectType: &amp;quot;comAccLink&amp;quot; &lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		organizationId: {&lt;br /&gt;
			fromObjType:{&lt;br /&gt;
			  serviceTag: &amp;quot;CommerceAccountingLink&amp;quot;,&lt;br /&gt;
			  objectType: &amp;quot;comAccLink&amp;quot; &lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		accountTag: { // this is the granular accounting classification that actions need to add entries to&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: false,&lt;br /&gt;
			userCanUpdate: false,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
		accountId: { // accountId from Izara Accounting&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			userCanUpdate: true,&lt;br /&gt;
			storageResourceTags: [&amp;quot;dynamo&amp;quot;],&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldNames: [&amp;quot;businessId&amp;quot;,&amp;quot;organizationId&amp;quot;],&lt;br /&gt;
			name: &amp;quot;comAccLinkId&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;sortKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;accountTag&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* sets up which Accounting Accounts are used for different connection tasks&lt;br /&gt;
* example: which Accounting Account is adjusted when stock increases/decreases&lt;br /&gt;
* will need to have a plugIn level shared const lib of all accountTags&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - CommerceAccounting Link| CommerceAccounting Link]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| CommerceAccounting Link]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2026-04-16_-_Cross_Project_Account_Config&amp;diff=4303</id>
		<title>2026-04-16 - Cross Project Account Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2026-04-16_-_Cross_Project_Account_Config&amp;diff=4303"/>
		<updated>2026-04-18T02:04:23Z</updated>

		<summary type="html">&lt;p&gt;Mint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Development - Izara Commerce to Accounting]]&lt;br /&gt;
&lt;br /&gt;
= Example case =&lt;br /&gt;
&lt;br /&gt;
* Commerce has option when creating a new Business to create new Organization in Izara Accounting and link through ComAcc&lt;br /&gt;
* Cross platform sign in system for frontend will automatically create user accounts on each project as we redirect there (ComAcc and Accounting)&lt;br /&gt;
* redirects to ComAcc and Accounting to make sure user data created&lt;br /&gt;
* ComAcc offers list of accounting configs to choose from, these configs are saved in ComAcc&lt;br /&gt;
* Accounting config includes:&lt;br /&gt;
** ImportBatch file for creating an organization, accounts, ledgers, periods etc for the user in Accounting project&lt;br /&gt;
** List of standard links for ComAcc, eg each inventory type&lt;br /&gt;
** Some values, such as period, might require confirmation (up to Accounting config setup/ui)&lt;br /&gt;
* After ImportBatch completes at Accounting ComAcc logic can create main comAccLinks and plugInLinks&lt;br /&gt;
* ComAcc query ImportBatch and pendingObjects to find eg account identifiers&lt;br /&gt;
* create links in ComAcc between Commerce object types and created Accounting accounts&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2026-04-16]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Business&amp;diff=4246</id>
		<title>Service - Business</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Business&amp;diff=4246"/>
		<updated>2026-03-26T08:30:41Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* business */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A user can have many businesses, each business has it's independent set of data.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== business ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;business&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
    generatedBy: &amp;quot;userGenerated&amp;quot;,&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;propertyValue&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;businessDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				&amp;quot;businessName&amp;quot;:{&lt;br /&gt;
					type: &amp;quot;string&amp;quot;,&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		businessId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			canUpdate: false,&lt;br /&gt;
			userCanUpdate: false,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		functionalCurrency: {&lt;br /&gt;
			type: &amp;quot;currency&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: false,&lt;br /&gt;
			userCanUpdate: false,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;businessId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RelationshipSchemas ==&lt;br /&gt;
&lt;br /&gt;
=== hasBusiness ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasBusiness: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;Business&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;removedBusiness&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],		&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== removedBusiness ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	removedBusiness: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;Business&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;hasBusiness&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],		&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;User&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;user&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* links a user to the businesses they manage&lt;br /&gt;
* does not convey ownership, each business is a standalone organization that has it's own RBAC (allowing for simple transfer of ownership of data)&lt;br /&gt;
* user can link themselves to any businesses so ui can present list of connected businesses&lt;br /&gt;
&lt;br /&gt;
= Addresses =&lt;br /&gt;
&lt;br /&gt;
* use same structure as users in Izara Market&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Business| Business]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Business]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Manufacture_Operation&amp;diff=4242</id>
		<title>Service - Manufacture Operation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Manufacture_Operation&amp;diff=4242"/>
		<updated>2026-03-23T06:57:44Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* manufactureOperation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
A Manufacture Operation is one manufacturing job that can have multiple work in progress details attached to it.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== manufactureOperation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;manufactureOperation&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;manufactureOperationDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				manufactureOperationUserTag: {&lt;br /&gt;
					type: &amp;quot;string&amp;quot;&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
        },	&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;manufactureOperation&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
	},&lt;br /&gt;
	fieldNames: {&lt;br /&gt;
		manufactureOperationId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		status: { // &amp;quot;inProgress&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;complete&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;manufactureOperationId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasWorkInProgress ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasWorkInProgress: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;ManufactureOperation&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;removedWorkInProgress&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;ManufactureOperation&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;manufactureOperation&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;WorkInProgressManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;workInProgress&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					requiredOnCreate: true,&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== removedWorkInProgress ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	removedWorkInProgress: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;ManufactureOperation&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;hasWorkInProgress&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;ManufactureOperation&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;manufactureOperation&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;WorkInProgressManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;workInProgress&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== completeManufactureOperation ==&lt;br /&gt;
&lt;br /&gt;
* sets status to processing which locks adding or removing workInProgress links until completed&lt;br /&gt;
&lt;br /&gt;
== reopenManufactureOperation ==&lt;br /&gt;
&lt;br /&gt;
* changes a ManufactureOperation from complete to inProgress&lt;br /&gt;
* if comAcc plugin connected needs to check Accounting entries not locked before proceeding&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Manufacture Operation|Manufacture Operation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Manufacture Operation]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4190</id>
		<title>Service - Services Template</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4190"/>
		<updated>2026-03-19T02:25:29Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* servicesTemplate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Same as [[Service - Inventory Template]] but for services.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== servicesTemplate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateDefault&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateFixed&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        {&lt;br /&gt;
          type: &amp;quot;versionedData&amp;quot;,&lt;br /&gt;
          versionedDataLabel: &amp;quot;servicesTemplateName&amp;quot;,&lt;br /&gt;
          storageResourceTag: &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
          fieldNames: {&lt;br /&gt;
             servicesTemplateName: {&lt;br /&gt;
             type: &amp;quot;string&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		servicesTemplateId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;servicesTemplateId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RelationshipSchemas ==&lt;br /&gt;
&lt;br /&gt;
=== hasServicesTemplate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasServicesTemplate: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;services&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Services Template| Services Template]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Services Template]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4189</id>
		<title>Service - Services Template</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4189"/>
		<updated>2026-03-19T02:25:14Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* servicesTemplate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Same as [[Service - Inventory Template]] but for services.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== servicesTemplate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateDefault&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateFixed&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        {&lt;br /&gt;
          type: &amp;quot;versionedData&amp;quot;,&lt;br /&gt;
          versionedDataLabel: &amp;quot;servicesTemplateName&amp;quot;,&lt;br /&gt;
          storageResourceTag: &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
          fieldNames: {&lt;br /&gt;
             servicesTemplateName: {&lt;br /&gt;
             type: &amp;quot;string&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		servicesTemplateId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		servicesTemplateName: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			userCanUpdate:true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;servicesTemplateId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RelationshipSchemas ==&lt;br /&gt;
&lt;br /&gt;
=== hasServicesTemplate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasServicesTemplate: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;services&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Services Template| Services Template]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Services Template]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4188</id>
		<title>Service - Services Template</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Services_Template&amp;diff=4188"/>
		<updated>2026-03-19T01:19:31Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* servicesTemplate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Same as [[Service - Inventory Template]] but for services.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== servicesTemplate ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateDefault&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  type: &amp;quot;attributeTree&amp;quot;,    &lt;br /&gt;
		  attributeTreeTag: &amp;quot;servicesTemplateFixed&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
        {&lt;br /&gt;
          type: &amp;quot;versionedData&amp;quot;,&lt;br /&gt;
          versionedDataLabel: &amp;quot;servicesTemplateName&amp;quot;,&lt;br /&gt;
          storageResourceTag: &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
          fieldNames: {&lt;br /&gt;
&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		servicesTemplateId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		servicesTemplateName: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			requiredOnCreate: true,&lt;br /&gt;
			canUpdate: true,&lt;br /&gt;
			userCanUpdate:true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;servicesTemplateId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RelationshipSchemas ==&lt;br /&gt;
&lt;br /&gt;
=== hasServicesTemplate ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasServicesTemplate: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;services&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;servicesTemplate&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;servicesTemplate&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Services Template| Services Template]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Services Template]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Sale&amp;diff=4172</id>
		<title>Service - Sale</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Sale&amp;diff=4172"/>
		<updated>2026-03-17T05:24:56Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* sale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Sales of inventory to customers.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== sale ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;sale&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;saleDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				saleCurrencyId: {&lt;br /&gt;
					type: &amp;quot;string&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
        },	&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;sale&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
	},&lt;br /&gt;
	fieldNames: {&lt;br /&gt;
		saleId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		saleTotal:  {&lt;br /&gt;
			type: &amp;quot;number&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		saleCommitted: { // &amp;quot;working&amp;quot;|&amp;quot;updateWorking&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;committed&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;saleId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* when building a sale it is in working stage, must click complete to become an actual sale&lt;br /&gt;
* saleCompleted sets to processing once compelteSale begins, probably needs uniqueRequestId also&lt;br /&gt;
* when a change is made to a sale (that affects accounting data) saleCompleted resets to updateWorking&lt;br /&gt;
&lt;br /&gt;
== invoiceGroup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;invoiceGroup&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	fieldNames: {&lt;br /&gt;
		invoiceGroupId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		numberingType: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		numberingSettings: {&lt;br /&gt;
			type: &amp;quot;object&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;invoiceGroupId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* groups sales into classifications&lt;br /&gt;
* invoice numbers can be separated by groups, eg separate sequencial numbering&lt;br /&gt;
* numberingSettings saves details such as prefix, suffix, method of sequencial ordering, period when numbering resets&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasSale ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasSale: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Customer&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;customer&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hasSaleLineItem ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasSaleLineItem: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;oldSaleLineItem&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;saleLineItem&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== oldSaleLineItem ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	oldSaleLineItem: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;hasSaleLineItem&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;saleLineItem&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== commitNewSale ==&lt;br /&gt;
&lt;br /&gt;
* uses saleCommitted setting to complete sale, which sends saleLineItems and details to ComAcc plugin to create account entries&lt;br /&gt;
&lt;br /&gt;
== commitUpdateSale ==&lt;br /&gt;
&lt;br /&gt;
* after changes made uses saleCommitted setting to complete the sale update, sending saleLineItems and details to ComAcc plugin to update account entries&lt;br /&gt;
&lt;br /&gt;
== updateSale ==&lt;br /&gt;
&lt;br /&gt;
* if have ComAcc plugin enabled, send request to plugin to check if sale has been locked on Accounting&lt;br /&gt;
&lt;br /&gt;
= Addresses =&lt;br /&gt;
&lt;br /&gt;
* use same structure as orders in Izara Market&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Sale|Sale]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Sale]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Sale&amp;diff=4171</id>
		<title>Service - Sale</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Sale&amp;diff=4171"/>
		<updated>2026-03-17T01:18:30Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* sale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Sales of inventory to customers.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== sale ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;sale&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		{&lt;br /&gt;
			type:&amp;quot;versionedData&amp;quot;,&lt;br /&gt;
			versionedDataLabel: &amp;quot;saleDetail&amp;quot;,&lt;br /&gt;
			storageResourceTag : &amp;quot;myGraph&amp;quot;,&lt;br /&gt;
			fieldNames: {&lt;br /&gt;
				saleCurrencyId: {&lt;br /&gt;
					type: &amp;quot;string&amp;quot;,&lt;br /&gt;
					storageResourceTags: ['myGraph']&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
        },	&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;dynamo&amp;quot;: {&lt;br /&gt;
			&amp;quot;storageType&amp;quot;: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;sale&amp;quot;,&lt;br /&gt;
		}  &lt;br /&gt;
	},&lt;br /&gt;
	fieldNames: {&lt;br /&gt;
		saleId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		saleTotal:  {&lt;br /&gt;
			type: &amp;quot;number&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		saleCommitted: { // &amp;quot;working&amp;quot;|&amp;quot;updateWorking&amp;quot;|&amp;quot;processing&amp;quot;|&amp;quot;committed&amp;quot;&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['dynamo']&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;saleId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* when building a sale it is in working stage, must click complete to become an actual sale&lt;br /&gt;
* saleCompleted sets to processing once compelteSale begins, probably needs uniqueRequestId also&lt;br /&gt;
* when a change is made to a sale (that affects accounting data) saleCompleted resets to updateWorking&lt;br /&gt;
&lt;br /&gt;
== invoiceGroup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;invoiceGroup&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: {&lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	fieldNames: {&lt;br /&gt;
		invoiceGroupId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		numberingType: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
		numberingSettings: {&lt;br /&gt;
			type: &amp;quot;object&amp;quot;,&lt;br /&gt;
			storageResourceTags: ['myGraph']&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;identifier&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;invoiceGroupId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* groups sales into classifications&lt;br /&gt;
* invoice numbers can be separated by groups, eg separate sequencial numbering&lt;br /&gt;
* numberingSettings saves details such as prefix, suffix, method of sequencial ordering, period when numbering resets&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== hasSale ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasSale: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Customer&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;customer&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hasSaleLineItem ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	hasSaleLineItem: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;oldSaleLineItem&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;saleLineItem&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== oldSaleLineItem ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	oldSaleLineItem: {&lt;br /&gt;
		canChangeToRelTypes: [&lt;br /&gt;
			{&lt;br /&gt;
				serviceTag:&amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
				relationshipTag: &amp;quot;hasSaleLineItem&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		],&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;Sale&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;sale&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;SaleLineItemManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;saleLineItem&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= flowSchemas =&lt;br /&gt;
&lt;br /&gt;
== commitNewSale ==&lt;br /&gt;
&lt;br /&gt;
* uses saleCommitted setting to complete sale, which sends saleLineItems and details to ComAcc plugin to create account entries&lt;br /&gt;
&lt;br /&gt;
== commitUpdateSale ==&lt;br /&gt;
&lt;br /&gt;
* after changes made uses saleCommitted setting to complete the sale update, sending saleLineItems and details to ComAcc plugin to update account entries&lt;br /&gt;
&lt;br /&gt;
== updateSale ==&lt;br /&gt;
&lt;br /&gt;
* if have ComAcc plugin enabled, send request to plugin to check if sale has been locked on Accounting&lt;br /&gt;
&lt;br /&gt;
= Addresses =&lt;br /&gt;
&lt;br /&gt;
* use same structure as orders in Izara Market&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Sale|Sale]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Sale]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4167</id>
		<title>Service - Inventory Location Manager</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4167"/>
		<updated>2026-03-14T06:03:17Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* inventoryLocation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Where inventory is located, inventory location also distinguishes whether an inventoryUnit is in stock, is work in progress, was the input to other unit/s through production, or sold to a customer.&lt;br /&gt;
&lt;br /&gt;
To move an inventoryUnit from one location to another (eg to sell it) requires reserving the stock, performing the movement (eg removing/adding links in graph), then confirming the reservation.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== objType ==&lt;br /&gt;
&lt;br /&gt;
=== inventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: { &lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		type: &amp;quot;propertyValue&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		dynamoDB: {&lt;br /&gt;
			storageType: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		inventoryLocationId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph', 'dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
		inventoryLocationHandlerServiceNameTag: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;inventoryLocationId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Object Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== atInventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	atInventoryLocation: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryUnit&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryLocationManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryLocation&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* handle history of inventoryLocations same as stockLocations&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Inventory Location Manager|Inventory Location Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Inventory Location Manager]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4166</id>
		<title>Service - Inventory Location Manager</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4166"/>
		<updated>2026-03-14T05:50:16Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* at_InventoryLocation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Where inventory is located, inventory location also distinguishes whether an inventoryUnit is in stock, is work in progress, was the input to other unit/s through production, or sold to a customer.&lt;br /&gt;
&lt;br /&gt;
To move an inventoryUnit from one location to another (eg to sell it) requires reserving the stock, performing the movement (eg removing/adding links in graph), then confirming the reservation.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== objType ==&lt;br /&gt;
&lt;br /&gt;
=== inventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: { &lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		type: &amp;quot;propertyValue&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		dynamoDB: {&lt;br /&gt;
			storageType: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		inventoryLocationId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph', 'dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
		inventoryLocationHandlerServiceNameTag: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;inventoryId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Object Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== atInventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	atInventoryLocation: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryUnit&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryLocationManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryLocation&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* handle history of inventoryLocations same as stockLocations&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Inventory Location Manager|Inventory Location Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Inventory Location Manager]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4165</id>
		<title>Service - Inventory Location Manager</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Inventory_Location_Manager&amp;diff=4165"/>
		<updated>2026-03-14T02:27:45Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* inventoryLocation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Where inventory is located, inventory location also distinguishes whether an inventoryUnit is in stock, is work in progress, was the input to other unit/s through production, or sold to a customer.&lt;br /&gt;
&lt;br /&gt;
To move an inventoryUnit from one location to another (eg to sell it) requires reserving the stock, performing the movement (eg removing/adding links in graph), then confirming the reservation.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Object Schemas =&lt;br /&gt;
; Additional Information: [[Per Service Schemas]]&lt;br /&gt;
&lt;br /&gt;
== objType ==&lt;br /&gt;
&lt;br /&gt;
=== inventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	objectType: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
	canDelete: false,&lt;br /&gt;
	belongTo: { &lt;br /&gt;
		serviceTag: &amp;quot;Business&amp;quot;,&lt;br /&gt;
		objectType: &amp;quot;business&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	addOnDataStructure: [&lt;br /&gt;
		type: &amp;quot;propertyValue&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	storageResources: {&lt;br /&gt;
		myGraph: {&lt;br /&gt;
			storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
			graphServerTag: &amp;quot;GraphHandler&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		dynamoDB: {&lt;br /&gt;
			storageType: &amp;quot;dynamoDB&amp;quot;,&lt;br /&gt;
			&amp;quot;tableName&amp;quot;: &amp;quot;inventoryLocation&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
    },&lt;br /&gt;
    fieldNames: {&lt;br /&gt;
		inventoryLocationId: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			randomOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['myGraph', 'dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
		inventoryLocationHandlerServiceNameTag: {&lt;br /&gt;
			type: &amp;quot;string&amp;quot;,&lt;br /&gt;
			optionalOnCreate: true,&lt;br /&gt;
			storageResourceTags: ['dynamoDB']&lt;br /&gt;
		},&lt;br /&gt;
    },&lt;br /&gt;
    identifiers: [&lt;br /&gt;
		{&lt;br /&gt;
			type: &amp;quot;partitionKey&amp;quot;,&lt;br /&gt;
			fieldName: &amp;quot;inventoryId&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Object Relationships ==&lt;br /&gt;
&lt;br /&gt;
=== at_InventoryLocation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	at_InventoryLocation: {&lt;br /&gt;
		storageResources: {&lt;br /&gt;
			myGraph: {&lt;br /&gt;
				storageType: &amp;quot;graph&amp;quot;,&lt;br /&gt;
				graphServerTag: &amp;quot;GraphHandler&amp;quot;			&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		links: [&lt;br /&gt;
			{&lt;br /&gt;
				storageResourceTags: [&amp;quot;myGraph&amp;quot;],&lt;br /&gt;
				from: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryUnit&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;many&amp;quot;,&lt;br /&gt;
				},&lt;br /&gt;
				to: {&lt;br /&gt;
					objType: {&lt;br /&gt;
						serviceTag: &amp;quot;inventoryLocationManager&amp;quot;,&lt;br /&gt;
						objectType: &amp;quot;inventoryLocation&amp;quot;&lt;br /&gt;
					},&lt;br /&gt;
					linkType: &amp;quot;one&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* handle history of inventoryLocations same as stockLocations&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Inventory Location Manager|Inventory Location Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Inventory Location Manager]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4140</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4140"/>
		<updated>2026-03-08T08:55:47Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Syntax event */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: fase,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: fase,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: fase,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;TestUnit&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- TestUnit is store status each unit &lt;br /&gt;
each unit save in table TestUnit&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = stages index 0 result '''input'''&lt;br /&gt;
output_1 = stages index 1 result '''output'''&lt;br /&gt;
invokeInput_0_1 = stages index 0 result '''invokes''' index 1 position input &lt;br /&gt;
invokeOutput_0_1 = stages index 0 result '''invokes''' index 1 position output&lt;br /&gt;
dynamodb_0_1 =  stages index 0 result '''dynamodb''' index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all TestUnit finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each TestUnit )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4139</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4139"/>
		<updated>2026-03-08T08:55:02Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Syntax event */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;TestUnit&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- TestUnit is store status each unit &lt;br /&gt;
each unit save in table TestUnit&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = stages index 0 result '''input'''&lt;br /&gt;
output_1 = stages index 1 result '''output'''&lt;br /&gt;
invokeInput_0_1 = stages index 0 result '''invokes''' index 1 position input &lt;br /&gt;
invokeOutput_0_1 = stages index 0 result '''invokes''' index 1 position output&lt;br /&gt;
dynamodb_0_1 =  stages index 0 result '''dynamodb''' index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all TestUnit finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each TestUnit )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4138</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4138"/>
		<updated>2026-03-08T08:50:21Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Sqs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;TestUnit&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- TestUnit is store status each unit &lt;br /&gt;
each unit save in table TestUnit&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = stages index 0 result '''input'''&lt;br /&gt;
output_1 = stages index 1 result '''output'''&lt;br /&gt;
invokeInput_0_1 = stages index 0 result '''invokes''' index 1 position input &lt;br /&gt;
invokeOutput_0_1 = stages index 0 result '''invokes''' index 1 position output&lt;br /&gt;
dynamodb_0_1 =  stages index 0 result '''dynamodb''' index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all TestUnit finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each TestUnit )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4137</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4137"/>
		<updated>2026-03-05T06:30:33Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Result of integrationtest */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;TestUnit&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- TestUnit is store status each unit &lt;br /&gt;
each unit save in table TestUnit&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = stages index 0 result '''input'''&lt;br /&gt;
output_1 = stages index 1 result '''output'''&lt;br /&gt;
invokeInput_0_1 = stages index 0 result '''invokes''' index 1 position input &lt;br /&gt;
invokeOutput_0_1 = stages index 0 result '''invokes''' index 1 position output&lt;br /&gt;
dynamodb_0_1 =  stages index 0 result '''dynamodb''' index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all TestUnit finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each TestUnit )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4136</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4136"/>
		<updated>2026-03-04T04:16:56Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Result of integrationtest */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;unitTest&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- UnitTest is store status each unit &lt;br /&gt;
each unit save in table UnitTest&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = stages index 0 result '''input'''&lt;br /&gt;
output_1 = stages index 1 result '''output'''&lt;br /&gt;
invokeInput_0_1 = stages index 0 result '''invokes''' index 1 position input &lt;br /&gt;
invokeOutput_0_1 = stages index 0 result '''invokes''' index 1 position output&lt;br /&gt;
dynamodb_0_1 =  stages index 0 result '''dynamodb''' index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all unitTest finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each unitTest )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4135</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4135"/>
		<updated>2026-03-04T04:15:38Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Sumla all test is status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;unitTest&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- UnitTest is store status each unit &lt;br /&gt;
each unit save in table UnitTest&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = point stage index 0 result input&lt;br /&gt;
output_1 = point stage index 1 result output&lt;br /&gt;
invokeInput_0_1 =  point stage index 0 result invokes index 1 position input &lt;br /&gt;
invokeOutput_0_1 = point stage index 0 result invokes index 1 position output&lt;br /&gt;
dynamodb_0_1 =  point stage index 0 result dynamodb index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all unitTest finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each unitTest )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Summary of test status == &lt;br /&gt;
:1.testStatus is &amp;quot;passed&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failed.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record &amp;quot;errorsTest&amp;quot; in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4134</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4134"/>
		<updated>2026-03-04T04:11:00Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Sumla all test is status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;unitTest&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- UnitTest is store status each unit &lt;br /&gt;
each unit save in table UnitTest&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = point stage index 0 result input&lt;br /&gt;
output_1 = point stage index 1 result output&lt;br /&gt;
invokeInput_0_1 =  point stage index 0 result invokes index 1 position input &lt;br /&gt;
invokeOutput_0_1 = point stage index 0 result invokes index 1 position output&lt;br /&gt;
dynamodb_0_1 =  point stage index 0 result dynamodb index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all unitTest finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each unitTest )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Sumla all test is status == &lt;br /&gt;
:1.testStatus is &amp;quot;passred&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failse.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4.testStatus is &amp;quot;failed&amp;quot; have record&amp;quot;errorsTest&amp;quot; , in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4133</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=4133"/>
		<updated>2026-03-04T04:10:20Z</updated>

		<summary type="html">&lt;p&gt;Mint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Result of integrationtest =&lt;br /&gt;
Data have 2 table &amp;quot;TestRecord&amp;quot; and &amp;quot;unitTest&amp;quot;.&lt;br /&gt;
:- TestRecord is table all unti of stage inside eg input output invokes and dynamodb&lt;br /&gt;
:- UnitTest is store status each unit &lt;br /&gt;
each unit save in table UnitTest&lt;br /&gt;
testRecordId is  name of test concat with testTime.&lt;br /&gt;
testUnitId is point to position of unti instage.&lt;br /&gt;
resultStatus is status of unit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
eg:&lt;br /&gt;
input_0 = point stage index 0 result input&lt;br /&gt;
output_1 = point stage index 1 result output&lt;br /&gt;
invokeInput_0_1 =  point stage index 0 result invokes index 1 position input &lt;br /&gt;
invokeOutput_0_1 = point stage index 0 result invokes index 1 position output&lt;br /&gt;
dynamodb_0_1 =  point stage index 0 result dynamodb index 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after all unitTest finish (check  by awaitingMultiplestep penditnStep is integrationtestTag awaitingStepId is each unitTest )&lt;br /&gt;
check all awaitingStep finish send message to ultimateIntegrationtest for sumla all test is status&lt;br /&gt;
&lt;br /&gt;
== Sumla all test is status == &lt;br /&gt;
:1.testStatus is &amp;quot;passred&amp;quot; all unit passed.&lt;br /&gt;
:2.testStatus is &amp;quot;failed&amp;quot;  have some is failse.&lt;br /&gt;
:3.testStatus is &amp;quot;processing&amp;quot; have some is have status processing after check all awaiting step is finish.&lt;br /&gt;
:4. testStatus is &amp;quot;failed&amp;quot; have record&amp;quot;errorsTest&amp;quot; , in case &amp;quot;not match stage invoke&amp;quot;, 'found multiple matchingInvokes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3909</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3909"/>
		<updated>2026-01-09T03:21:04Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Inv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: [], // optional&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3904</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3904"/>
		<updated>2026-01-08T09:16:05Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Inv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;dynamoDBSeedDataTags&amp;quot;:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;graphSeedDataTags&amp;quot;:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
   &amp;quot;cleaningeDynamoOneRecordsTags&amp;quot;: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
   &amp;quot;cleaningeDynamoManyRecordsTags&amp;quot;: []&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3887</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3887"/>
		<updated>2026-01-05T08:20:23Z</updated>

		<summary type="html">&lt;p&gt;Mint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference:&lt;br /&gt;
&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
= File extension =&lt;br /&gt;
&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Table test=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-11-20]]&lt;br /&gt;
[[Category:Working documents - Integration Testing| 2025-11-20]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3762</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3762"/>
		<updated>2025-12-28T06:43:41Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Dsq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3761</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3761"/>
		<updated>2025-12-28T06:42:52Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Sqs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;useIsEqual&amp;quot;:true,&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3760</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3760"/>
		<updated>2025-12-28T05:14:11Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Setting of test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
*[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3759</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3759"/>
		<updated>2025-12-28T05:13:01Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Setting of test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[2025-11-20 IntegrationTest#dynamoDBSeedDataTags|dynamoDBSeedDataTags]]&lt;br /&gt;
[[2025-11-20 IntegrationTest#graphSeedDataTags|graphSeedDataTags]]&lt;br /&gt;
[[2025-11-20 IntegrationTest#cleaningeDynamoOneRecordsTags|cleaningeDynamoOneRecordsTags]]&lt;br /&gt;
[[2025-11-20 IntegrationTest#cleaningeDynamoManyRecordsTags|cleaningeDynamoManyRecordsTags]]&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3758</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3758"/>
		<updated>2025-12-28T05:09:25Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Refresh Seed Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
:'''canbe share''' seed data for other test by seed data tag.&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
==== dynamoDBSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== graphSeedDataTags ====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3757</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3757"/>
		<updated>2025-12-28T05:09:18Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Setting of test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
dynamoDBSeedDataTags&lt;br /&gt;
graphSeedDataTags&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3756</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3756"/>
		<updated>2025-12-28T05:04:26Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Refresh seed data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
dynamoDBSeedDataTags&lt;br /&gt;
graphSeedDataTags&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            cleaningeDynamoOneRecordsTags: [&amp;quot;cleaningSeed_partitionKey_sortKey_normol&amp;quot;], //optional&lt;br /&gt;
            cleaningeDynamoManyRecordsTags: [], // optional&lt;br /&gt;
            stages:[&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3755</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3755"/>
		<updated>2025-12-28T05:00:26Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Setting of test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
dynamoDBSeedDataTags&lt;br /&gt;
graphSeedDataTags&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3754</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3754"/>
		<updated>2025-12-28T04:58:17Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* Seed Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
dynamoDBSeedDataTags&lt;br /&gt;
graphSeedDataTags&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
====cleaningeDynamoOneRecordsTags====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_TestFindData_and_Education_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;cleaning-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestEducation&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-AA&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-BB&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;studentId&amp;quot;: &amp;quot;cleaning-CC&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;cleaningSeed_TestMemberPersonnel_case_invalid01&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;namtan&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;qqqww&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;jack&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;q1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;Momay&amp;quot;,&lt;br /&gt;
          &amp;quot;passwordId&amp;quot;: &amp;quot;ttr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cleaningeDynamoManyRecordsTags ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cleaningSeed_manyData_partitionKey_only_miss_sort&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestMemberPersonnel&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryKeys&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;userId&amp;quot;: &amp;quot;many-data&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*logic query table MLocationsTestMemberPersonnel use primary Keys &amp;quot;userId&amp;quot; and then delete all data from primary Keys.&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3753</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3753"/>
		<updated>2025-12-28T04:50:22Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* seed Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
&lt;br /&gt;
=== Main Seed Data===&lt;br /&gt;
:Save file in s3 (in '''buckname''' :integrationtest-config-us-east-2, '''folder''':seedData_integrationTest).For other dev use service,If a developer wants to add more for other important testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamodb)&lt;br /&gt;
:To clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
=== Refresh Seed Data ===&lt;br /&gt;
:ProcessRefreshSeedData use seedDataTag for create data environment of '''test''' and can be refresh seeddata re-test agian.&lt;br /&gt;
&lt;br /&gt;
'''How to use:'''&lt;br /&gt;
:Save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
dynamoDBSeedDataTags&lt;br /&gt;
graphSeedDataTags&lt;br /&gt;
&lt;br /&gt;
=== Cleaning Seed Data ===&lt;br /&gt;
:Delete seed data for set environment of '''test'''.&lt;br /&gt;
*cleaningeDynamoOneRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
*cleaningeDynamoManyRecordsTags.json&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3752</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3752"/>
		<updated>2025-12-28T04:33:00Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* SeedDataTag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
==MainSeedfData==&lt;br /&gt;
:save file in s3 (in buckname :integrationtest-config-us-east-2, folder:seedData_integrationTest)&lt;br /&gt;
::-for other dev use service,If a developer wants to add more for other important testing purposes&lt;br /&gt;
:'''How to use'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamod)&lt;br /&gt;
:to clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
==SeedDataTag==&lt;br /&gt;
Data use for create environment of ''test'' and can be refresh seeddata re-test agian.&lt;br /&gt;
save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3735</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3735"/>
		<updated>2025-11-25T05:20:25Z</updated>

		<summary type="html">&lt;p&gt;Mint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Referance:&lt;br /&gt;
*[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
*[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
*[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
==MainSeedfData==&lt;br /&gt;
:save file in s3 (in buckname :integrationtest-config-us-east-2, folder:seedData_integrationTest)&lt;br /&gt;
::-for other dev use service,If a developer wants to add more for other important testing purposes&lt;br /&gt;
:'''How to use'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamod)&lt;br /&gt;
:to clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
==SeedDataTag==&lt;br /&gt;
Data use for create environment of ''test'' and can be refresh seeddata re-test agian.&lt;br /&gt;
save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3734</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3734"/>
		<updated>2025-11-25T05:19:43Z</updated>

		<summary type="html">&lt;p&gt;Mint: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[2020-10-01 - Integration Test Config - Functions|IntegrationtestConfig]]&lt;br /&gt;
[[2020-10-01 - Integration Testing - Lambda Functions|Integrationtesting]]&lt;br /&gt;
[[2025-02-20 - Integration Test examples|Example]]&lt;br /&gt;
&lt;br /&gt;
=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
==MainSeedfData==&lt;br /&gt;
:save file in s3 (in buckname :integrationtest-config-us-east-2, folder:seedData_integrationTest)&lt;br /&gt;
::-for other dev use service,If a developer wants to add more for other important testing purposes&lt;br /&gt;
:'''How to use'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamod)&lt;br /&gt;
:to clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
==SeedDataTag==&lt;br /&gt;
Data use for create environment of ''test'' and can be refresh seeddata re-test agian.&lt;br /&gt;
save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3733</id>
		<title>2025-11-20 IntegrationTest</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-11-20_IntegrationTest&amp;diff=3733"/>
		<updated>2025-11-25T04:31:27Z</updated>

		<summary type="html">&lt;p&gt;Mint: /* seed Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=File extension=&lt;br /&gt;
uploadS3: &amp;quot;.json&amp;quot;&lt;br /&gt;
integrationtestConfig: &amp;quot;.js&amp;quot;&lt;br /&gt;
=Table test=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JSON&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    integrationTestTag: &amp;quot;Integrationtest_xx&amp;quot;,&lt;br /&gt;
    testStartedTimestamp: 111111111, // start time&lt;br /&gt;
    bucketName: &amp;quot;integrationtest-config-us-east-2&amp;quot;,&lt;br /&gt;
    lastUpdateUniqueRequestId: &amp;quot;sssss&amp;quot;, //_izContext.uniqueRequestId protacts race coditionn dynamodb&lt;br /&gt;
    testStatus: &amp;quot;passed&amp;quot;,//failed,processing,passed&lt;br /&gt;
    testCompleteTimestamp: 1111113, // all test finish&lt;br /&gt;
    stages: [&lt;br /&gt;
      {&lt;br /&gt;
        stageConfig: {&lt;br /&gt;
          //straight copy of this stage from integration test config&lt;br /&gt;
          inputEventTag: &amp;quot;xx&amp;quot;,&lt;br /&gt;
          inputEventConfig: {//event input&lt;br /&gt;
          },&lt;br /&gt;
          outputEventTag: &amp;quot;output_xx&amp;quot;,&lt;br /&gt;
          outputEventConfig: {//event out put&lt;br /&gt;
          },&lt;br /&gt;
          resourceName: &amp;quot;ComplexfilterTestProcessComplexfilter&amp;quot;,// function name&lt;br /&gt;
          resourceType: &amp;quot;Lambda&amp;quot;, // function name&lt;br /&gt;
          serviceTag: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsServiceName: &amp;quot;Complexfilter&amp;quot;,// (initeate sqs)&lt;br /&gt;
          snsTopic: &amp;quot;PorcessComplexfilter_In&amp;quot;// (initeate sqs)&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageStatus: &amp;quot;waiting&amp;quot;, //waiting|passed|failed,&lt;br /&gt;
        stageFinishedTimestamp: 111111111,// time that all tests finished and testRecord.stages.{stageKey}.stageStatus updated&lt;br /&gt;
        stageResults: {&lt;br /&gt;
          //results at the point of entering the resource (eg a Lambda function is invoked)&lt;br /&gt;
          inputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of returning from the resource (eg a Lambda function returns)&lt;br /&gt;
          outputResult: {&lt;br /&gt;
            resultTimestamp: 111111111,//{time result saved},&lt;br /&gt;
            resultStatus: &amp;quot;passed&amp;quot;,//passed|failed,&lt;br /&gt;
            requestParams: {//event input&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          //results at the point of invoking an external resource (eg the tested Lambda function is invoking another Lambda function)&lt;br /&gt;
          invokes: {&lt;br /&gt;
            &amp;quot;serviceName_resourceType_resourceName_inputEventTag &amp;quot;: {&lt;br /&gt;
              invokeTimestamp: 111111111,//{ time result saved },&lt;br /&gt;
              resultTimestamp: 111111112,//{ time result saved },&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//passed | failed,&lt;br /&gt;
              invokeParams: {},//{event invoke input config }&lt;br /&gt;
              requestParams: {}// event invoke input request&lt;br /&gt;
            },&lt;br /&gt;
          },&lt;br /&gt;
          dynamodbResults: [&lt;br /&gt;
            {&lt;br /&gt;
              indexOfDynamodbOutput: 0,&lt;br /&gt;
              requestParams,&lt;br /&gt;
              resultStatus: &amp;quot;passed&amp;quot;,//&lt;br /&gt;
              resultTimestamp: 22222&lt;br /&gt;
            }]&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
        stageErrors: [&lt;br /&gt;
          //misc errors encountered&lt;br /&gt;
        ]&lt;br /&gt;
      }]&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=seed Data=&lt;br /&gt;
integrationtest manager seed date 2 process&lt;br /&gt;
==MainSeedfData==&lt;br /&gt;
:save file in s3 (in buckname :integrationtest-config-us-east-2, folder:seedData_integrationTest)&lt;br /&gt;
::-for other dev use service,If a developer wants to add more for other important testing purposes&lt;br /&gt;
:'''How to use'''&lt;br /&gt;
#Add it from the s3 bucket at this point&lt;br /&gt;
#Run batch refreshSeedData [[Developer guide for making Integration Tests#Bash script|batch RefreshSeedData]]&lt;br /&gt;
'''Logic''':Process by storage resouse (graph or dynamod)&lt;br /&gt;
:to clean up the seed data in the table after it creates seed data form service deploy and pulls seed data from s3.&lt;br /&gt;
&lt;br /&gt;
==SeedDataTag==&lt;br /&gt;
Data use for create environment of ''test'' and can be refresh seeddata re-test agian.&lt;br /&gt;
save file in s3 (for other dav keep in floder dev name) or testConfig/seedData_config(for admin)&lt;br /&gt;
'''Folder'''&lt;br /&gt;
*dynamoDBSeedDataTags.json&lt;br /&gt;
*graphSeedDataTags.json&lt;br /&gt;
&lt;br /&gt;
=resources=&lt;br /&gt;
syntax is object&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
	&amp;quot;Lambda&amp;quot;:{&lt;br /&gt;
		&amp;quot;{FunctionNameHdrSqs}&amp;quot;:{ // FunctionNameHdrSqs is match resourceName in file tests&lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/FunctionNameHdrSqs.js&amp;quot;,&lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;FunctionNameHdrSqs&amp;quot;	// FunctionName is function name match key of function.yml of servcie.&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;ProcessComplexFilterHdrSqs&amp;quot;:{ &lt;br /&gt;
			&amp;quot;localLacation&amp;quot;:&amp;quot;/src/ProcessComplexFilterHdrSqs.js&amp;quot;, &lt;br /&gt;
			&amp;quot;localHandler&amp;quot;:&amp;quot;main&amp;quot;, &lt;br /&gt;
			&amp;quot;functionName&amp;quot;:&amp;quot;ProcessComplexFilterHdrSqs&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;Dynamodb&amp;quot;: {&lt;br /&gt;
		&amp;quot;filterMain&amp;quot;:{ // match resourceName in file tests(dynamodbOutputEventIdentifiers)&lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;filterMain&amp;quot; &lt;br /&gt;
		}, &lt;br /&gt;
		&amp;quot;tableNameBB&amp;quot;:{ &lt;br /&gt;
			&amp;quot;tableName&amp;quot;:&amp;quot;tableNameBB&amp;quot; &lt;br /&gt;
		},&lt;br /&gt;
		... &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=events=&lt;br /&gt;
Syntax is object&lt;br /&gt;
==Syntax Name==&lt;br /&gt;
===FileName===&lt;br /&gt;
::Event_{inputEventTag}&lt;br /&gt;
&lt;br /&gt;
===eventTag===&lt;br /&gt;
#inputEventTag&lt;br /&gt;
#outputEventTag&lt;br /&gt;
#dynamodbTag&lt;br /&gt;
&lt;br /&gt;
*file events.js is have eventTag  (inputEventTag,outputEventTag,dynamodbTag)&lt;br /&gt;
**How to create name eventTag&lt;br /&gt;
***Example case : &amp;quot;test in service complexFilter functionname ProcessComplexFilter case element type is logical basic&amp;quot;.&lt;br /&gt;
::*'''inputEventTag'''&lt;br /&gt;
::::{serviceName}_{functionName}_{caseTest}&lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''outputEventTag'''&lt;br /&gt;
::::output_{inputEventTag}&lt;br /&gt;
''output_Conplexfilter_ProcessComplexFilter_Typelogical_basic''&lt;br /&gt;
::*'''dynamodbTag'''&lt;br /&gt;
::::{inputEventTag}__Dynamodb__{'''action*'''}_{tableName} &lt;br /&gt;
''Conplexfilter_ProcessComplexFilter_Typelogical_basic___Dynamodb__putItem_filterMain''&lt;br /&gt;
: &amp;lt;u&amp;gt;'''{action}''' is only ''put'' or ''update'', and in case of ''update'' must only test the last step of update &amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax event===&lt;br /&gt;
====initiate by handlerServcie====&lt;br /&gt;
=====Sqs=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Sns&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrSqs_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;snsSqsTrigger&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrSqs_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; linein&amp;gt;&lt;br /&gt;
&amp;quot;snsSqsTrigger&amp;quot;:true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Dsq=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of Direct Sqs&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;LambdaFunctionHdrDsq_input__pass&amp;quot;:{&lt;br /&gt;
      &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
      &amp;quot;properties&amp;quot;:{&lt;br /&gt;
         &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
            &amp;quot;properties&amp;quot;:{&lt;br /&gt;
               &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                  &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                  &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;propertyC&amp;quot;:{&lt;br /&gt;
            &amp;quot;eventValue&amp;quot;:[&lt;br /&gt;
               &amp;quot;valuePropertyC1&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC2&amp;quot;,&lt;br /&gt;
               &amp;quot;valuePropertyC3&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;DirectSqs&amp;quot;:true,&lt;br /&gt;
      &amp;quot;messageAttributes&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;msgTag&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;msgTag&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;propertyD&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valuePropertyD&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   },&lt;br /&gt;
   {&lt;br /&gt;
      &amp;quot;output_LambdaFunctionHdrDsq_pass&amp;quot;:{&lt;br /&gt;
         &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
         &amp;quot;properties&amp;quot;:{&lt;br /&gt;
            &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
               &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
               &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* DirectSqs = true &lt;br /&gt;
:: for initialStage of Dsq&lt;br /&gt;
* messageAttributes is optional&lt;br /&gt;
=====Inv=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;:{&lt;br /&gt;
     &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;:{&lt;br /&gt;
        &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;propertyB&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyB1&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valuePropertyB1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;output_LambdaFunctionHdrInv_pass&amp;quot;:{&lt;br /&gt;
           &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
           &amp;quot;properties&amp;quot;:{&lt;br /&gt;
              &amp;quot;propertyA&amp;quot;:{&lt;br /&gt;
                 &amp;quot;forStageMatching&amp;quot;:true,&lt;br /&gt;
                 &amp;quot;value&amp;quot;:&amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Api=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example input and output event of API&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;forstageMatvhing&amp;quot;: true, &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;, &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyB&amp;quot;: { &lt;br /&gt;
						&amp;quot;properties&amp;quot;: { &lt;br /&gt;
							&amp;quot;propertyB1&amp;quot;: { &lt;br /&gt;
								&amp;quot;value&amp;quot;: &amp;quot;valuePropertyB1&amp;quot;, &lt;br /&gt;
							} &lt;br /&gt;
						} &lt;br /&gt;
					}, &lt;br /&gt;
					&amp;quot;propertyC&amp;quot;: { &lt;br /&gt;
						&amp;quot;eventValue&amp;quot;: [ &lt;br /&gt;
							&amp;quot;valuePropertyC1&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC2&amp;quot;, &lt;br /&gt;
							&amp;quot;valuePropertyC3&amp;quot;, &lt;br /&gt;
						] &lt;br /&gt;
					},&lt;br /&gt;
					... &lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}&lt;br /&gt;
	}, &lt;br /&gt;
	&amp;quot;Output_LambdaFunctionHdrApi_input__pass_notTestAuthorizer&amp;quot;: { &lt;br /&gt;
		&amp;quot;properties&amp;quot;: { &lt;br /&gt;
			&amp;quot;body&amp;quot;: { &lt;br /&gt;
				&amp;quot;properties&amp;quot;: { &lt;br /&gt;
					&amp;quot;propertyA&amp;quot;: { &lt;br /&gt;
						&amp;quot;testValueMatches&amp;quot;: false, &lt;br /&gt;
						&amp;quot;value&amp;quot;: &amp;quot;valueProperty1&amp;quot;&lt;br /&gt;
					}, &lt;br /&gt;
					...&lt;br /&gt;
				} &lt;br /&gt;
			} &lt;br /&gt;
		}  &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====S3=====&lt;br /&gt;
&lt;br /&gt;
====dynamodb====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
// An example event of Dynamodb //optional &lt;br /&gt;
{&lt;br /&gt;
	{inputEventTag}__dynamodb_{action}_{tablename}: { // eg. &amp;quot;Complexfilter_ProcessComplexfilter_logical_basic__dynamodb_update_FilterMain&amp;quot;&lt;br /&gt;
	&amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
     &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;filterMainUniqueRequestId&amp;quot;: {&lt;br /&gt;
          &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;bbc4f4a9-2032-4dec-9129-8c7d169fecc5&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
        &amp;quot;filterObject&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;logicalType&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;partitionKey&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;comparison&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;equals&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;logical&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;partitionKey&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;mockIntegratioTestCPF&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainExpiryTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731980802858&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filterMainStatus&amp;quot;: {&lt;br /&gt;
       &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;processing&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;createTime&amp;quot;: {&lt;br /&gt;
        &amp;quot;testValueMatches&amp;quot;: true,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1731894402678&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;serviceTag&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;IntTesting&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;objectType&amp;quot;: {&lt;br /&gt;
            &amp;quot;forStageMatching&amp;quot;: true,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;TestRecord&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;keyValues&amp;quot;: {&lt;br /&gt;
      &amp;quot;filterMainId&amp;quot;: &amp;quot;4865d2451a621cb7f71225cfabf2df4f98e20801&amp;quot;,&lt;br /&gt;
      &amp;quot;objTypeId&amp;quot;: &amp;quot;cdb170690571df7522b3850920fce02507c077ee&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
	} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: filterMainId&lt;br /&gt;
* sort key: objTypeId&lt;br /&gt;
&lt;br /&gt;
[[2021-01-15 - Integration Testing - Adding DynamoDB result tests]]&lt;br /&gt;
&lt;br /&gt;
===Type paramiter===&lt;br /&gt;
use for evnet and dyanmodb event&lt;br /&gt;
====Normal====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 object: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  properties: {&lt;br /&gt;
    name:{&lt;br /&gt;
     forStageMatching: true,&lt;br /&gt;
     value:&amp;quot;Tom&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 },&lt;br /&gt;
 array: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  useIsEqual: true,&lt;br /&gt;
  eventValue: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;relTypeAndDirection&amp;quot;: {&lt;br /&gt;
       &amp;quot;relType&amp;quot;: {&lt;br /&gt;
         &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
         &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasCartOrder&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;targetObjects&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;objType&amp;quot;: {&lt;br /&gt;
           &amp;quot;serviceTag&amp;quot;: &amp;quot;maxxCart2&amp;quot;,&lt;br /&gt;
           &amp;quot;objectType&amp;quot;: &amp;quot;cartOrder&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 },&lt;br /&gt;
 number: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: 1111&lt;br /&gt;
 },&lt;br /&gt;
 string: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: &amp;quot;hi&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 boolean: {&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value: true&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 forStageMatching: true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::set true for check match value,It is not necessary to set every value&lt;br /&gt;
:::use in test importent paramiter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
::setting paramiter require on create but can not test random value eg: identifier or timeStamp or uuid&lt;br /&gt;
&lt;br /&gt;
====Empty====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 EmptyString:{&lt;br /&gt;
  value:&amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 EmptyArray:{&lt;br /&gt;
   forStageMatching: true,&lt;br /&gt;
   useIsEqual: true,&lt;br /&gt;
   eventValue: []&lt;br /&gt;
 },&lt;br /&gt;
 EmptyObject:{&lt;br /&gt;
  forStageMatching: true,&lt;br /&gt;
  value:{}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Error====&lt;br /&gt;
can test noRetryError&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;quot;errorMessage&amp;quot;: {&lt;br /&gt;
    forStageMatching: true,&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;quot;Not found schema of {serviceTag:TestGraphHandler, objectType:notFoundObjType}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paramiter random====&lt;br /&gt;
Can not test case random numbber or uuid.&lt;br /&gt;
But requriOnCreate mush be set &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
testValueMatches:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or set&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
forStageMatching:false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=tests=&lt;br /&gt;
Syntax is array of object&lt;br /&gt;
==Syntax name== &lt;br /&gt;
===Testtag name ===&lt;br /&gt;
*{integrationTestTag}&lt;br /&gt;
#Test Own servcie or not a lot stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
Test_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Mix multiple servcie and multiple stage&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
IntegrationTest_{inputEventTag}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File name ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt; &lt;br /&gt;
{integrationTestTag}.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setting of test==&lt;br /&gt;
[[Service - Integration Test Config#tests.js Syntax|syntax test]]&lt;br /&gt;
&lt;br /&gt;
===Refresh seed data tag===&lt;br /&gt;
:Refresh seed data use seed data tag.&lt;br /&gt;
*'''seedDataTag''' is dynamoDBSeedDataTags or graphSeedDataTags must be unique.&lt;br /&gt;
*canbe share seed data for other test by seed data tag.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
            integrationTestTag: {integrationTestTag},&lt;br /&gt;
            productionSafe: true|false, //default false&lt;br /&gt;
            noInitialStage: true, // default false, if set to true, no error when no foundInitialStages found&lt;br /&gt;
            errorIfStageUndefined: true|false, //default false&lt;br /&gt;
            errorIfInvokeUndefined: true|false, //default false,&lt;br /&gt;
            dynamoDBSeedDataTags:[&amp;quot;seedDataDB_test_case_xx&amp;quot;], //[seedDataTag] optional if have seed data for test&lt;br /&gt;
            graphSeedDataTags:[&amp;quot;seedDataGraph_test_case_xx&amp;quot;]//[seedDataTag] optional if have seed data for test&lt;br /&gt;
            stages:[]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====graphSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource graphHanler.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedData_testTag_GG&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;productId&amp;quot;: &amp;quot;ddddd&amp;quot;,&lt;br /&gt;
              &amp;quot;price&amp;quot;: 9999&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMall&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: &amp;quot;hotpot-man&amp;quot;,&lt;br /&gt;
              &amp;quot;totalPrice&amp;quot;: 500&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;nodeLabels&amp;quot;: [&lt;br /&gt;
            &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;objectDetail&amp;quot;: {&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;fields&amp;quot;: {&lt;br /&gt;
              &amp;quot;addToCalculatedValuePerOrder&amp;quot;: 10,&lt;br /&gt;
              &amp;quot;addToRateTableValuePerOrder&amp;quot;: 77&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;SellOfferPlan_sellOfferPlanDeliveryMethodLink&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;sellOfferPlanDeliveryMethodLinkId&amp;quot;: &amp;quot;minttestrefreshSeedData_01&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;SellOfferPlan_hasCCCCCCC&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-4s56df74s9df79w-w6de4f5w689ef&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;fromObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMall&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;shoppingMallId&amp;quot;: &amp;quot;minttestrefreshSeedData_shoppingMallId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;toObject&amp;quot;: {&lt;br /&gt;
            &amp;quot;nodeLabel&amp;quot;: &amp;quot;servcieMintTest_shoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
            &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
              &amp;quot;versionedDataId&amp;quot;: &amp;quot;minttestrefreshSeedData_versionedDataId&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_currentShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-s122df5-s21df&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;timeStamp&amp;quot;: 1234567879,&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relTypeConcat&amp;quot;: &amp;quot;servcieMintTest_shoppingMall_hasShoppingMallCalculateSetting&amp;quot;,&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;uuid-77777-99999&amp;quot;,&lt;br /&gt;
              &amp;quot;relationshipProperty&amp;quot;: {&lt;br /&gt;
                &amp;quot;statusName&amp;quot;: true&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_ABC&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;hasProductAttributeLink&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;to&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductStandard&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productStandard&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productId&amp;quot;: &amp;quot;f526a367a2b66cb0f37ca61b6c43f419929f521d&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;relType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;relationshipTag&amp;quot;: &amp;quot;isProductAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipDirection&amp;quot;: &amp;quot;from&amp;quot;,&lt;br /&gt;
          &amp;quot;targetObjType&amp;quot;: {&lt;br /&gt;
            &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;,&lt;br /&gt;
            &amp;quot;objectType&amp;quot;: &amp;quot;productAttribute&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;targetIdentifiers&amp;quot;: {&lt;br /&gt;
            &amp;quot;productAttributeId&amp;quot;: &amp;quot;f4bf7a078071d54036656df544197ba638bc3a68&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;relationshipProperties&amp;quot;: {}&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;objType&amp;quot;: {&lt;br /&gt;
        &amp;quot;objectType&amp;quot;: &amp;quot;productAttributeLink&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;ProductAttribute&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;objInstanceFull&amp;quot;: {&lt;br /&gt;
        &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
          &amp;quot;productAttributeLinkId&amp;quot;: &amp;quot;f90b57ca8b2fe1a83459d57da038cf50fb6d40e6&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fields&amp;quot;: {}&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;relationships&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;seedData_testTag_LL&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====dynamoDBSeedDataTags====&lt;br /&gt;
:If set tag in this setting integrationtest is generate seed data. in storage resource dynammodb.&lt;br /&gt;
Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;seedDynamodb_abc_ver2&amp;quot;: [ // seedDataTag&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;DelivMethodSTDTestLogicalResultsData&amp;quot;,  // servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;logicalResultId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifiersId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;logicalResultId&amp;quot;: &amp;quot;eeeeeeeeee4&amp;quot;,&lt;br /&gt;
          &amp;quot;identifiersId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFloatingRelationships&amp;quot;,// servcieTag+stage+tablename&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;importBatchId&amp;quot;,&lt;br /&gt;
      &amp;quot;sortKey&amp;quot;: &amp;quot;identifierRelationshipsId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll123456&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll777777&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;importBatchId&amp;quot;: &amp;quot;2-uuuuuuuuuuuuuu&amp;quot;,&lt;br /&gt;
          &amp;quot;identifierRelationshipsId&amp;quot;: &amp;quot;lllll99999999&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;tableName&amp;quot;: &amp;quot;MLocationsTestFindDataMain&amp;quot;,&lt;br /&gt;
      &amp;quot;partitionKey&amp;quot;: &amp;quot;findDataId&amp;quot;,&lt;br /&gt;
      &amp;quot;datas&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;111111&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;22222&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;findDataId&amp;quot;: &amp;quot;333333&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages==&lt;br /&gt;
====Initiate stage====&lt;br /&gt;
:'''&amp;quot;initialStage&amp;quot;:true'''&lt;br /&gt;
[[Service_-_Integration_Test_Config#tests.js Syntax|detail property of test]]&lt;br /&gt;
=====HandlerService=====&lt;br /&gt;
======Sqs======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
            &amp;quot;inputEventTag&amp;quot;:&amp;quot;Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;,&lt;br /&gt;
            &amp;quot;serviceName&amp;quot;:&amp;quot;Locations&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
            &amp;quot;resourceName&amp;quot;:&amp;quot;ProcessLocationNodeSomtingHdrDsq&amp;quot;,&lt;br /&gt;
            &amp;quot;outputEventTag&amp;quot;:&amp;quot;Output_Locations_ProcessLocationNodeSomting_casenotHaveData&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
======Dsq======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'LambdaFunctionHdrDsq_input_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'LambdaFunctionHdrDsq_output__returnvalue_pass',&lt;br /&gt;
          // **** not set snsServiceName and snsTopic&lt;br /&gt;
          // can be test dynamodbOutput&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Api======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
       &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_input__pass&amp;quot;,&lt;br /&gt;
       &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
       &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrApi&amp;quot;,&lt;br /&gt;
       &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrApi_output__pass&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Inv======&lt;br /&gt;
*'''single stage'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''invoke multiple stage''' &lt;br /&gt;
:*Each stage test can invoke multiple lambda by use &amp;quot;eventStage Tag&amp;quot; point to stage for test integration test.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[{&lt;br /&gt;
   &amp;quot;integrationTestTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_invokes__pass&amp;quot;,&lt;br /&gt;
   &amp;quot;productionSafe&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfStageUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;errorIfInvokeUndefined&amp;quot;:false,&lt;br /&gt;
   &amp;quot;stages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;initialStage&amp;quot;:true,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_input__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunctionHdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;LambdaFunctionHdrInv_output__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;invokes&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
               &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesB__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokes__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_B&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_B_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokes__pass&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;eventStageTag&amp;quot;:&amp;quot;service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;inputEventTag&amp;quot;:&amp;quot;input_service_invokesD__pass&amp;quot;,&lt;br /&gt;
         &amp;quot;serviceName&amp;quot;:&amp;quot;ServiceTemplate_D&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceType&amp;quot;:&amp;quot;Lambda&amp;quot;,&lt;br /&gt;
         &amp;quot;resourceName&amp;quot;:&amp;quot;LambdaFunction_D_HdrInv&amp;quot;,&lt;br /&gt;
         &amp;quot;outputEventTag&amp;quot;:&amp;quot;output_service_invokesD__pass&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======S3======&lt;br /&gt;
======Batch======&lt;br /&gt;
&lt;br /&gt;
====GeneratedSeedData====&lt;br /&gt;
*Integrationtest must be delete identifier every time before test.&lt;br /&gt;
*Set 'generatedSeedData' in file tests.json case by case of stage eg: stages[0] create identifier is randomOnCreate will set 'generatedSeedData' and stages[1] create relationship is randomOnCreate(It is usually random, except in the case of relationship version) set generatedSeedData this stages[1].&lt;br /&gt;
*How to delete case identifier rendomOnCreate?: set in stage use setting generateSeedData &amp;quot;randomOnCreateIdentifier&amp;quot;&lt;br /&gt;
#randomOnCreateIdentifier&lt;br /&gt;
#notRandomOnIdentifier&lt;br /&gt;
#relationships&lt;br /&gt;
=====randomOnCreateIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;randomOnCreateIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;Member&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifierValue&amp;quot;: &amp;quot;Jaya-member-001&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====notRandomOnIdentifier=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
          &amp;quot;notRandomOnIdentifier&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;objType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;gggg&amp;quot;,&lt;br /&gt;
                &amp;quot;objectType&amp;quot;: &amp;quot;ssssss&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;identifiers&amp;quot;: {&lt;br /&gt;
                &amp;quot;topId&amp;quot;: &amp;quot;123456&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====relationships=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;stages&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;initialStage&amp;quot;: true,&lt;br /&gt;
        &amp;quot;inputEventTag&amp;quot;: &amp;quot;MLocation_CreateHdrSqs__case_NodeVersionData_Jaya&amp;quot;,&lt;br /&gt;
        &amp;quot;serviceTag&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceType&amp;quot;: &amp;quot;Lambda&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceName&amp;quot;: &amp;quot;CreateHdrSqs&amp;quot;,&lt;br /&gt;
        &amp;quot;snsServiceName&amp;quot;: &amp;quot;MLocations&amp;quot;,&lt;br /&gt;
        &amp;quot;snsTopic&amp;quot;: &amp;quot;Create_In&amp;quot;,&lt;br /&gt;
        &amp;quot;generatedSeedData&amp;quot;: {&lt;br /&gt;
         &amp;quot;relationships&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;relType&amp;quot;: {&lt;br /&gt;
                &amp;quot;serviceTag&amp;quot;: &amp;quot;PaymentMethodGeneric&amp;quot;,&lt;br /&gt;
                &amp;quot;relationshipTag&amp;quot;: &amp;quot;disabledPaymentMethodGenericPropertyValue&amp;quot;&lt;br /&gt;
              },&lt;br /&gt;
              &amp;quot;relId&amp;quot;: &amp;quot;f4f73de7-647c-4b3b-8043-87cc002f361a&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dynamodb==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
stages: [&lt;br /&gt;
        {&lt;br /&gt;
          initialStage: true,&lt;br /&gt;
          inputEventTag: 'Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          serviceName: 'ServiceTemplate',&lt;br /&gt;
          resourceType: 'Lambda',&lt;br /&gt;
          resourceName: 'LambdaFunctionHdrDsq',&lt;br /&gt;
          outputEventTag: 'output_Locations_LambdaFunctionHdrDsq_singleStage_directSqs__pass',&lt;br /&gt;
          dynamodbOutputEventIdentifiers: [&lt;br /&gt;
			{&lt;br /&gt;
              serviceName: {tableName}, //service that deployed the DynamoDB table, so can build table's full resource name&lt;br /&gt;
              resourceName: {resourceName}, //DynamoDB resourceName&lt;br /&gt;
              eventTag: {eventTagDynamoDB}&lt;br /&gt;
		    }&lt;br /&gt;
          ],&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*[[2025-02-20 - Integration Test examples#tests.js Syntax|Syntax Dynamodb]]&lt;br /&gt;
&lt;br /&gt;
=How to test integrationtest s3=&lt;br /&gt;
[[Developer guide for making Integration Tests]]&lt;/div&gt;</summary>
		<author><name>Mint</name></author>
	</entry>
</feed>