Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
cebb168
lifecycle-transitions scheduler bug fixed.
EreenKara Apr 29, 2026
3de7c27
lifecycle-transitions-test done
EreenKara Apr 29, 2026
f3186a6
In addition to the existing tests, coverage was added for persisting …
EreenKara Apr 29, 2026
4b85c50
task types unified under the task-execution logical groups so extende…
EreenKara Apr 30, 2026
835fadf
human task type changed from 7 to 5. 7th task type is considered as s…
EreenKara Apr 30, 2026
34aa6b9
human task state status F bug
EreenKara Apr 30, 2026
785f27f
Previously we only asserted tasks indirectly through instance data, a…
EreenKara Apr 30, 2026
6e05beb
subprocess false positives are cleared.
EreenKara Apr 30, 2026
dc4d805
cross-workflow-state was removed. Task types 8 (condition) and 9 (tim…
EreenKara Apr 30, 2026
79f3ad1
task execution is done but dapr tasks
EreenKara Apr 30, 2026
21c0389
extended tasks test has done
EreenKara May 4, 2026
ae5453d
instance-management test has done, needs a little refactor to make co…
EreenKara May 4, 2026
f456557
instance management sorting test bug fixed. flow type tests are added.
EreenKara May 4, 2026
6b5211e
flow types are added and passed test. subflow tests are merged to one…
EreenKara May 4, 2026
f43b176
collection-object-test as a script base test has added
EreenKara May 4, 2026
a110d5f
collection-object-test has passed
EreenKara May 5, 2026
26e6669
view-function-extension test needs a rework.
EreenKara May 5, 2026
b00fdb2
view-function-extension integration test is completed. wizard state n…
EreenKara May 6, 2026
55df5c1
updatedata feature relocated from schema-data to subflow to work corr…
EreenKara May 7, 2026
449a03c
version-consistency test is completed
EreenKara May 8, 2026
c7eb5d6
error boundary test coverage is increased.
EreenKara May 8, 2026
e092949
error boundary workflow has been published to runtime but there is er…
EreenKara May 8, 2026
533fc1e
subflow workflow tests are completed.
EreenKara May 11, 2026
3a0a903
domain scoped function test bug resolved.
EreenKara May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
534 changes: 534 additions & 0 deletions .cursor/skills/vnext-features/SKILL.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
@baseUrl = http://localhost:4201
@apiVersion = 1
@domain = core
@workflow = collection-object-test-workflow

###
# Grup 10: Dynamic Collection & Object — collection-object-test-workflow
#
# Akis: start-collection-test (onExecutionTasks: InitCollectionTestMapping)
# -> test-create-and-set-state -> ... -> auto zincir (AlwaysTrueRule)
# -> test-completed-state (Final)
#
# Tum ara gecisler otomatik (triggerType: 1); manuel PATCH gerekmez.
# Beklenen son state: test-completed-state; status genelde "C" (Completed).
# attributes icinde mapping sonuc bloklari: testId, createAndSetResult, getListResult,
# filterCountAnyResult, firstLastResult, listSelectResult, listAddRemoveResult, removeToDictResult.
###

### Adim 1: Workflow baslat
# @name createInstance
POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start
Content-Type: application/json

{
"key": "collection-object-{{$timestamp}}",
"tags": ["integration-test", "collection-object-test"],
"attributes": {}
}

@instanceId = {{createInstance.response.body.$.id}}

### Adim 2: Son durum (beklenen state: test-completed-state)
GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{instanceId}}/functions/state

### Adim 3: Instance verisi (ScriptBase pipeline sonuc bayraklari)
GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{instanceId}}/functions/data
219 changes: 219 additions & 0 deletions api-tests/collection-object-test/postman-collection-object-test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
{
"info": {
"_postman_id": "c8a41e2b-9f03-4c5d-a1d6-2b9e7f3d1a44",
"name": "vNext Test - Collection Object (Grup 10)",
"description": "collection-object-test-workflow — ScriptBase dinamik koleksiyon/nesne API pipeline'i.\n\nAkış: start (InitCollectionTestMapping) → test-create-and-set-state → … → otomatik zincir (AlwaysTrueRule) → test-completed-state.\n\n- Adım 1: `sync=true` ile başlatma (ara otomatik geçişler tamamlanana kadar bekler; `.http` örneği sync kullanmıyorsa sorgudan kaldırıp state için yeniden GET yapın).\n- Beklenen son: state `test-completed-state`, status `C`.\n- `functions/data` içinde: `testId`, `createAndSetResult`, `getListResult`, … `removeToDictResult`.\n\nÖnkoşul: workflow + task publish (`core/collection-object-test-workflow`).",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"variable": [
{
"key": "baseUrl",
"value": "http://localhost:4201",
"type": "string"
},
{
"key": "apiVersion",
"value": "1",
"type": "string"
},
{
"key": "domain",
"value": "core",
"type": "string"
},
{
"key": "workflow",
"value": "collection-object-test-workflow",
"type": "string"
},
{
"key": "collectionObjectInstanceId",
"value": "",
"type": "string"
}
],
"item": [
{
"name": "collection-object-test-workflow",
"item": [
{
"name": "Adim 1: Workflow baslat (sync)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"url": {
"raw": "{{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true",
"host": ["{{baseUrl}}"],
"path": [
"api",
"v{{apiVersion}}",
"{{domain}}",
"workflows",
"{{workflow}}",
"instances",
"start"
],
"query": [
{
"key": "sync",
"value": "true"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"key\": \"collection-object-{{$timestamp}}\",\n \"tags\": [\"integration-test\", \"collection-object-test\"],\n \"attributes\": {}\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"response": [],
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('HTTP 2xx', function () { pm.response.to.be.success; });",
"var jsonData = pm.response.json();",
"if (jsonData && jsonData.id) {",
" pm.collectionVariables.set('collectionObjectInstanceId', jsonData.id);",
" console.log('collectionObjectInstanceId:', jsonData.id);",
"} else {",
" console.warn('Yant id icermiyor', jsonData);",
"}",
"pm.test('id donmeli', function () {",
" pm.expect(jsonData).to.have.property('id');",
"});"
]
}
}
]
},
{
"name": "Adim 2: GET functions/state (test-completed-state + C)",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{collectionObjectInstanceId}}/functions/state",
"host": ["{{baseUrl}}"],
"path": [
"api",
"v{{apiVersion}}",
"{{domain}}",
"workflows",
"{{workflow}}",
"instances",
"{{collectionObjectInstanceId}}",
"functions",
"state"
]
}
},
"response": [],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"if (!pm.collectionVariables.get('collectionObjectInstanceId')) {",
" throw new Error('Once Adim 1 calistirin (collectionObjectInstanceId bos).');",
"}"
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('HTTP 2xx', function () { pm.response.to.be.success; });",
"var b = pm.response.json();",
"var state = (b && (b.state || (b.data && b.data.state))) || '';",
"var status = (b && (b.status || (b.data && b.data.status))) || '';",
"pm.test('state test-completed-state', function () {",
" pm.expect(String(state)).to.eql('test-completed-state');",
"});",
"pm.test('status Completed (C)', function () {",
" pm.expect(String(status)).to.eql('C');",
"});"
]
}
}
]
},
{
"name": "Adim 3: GET functions/data (pipeline bayraklari)",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{collectionObjectInstanceId}}/functions/data",
"host": ["{{baseUrl}}"],
"path": [
"api",
"v{{apiVersion}}",
"{{domain}}",
"workflows",
"{{workflow}}",
"instances",
"{{collectionObjectInstanceId}}",
"functions",
"data"
]
}
},
"response": [],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"if (!pm.collectionVariables.get('collectionObjectInstanceId')) {",
" throw new Error('Once Adim 1 calistirin (collectionObjectInstanceId bos).');",
"}"
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('HTTP 2xx', function () { pm.response.to.be.success; });",
"var body = pm.response.json();",
"var attrs = (body && body.attributes) ? body.attributes : body;",
"if (body && body.data && body.data.attributes) attrs = body.data.attributes;",
"function has(obj, path) {",
" var cur = obj;",
" for (var i = 0; i < path.length; i++) {",
" if (!cur || typeof cur !== 'object' || !(path[i] in cur)) return false;",
" cur = cur[path[i]];",
" }",
" return true;",
"}",
"pm.test('testId var', function () { pm.expect(has(attrs, ['testId'])).to.be.true; });",
"pm.test('createAndSetResult.success', function () { pm.expect(has(attrs, ['createAndSetResult', 'success'])).to.be.true; });",
"pm.test('getListResult.success', function () { pm.expect(has(attrs, ['getListResult', 'success'])).to.be.true; });",
"pm.test('removeToDictResult.success', function () { pm.expect(has(attrs, ['removeToDictResult', 'success'])).to.be.true; });"
]
}
}
]
}
]
}
]
}
Loading
Loading