You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/06/22 08:13:57 UTC

[incubator-devlake] branch main updated (2232551a -> a10d0251)

This is an automated email from the ASF dual-hosted git repository.

warren pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


    from 2232551a refactor(tapd): add e2e for story
     new 5e576496 e2e on tapd bug_changelog
     new a10d0251 e2e on tapd bug/story/task_changelog

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../{iterations_test.go => bug_changelog_test.go}  | 92 +++++++++-------------
 .../_tool_tapd_bug_changelog_items.csv             | 14 ++++
 .../snapshot_tables/_tool_tapd_bug_changelogs.csv  | 14 ++++
 .../_tool_tapd_story_changelog_items.csv           | 19 +++++
 .../_tool_tapd_story_changelogs.csv                | 17 ++++
 .../_tool_tapd_task_changelog_items.csv            | 33 ++++++++
 .../snapshot_tables/_tool_tapd_task_changelogs.csv | 18 +++++
 .../tapd/e2e/snapshot_tables/changelogs_bug.csv    | 14 ++++
 .../tapd/e2e/snapshot_tables/changelogs_story.csv  | 19 +++++
 .../tapd/e2e/snapshot_tables/changelogs_task.csv   | 33 ++++++++
 ...{iterations_test.go => story_changelog_test.go} | 90 +++++++++------------
 .../{iterations_test.go => task_changelog_test.go} | 91 ++++++++++-----------
 plugins/tapd/tasks/bug_changelog_converter.go      |  6 +-
 plugins/tapd/tasks/story_changelog_converter.go    |  6 +-
 plugins/tapd/tasks/task_changelog_converter.go     |  6 +-
 15 files changed, 311 insertions(+), 161 deletions(-)
 copy plugins/tapd/e2e/{iterations_test.go => bug_changelog_test.go} (58%)
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/changelogs_bug.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/changelogs_story.csv
 create mode 100644 plugins/tapd/e2e/snapshot_tables/changelogs_task.csv
 copy plugins/tapd/e2e/{iterations_test.go => story_changelog_test.go} (59%)
 copy plugins/tapd/e2e/{iterations_test.go => task_changelog_test.go} (59%)


[incubator-devlake] 02/02: e2e on tapd bug/story/task_changelog

Posted by wa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

warren pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit a10d025145d74ed92dc1543813634848a50a889c
Author: abeizn <zi...@merico.dev>
AuthorDate: Wed Jun 22 15:31:53 2022 +0800

    e2e on tapd bug/story/task_changelog
---
 plugins/tapd/e2e/bug_changelog_test.go             |  5 +--
 .../_tool_tapd_story_changelog_items.csv           | 19 ++++++++++
 .../_tool_tapd_story_changelogs.csv                | 17 +++++++++
 .../_tool_tapd_task_changelog_items.csv            | 33 +++++++++++++++++
 .../snapshot_tables/_tool_tapd_task_changelogs.csv | 18 ++++++++++
 .../{changelogs.csv => changelogs_bug.csv}         |  0
 .../tapd/e2e/snapshot_tables/changelogs_story.csv  | 19 ++++++++++
 .../tapd/e2e/snapshot_tables/changelogs_task.csv   | 33 +++++++++++++++++
 ...g_changelog_test.go => story_changelog_test.go} | 41 +++++++++++----------
 ...ug_changelog_test.go => task_changelog_test.go} | 42 ++++++++++++----------
 plugins/tapd/tasks/story_changelog_converter.go    |  6 ++--
 plugins/tapd/tasks/task_changelog_converter.go     |  6 ++--
 12 files changed, 195 insertions(+), 44 deletions(-)

diff --git a/plugins/tapd/e2e/bug_changelog_test.go b/plugins/tapd/e2e/bug_changelog_test.go
index 04b36285..f0ad8cc2 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/bug_changelog_test.go
@@ -19,9 +19,10 @@ package e2e
 
 import (
 	"fmt"
-	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
 	"testing"
 
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
 	"github.com/apache/incubator-devlake/helpers/e2ehelper"
 	"github.com/apache/incubator-devlake/plugins/tapd/impl"
 	"github.com/apache/incubator-devlake/plugins/tapd/models"
@@ -90,7 +91,7 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 	dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
 	dataflowTester.VerifyTable(
 		ticket.Changelog{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", ticket.Changelog{}.TableName()),
+		fmt.Sprintf("./snapshot_tables/%s_bug.csv", ticket.Changelog{}.TableName()),
 		[]string{"id"},
 		[]string{
 			"_raw_data_params",
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
new file mode 100644
index 00000000..d5472d57
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
@@ -0,0 +1,19 @@
+connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteration_id_from,iteration_id_to,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000065,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,
+1,11991001000093,owner,--,u5d14u6600;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,
+1,11991001000095,comment,--,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000095,owner,u5d14u6600;,u5d14u6600;u9648u5fd7u9274;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000095,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000096,due,2019-12-13,2020-01-08,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,4,
+1,11991001000103,name,test-11test-11test-11test-11,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,
+1,11991001000115,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,
+1,11991001000119,iteration_id,test-11test-11,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,
+1,11991001000126,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,
+1,11991001000127,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,
+1,11991001000128,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,
+1,11991001000143,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,
+1,11991001000147,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,
+1,11991001000148,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,
+1,11991001000149,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,
+1,11991001000150,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,
+1,11991001000151,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
new file mode 100644
index 00000000..15c28628
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
@@ -0,0 +1,17 @@
+connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,comment,entity_type,change_type,story_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000065,991,0,test-11test-11,2019-12-12T07:46:25.000+00:00,delete,,Story,,11991001000028,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,
+1,11991001000093,991,11991001000020,test-11test-11test-11,2019-12-12T10:01:42.000+00:00,planning,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,
+1,11991001000095,991,11991001000020,test-11test-11test-11,2019-12-12T10:12:07.000+00:00,planning,test-11test-11test-11test-11<div></div>,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000096,991,11991001000020,test-11test-11test-11,2019-12-12T10:13:04.000+00:00,developing,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,4,
+1,11991001000103,991,0,test-11test-11test-11,2019-12-12T10:21:58.000+00:00,planning,,Story,,11991001000046,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,
+1,11991001000115,991,0,test-11test-11test-11,2019-12-12T10:35:15.000+00:00,delete,,Story,,11991001000046,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,
+1,11991001000119,991,11991001000020,test-11test-11test-11,2019-12-12T10:38:03.000+00:00,,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,
+1,11991001000126,991,11991001000020,test-11test-11test-11,2019-12-12T10:47:49.000+00:00,planning,,Story,,11991001000055,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,
+1,11991001000127,991,0,test-11test-11test-11,2019-12-12T10:47:51.000+00:00,planning,,Story,,11991001000056,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,
+1,11991001000128,991,11991001000020,test-11test-11test-11,2019-12-12T10:47:53.000+00:00,planning,,Story,,11991001000057,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,
+1,11991001000143,991,0,test-11test-11,2019-12-13T02:27:51.000+00:00,delete,,Story,,11991001000056,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,
+1,11991001000147,991,11991001000020,test-11test-11test-11,2019-12-13T02:35:23.000+00:00,planning,,Story,,11991001000074,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,
+1,11991001000148,991,11991001000020,test-11test-11test-11,2019-12-13T02:38:19.000+00:00,planning,,Story,,11991001000075,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,
+1,11991001000149,991,0,test-11test-11test-11,2019-12-13T02:38:57.000+00:00,planning,,Story,,11991001000076,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,
+1,11991001000150,991,11991001000020,test-11test-11test-11,2019-12-13T02:40:04.000+00:00,planning,,Story,,11991001000077,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,
+1,11991001000151,991,0,zhangwenwei,2019-12-13T02:40:22.000+00:00,delete,,Story,,11991001000076,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
new file mode 100644
index 00000000..f09e476d
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
@@ -0,0 +1,33 @@
+connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteration_id_from,iteration_id_to,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000220,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,
+1,11991001000221,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,
+1,11991001000222,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000222,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000274,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000274,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000275,description,--,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,
+1,11991001000313,effort,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,iteration_id,test-11test-11.0,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,remain,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,story_id,0,11991001000130,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000314,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000314,story_id,11991001000130,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000355,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000355,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000356,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000357,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000357,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000358,priority,Middle,High,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,
+1,11991001000359,priority,--,Middle,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,
+1,11991001000360,priority,--,Middle,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,
+1,11991001000361,priority,Middle,Low,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,
+1,11991001000366,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000366,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000367,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,
+1,11991001000368,completed,--,2019-12-16 16:10:25,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,effort_completed,0,16,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,flows,|done,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,modified,2019-12-13 14:53:08,2019-12-16 16:10:25,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,progress,0,100,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,remain,16,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
new file mode 100644
index 00000000..6762b1ec
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
@@ -0,0 +1,18 @@
+connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,comment,entity_type,change_type,change_type_text,task_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000220,991,0,test-11test-11,2019-12-13T06:36:10.000+00:00,open,,Task,,,11991001000111,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,
+1,11991001000221,991,0,test-11test-11,2019-12-13T06:36:14.000+00:00,open,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,
+1,11991001000222,991,0,test-11test-11test-11,2019-12-13T06:52:33.000+00:00,open,,Task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000274,991,0,test-11test-11,2019-12-13T10:41:13.000+00:00,open,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000275,991,2,test-11test-11,2019-12-13T10:41:48.000+00:00,progressing,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,
+1,11991001000313,991,0,test-11test-11test-11,2019-12-16T02:49:48.000+00:00,open,,Task,,,11991001000112,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000314,991,0,test-11test-11test-11,2019-12-16T02:50:09.000+00:00,open,,Task,,,11991001000112,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000355,991,0,test-11test-11test-11,2019-12-16T04:46:02.000+00:00,open,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000356,991,2,test-11test-11test-11,2019-12-16T04:46:04.000+00:00,progressing,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000357,991,0,test-11test-11test-11,2019-12-16T04:46:07.000+00:00,open,,Task,,,11991001000101,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000358,991,2,test-11test-11test-11,2019-12-16T04:46:39.000+00:00,progressing,,Task,,,11991001000101,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,
+1,11991001000359,991,0,test-11test-11test-11,2019-12-16T04:46:42.000+00:00,open,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,
+1,11991001000360,991,0,test-11test-11test-11,2019-12-16T04:46:46.000+00:00,open,,Task,,,11991001000100,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,
+1,11991001000361,991,0,test-11test-11test-11,2019-12-16T04:46:49.000+00:00,open,,Task,,,11991001000100,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,
+1,11991001000366,991,0,test-11test-11test-11,2019-12-16T08:07:18.000+00:00,open,,Task,,,11991001000104,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000367,991,0,test-11test-11test-11,2019-12-16T08:10:25.000+00:00,progressing,,task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,
+1,11991001000368,991,2,test-11test-11test-11,2019-12-16T08:10:25.000+00:00,progressing,,Task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs.csv b/plugins/tapd/e2e/snapshot_tables/changelogs_bug.csv
similarity index 100%
rename from plugins/tapd/e2e/snapshot_tables/changelogs.csv
rename to plugins/tapd/e2e/snapshot_tables/changelogs_bug.csv
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv b/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv
new file mode 100644
index 00000000..5918236e
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv
@@ -0,0 +1,19 @@
+id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value
+tapd:TapdStoryChangelog:1:11991001000065:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,,tapd:TapdIssue:1:11991001000028,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_story,delete_story,,,2019-12-12T07:46:25.000+00:00,--,--
+tapd:TapdStoryChangelog:1:11991001000093:owner,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:01:42.000+00:00,--,u5d14u6600;
+tapd:TapdStoryChangelog:1:11991001000095:comment,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,comment,comment,,,2019-12-12T10:12:07.000+00:00,--,test-11test-11test-11test-11
+tapd:TapdStoryChangelog:1:11991001000095:owner,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:12:07.000+00:00,u5d14u6600;,u5d14u6600;u9648u5fd7u9274;
+tapd:TapdStoryChangelog:1:11991001000095:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-12T10:12:07.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdStoryChangelog:1:11991001000096:due,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,4,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,due,due,,,2019-12-12T10:13:04.000+00:00,2019-12-13,2020-01-08
+tapd:TapdStoryChangelog:1:11991001000103:name,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,,tapd:TapdIssue:1:11991001000046,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,name,name,,,2019-12-12T10:21:58.000+00:00,test-11test-11test-11test-11,test-11test-11test-11test-11
+tapd:TapdStoryChangelog:1:11991001000115:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,,tapd:TapdIssue:1:11991001000046,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_story,delete_story,,,2019-12-12T10:35:15.000+00:00,--,--
+tapd:TapdStoryChangelog:1:11991001000119:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:38:03.000+00:00,test-11test-11,0
+tapd:TapdStoryChangelog:1:11991001000126:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,,tapd:TapdIssue:1:11991001000055,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:49.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000127:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,,tapd:TapdIssue:1:11991001000056,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:51.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000128:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,,tapd:TapdIssue:1:11991001000057,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:53.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000143:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,,tapd:TapdIssue:1:11991001000056,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_story,delete_story,,,2019-12-13T02:27:51.000+00:00,--,--
+tapd:TapdStoryChangelog:1:11991001000147:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,,tapd:TapdIssue:1:11991001000074,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:35:23.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000148:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,,tapd:TapdIssue:1:11991001000075,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:38:19.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000149:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,,tapd:TapdIssue:1:11991001000076,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:38:57.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000150:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,,tapd:TapdIssue:1:11991001000077,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:40:04.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000151:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,,tapd:TapdIssue:1:11991001000076,tapd:TapdUser:1:991:zhangwenwei,zhangwenwei,delete_story,delete_story,,,2019-12-13T02:40:22.000+00:00,--,--
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv b/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv
new file mode 100644
index 00000000..5babd79a
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv
@@ -0,0 +1,33 @@
+id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value
+tapd:TapdTaskChangelog:1:11991001000220:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,,tapd:TapdIssue:1:11991001000111,tapd:TapdUser:1:991:test-11test-11,test-11test-11,iteration_id,iteration_id,,,2019-12-13T06:36:10.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000221:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,iteration_id,iteration_id,,,2019-12-13T06:36:14.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000222:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-13T06:52:33.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000222:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-13T06:52:33.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000274:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,flows,flows,,,2019-12-13T10:41:13.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000274:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,status,status,,,2019-12-13T10:41:13.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000275:description,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,description,description,,,2019-12-13T10:41:48.000+00:00,--,test-11test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000313:effort,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,effort,effort,,,2019-12-16T02:49:48.000+00:00,24,0
+tapd:TapdTaskChangelog:1:11991001000313:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-16T02:49:48.000+00:00,test-11test-11.0,0
+tapd:TapdTaskChangelog:1:11991001000313:remain,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,remain,remain,,,2019-12-16T02:49:48.000+00:00,24,0
+tapd:TapdTaskChangelog:1:11991001000313:story_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:49:48.000+00:00,0,11991001000130
+tapd:TapdTaskChangelog:1:11991001000314:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-16T02:50:09.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000314:story_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:50:09.000+00:00,11991001000130,0
+tapd:TapdTaskChangelog:1:11991001000355:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T04:46:02.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000355:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:02.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000356:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:04.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000357:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T04:46:07.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000357:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:07.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000358:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:39.000+00:00,Middle,High
+tapd:TapdTaskChangelog:1:11991001000359:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:42.000+00:00,--,Middle
+tapd:TapdTaskChangelog:1:11991001000360:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,,tapd:TapdIssue:1:11991001000100,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:46.000+00:00,--,Middle
+tapd:TapdTaskChangelog:1:11991001000361:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,,tapd:TapdIssue:1:11991001000100,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:49.000+00:00,Middle,Low
+tapd:TapdTaskChangelog:1:11991001000366:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,,tapd:TapdIssue:1:11991001000104,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T08:07:18.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000366:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,,tapd:TapdIssue:1:11991001000104,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:07:18.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000367:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:10:25.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000368:completed,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,completed,completed,,,2019-12-16T08:10:25.000+00:00,--,2019-12-16 16:10:25
+tapd:TapdTaskChangelog:1:11991001000368:effort_completed,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,effort_completed,effort_completed,,,2019-12-16T08:10:25.000+00:00,0,16
+tapd:TapdTaskChangelog:1:11991001000368:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T08:10:25.000+00:00,|done,--
+tapd:TapdTaskChangelog:1:11991001000368:modified,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,modified,modified,,,2019-12-16T08:10:25.000+00:00,2019-12-13 14:53:08,2019-12-16 16:10:25
+tapd:TapdTaskChangelog:1:11991001000368:progress,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,progress,progress,,,2019-12-16T08:10:25.000+00:00,0,100
+tapd:TapdTaskChangelog:1:11991001000368:remain,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,remain,remain,,,2019-12-16T08:10:25.000+00:00,16,0
+tapd:TapdTaskChangelog:1:11991001000368:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:10:25.000+00:00,test-11test-11test-11,test-11test-11test-11
diff --git a/plugins/tapd/e2e/bug_changelog_test.go b/plugins/tapd/e2e/story_changelog_test.go
similarity index 73%
copy from plugins/tapd/e2e/bug_changelog_test.go
copy to plugins/tapd/e2e/story_changelog_test.go
index 04b36285..e19b7a2b 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/story_changelog_test.go
@@ -19,16 +19,17 @@ package e2e
 
 import (
 	"fmt"
-	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
 	"testing"
 
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
 	"github.com/apache/incubator-devlake/helpers/e2ehelper"
 	"github.com/apache/incubator-devlake/plugins/tapd/impl"
 	"github.com/apache/incubator-devlake/plugins/tapd/models"
 	"github.com/apache/incubator-devlake/plugins/tapd/tasks"
 )
 
-func TestTapdBugChangelogDataFlow(t *testing.T) {
+func TestTapdStoryChangelogDataFlow(t *testing.T) {
 
 	var tapd impl.Tapd
 	dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
@@ -41,25 +42,27 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 		},
 	}
 	// import raw data table
-	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv",
-		"_raw_tapd_api_bug_changelogs")
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_changelogs.csv",
+		"_raw_tapd_api_story_changelogs")
 
 	// verify extraction
-	dataflowTester.FlushTabler(&models.TapdBugChangelog{})
-	dataflowTester.FlushTabler(&models.TapdBugChangelogItem{})
-	dataflowTester.Subtask(tasks.ExtractBugChangelogMeta, taskData)
+	dataflowTester.FlushTabler(&models.TapdStoryChangelog{})
+	dataflowTester.FlushTabler(&models.TapdStoryChangelogItem{})
+	dataflowTester.Subtask(tasks.ExtractStoryChangelogMeta, taskData)
 	dataflowTester.VerifyTable(
-		models.TapdBugChangelog{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelog{}.TableName()),
-		[]string{"connection_id", "id", "field"},
+		models.TapdStoryChangelog{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdStoryChangelog{}.TableName()),
+		[]string{"connection_id", "id"},
 		[]string{
 			"workspace_id",
-			"bug_id",
-			"author",
-			"old_value",
-			"new_value",
-			"memo",
+			"workitem_type_id",
+			"creator",
 			"created",
+			"change_summary",
+			"comment",
+			"entity_type",
+			"change_type",
+			"story_id",
 			"_raw_data_params",
 			"_raw_data_table",
 			"_raw_data_id",
@@ -67,8 +70,8 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 		},
 	)
 	dataflowTester.VerifyTable(
-		models.TapdBugChangelogItem{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelogItem{}.TableName()),
+		models.TapdStoryChangelogItem{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdStoryChangelogItem{}.TableName()),
 		[]string{
 			"connection_id",
 			"changelog_id",
@@ -87,10 +90,10 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 	)
 
 	dataflowTester.FlushTabler(&ticket.Changelog{})
-	dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
+	dataflowTester.Subtask(tasks.ConvertStoryChangelogMeta, taskData)
 	dataflowTester.VerifyTable(
 		ticket.Changelog{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", ticket.Changelog{}.TableName()),
+		fmt.Sprintf("./snapshot_tables/%s_story.csv", ticket.Changelog{}.TableName()),
 		[]string{"id"},
 		[]string{
 			"_raw_data_params",
diff --git a/plugins/tapd/e2e/bug_changelog_test.go b/plugins/tapd/e2e/task_changelog_test.go
similarity index 73%
copy from plugins/tapd/e2e/bug_changelog_test.go
copy to plugins/tapd/e2e/task_changelog_test.go
index 04b36285..9b659d3e 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/task_changelog_test.go
@@ -19,16 +19,17 @@ package e2e
 
 import (
 	"fmt"
-	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
 	"testing"
 
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
 	"github.com/apache/incubator-devlake/helpers/e2ehelper"
 	"github.com/apache/incubator-devlake/plugins/tapd/impl"
 	"github.com/apache/incubator-devlake/plugins/tapd/models"
 	"github.com/apache/incubator-devlake/plugins/tapd/tasks"
 )
 
-func TestTapdBugChangelogDataFlow(t *testing.T) {
+func TestTapdTaskChangelogDataFlow(t *testing.T) {
 
 	var tapd impl.Tapd
 	dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
@@ -41,25 +42,28 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 		},
 	}
 	// import raw data table
-	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv",
-		"_raw_tapd_api_bug_changelogs")
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_task_changelogs.csv",
+		"_raw_tapd_api_task_changelogs")
 
 	// verify extraction
-	dataflowTester.FlushTabler(&models.TapdBugChangelog{})
-	dataflowTester.FlushTabler(&models.TapdBugChangelogItem{})
-	dataflowTester.Subtask(tasks.ExtractBugChangelogMeta, taskData)
+	dataflowTester.FlushTabler(&models.TapdTaskChangelog{})
+	dataflowTester.FlushTabler(&models.TapdTaskChangelogItem{})
+	dataflowTester.Subtask(tasks.ExtractTaskChangelogMeta, taskData)
 	dataflowTester.VerifyTable(
-		models.TapdBugChangelog{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelog{}.TableName()),
-		[]string{"connection_id", "id", "field"},
+		models.TapdTaskChangelog{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdTaskChangelog{}.TableName()),
+		[]string{"connection_id", "id"},
 		[]string{
 			"workspace_id",
-			"bug_id",
-			"author",
-			"old_value",
-			"new_value",
-			"memo",
+			"workitem_type_id",
+			"creator",
 			"created",
+			"change_summary",
+			"comment",
+			"entity_type",
+			"change_type",
+			"change_type_text",
+			"task_id",
 			"_raw_data_params",
 			"_raw_data_table",
 			"_raw_data_id",
@@ -67,8 +71,8 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 		},
 	)
 	dataflowTester.VerifyTable(
-		models.TapdBugChangelogItem{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelogItem{}.TableName()),
+		models.TapdTaskChangelogItem{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdTaskChangelogItem{}.TableName()),
 		[]string{
 			"connection_id",
 			"changelog_id",
@@ -87,10 +91,10 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
 	)
 
 	dataflowTester.FlushTabler(&ticket.Changelog{})
-	dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
+	dataflowTester.Subtask(tasks.ConvertTaskChangelogMeta, taskData)
 	dataflowTester.VerifyTable(
 		ticket.Changelog{},
-		fmt.Sprintf("./snapshot_tables/%s.csv", ticket.Changelog{}.TableName()),
+		fmt.Sprintf("./snapshot_tables/%s_task.csv", ticket.Changelog{}.TableName()),
 		[]string{"id"},
 		[]string{
 			"_raw_data_params",
diff --git a/plugins/tapd/tasks/story_changelog_converter.go b/plugins/tapd/tasks/story_changelog_converter.go
index e92c6d81..f6f25cf3 100644
--- a/plugins/tapd/tasks/story_changelog_converter.go
+++ b/plugins/tapd/tasks/story_changelog_converter.go
@@ -60,6 +60,8 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdStoryChangelog{})
+	issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{})
+	userIdGen := didgen.NewDomainIdGenerator(&models.TapdUser{})
 
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.story_id, tc.creator, _tool_tapd_story_changelog_items.*"),
@@ -84,8 +86,8 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error {
 				DomainEntity: domainlayer.DomainEntity{
 					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Options.ConnectionId, cl.Id), cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Options.ConnectionId, cl.StoryId),
-				AuthorId:          UserIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Creator),
+				IssueId:           issueIdGen.Generate(data.Options.ConnectionId, cl.StoryId),
+				AuthorId:          userIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Creator),
 				AuthorName:        cl.Creator,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,
diff --git a/plugins/tapd/tasks/task_changelog_converter.go b/plugins/tapd/tasks/task_changelog_converter.go
index 779fe501..24b351aa 100644
--- a/plugins/tapd/tasks/task_changelog_converter.go
+++ b/plugins/tapd/tasks/task_changelog_converter.go
@@ -61,6 +61,8 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdTaskChangelog{})
+	issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{})
+	userIdGen := didgen.NewDomainIdGenerator(&models.TapdUser{})
 
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.task_id, tc.creator, _tool_tapd_task_changelog_items.*"),
@@ -84,8 +86,8 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
 				DomainEntity: domainlayer.DomainEntity{
 					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Options.ConnectionId, cl.Id), cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Options.ConnectionId, cl.TaskId),
-				AuthorId:          UserIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Creator),
+				IssueId:           issueIdGen.Generate(data.Options.ConnectionId, cl.TaskId),
+				AuthorId:          userIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Creator),
 				AuthorName:        cl.Creator,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,


[incubator-devlake] 01/02: e2e on tapd bug_changelog

Posted by wa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

warren pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit 5e57649665c5463dbddec3facce7e606c5aa7dc1
Author: abeizn <zi...@merico.dev>
AuthorDate: Wed Jun 22 15:03:02 2022 +0800

    e2e on tapd bug_changelog
---
 plugins/tapd/e2e/bug_changelog_test.go             | 113 +++++++++++++++++++++
 .../_tool_tapd_bug_changelog_items.csv             |  14 +++
 .../snapshot_tables/_tool_tapd_bug_changelogs.csv  |  14 +++
 plugins/tapd/e2e/snapshot_tables/changelogs.csv    |  14 +++
 plugins/tapd/tasks/bug_changelog_converter.go      |   6 +-
 5 files changed, 159 insertions(+), 2 deletions(-)

diff --git a/plugins/tapd/e2e/bug_changelog_test.go b/plugins/tapd/e2e/bug_changelog_test.go
new file mode 100644
index 00000000..04b36285
--- /dev/null
+++ b/plugins/tapd/e2e/bug_changelog_test.go
@@ -0,0 +1,113 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package e2e
+
+import (
+	"fmt"
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+	"testing"
+
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/plugins/tapd/impl"
+	"github.com/apache/incubator-devlake/plugins/tapd/models"
+	"github.com/apache/incubator-devlake/plugins/tapd/tasks"
+)
+
+func TestTapdBugChangelogDataFlow(t *testing.T) {
+
+	var tapd impl.Tapd
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
+
+	taskData := &tasks.TapdTaskData{
+		Options: &tasks.TapdOptions{
+			ConnectionId: 1,
+			CompanyId:    99,
+			WorkspaceId:  991,
+		},
+	}
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv",
+		"_raw_tapd_api_bug_changelogs")
+
+	// verify extraction
+	dataflowTester.FlushTabler(&models.TapdBugChangelog{})
+	dataflowTester.FlushTabler(&models.TapdBugChangelogItem{})
+	dataflowTester.Subtask(tasks.ExtractBugChangelogMeta, taskData)
+	dataflowTester.VerifyTable(
+		models.TapdBugChangelog{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelog{}.TableName()),
+		[]string{"connection_id", "id", "field"},
+		[]string{
+			"workspace_id",
+			"bug_id",
+			"author",
+			"old_value",
+			"new_value",
+			"memo",
+			"created",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+	dataflowTester.VerifyTable(
+		models.TapdBugChangelogItem{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", models.TapdBugChangelogItem{}.TableName()),
+		[]string{
+			"connection_id",
+			"changelog_id",
+			"field",
+		},
+		[]string{
+			"value_before_parsed",
+			"value_after_parsed",
+			"iteration_id_from",
+			"iteration_id_to",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+
+	dataflowTester.FlushTabler(&ticket.Changelog{})
+	dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
+	dataflowTester.VerifyTable(
+		ticket.Changelog{},
+		fmt.Sprintf("./snapshot_tables/%s.csv", ticket.Changelog{}.TableName()),
+		[]string{"id"},
+		[]string{
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+			"issue_id",
+			"author_id",
+			"author_name",
+			"field_id",
+			"field_name",
+			"from_value",
+			"to_value",
+			"created_date",
+			"original_from_value",
+			"original_to_value",
+		},
+	)
+
+}
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
new file mode 100644
index 00000000..4d086814
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
@@ -0,0 +1,14 @@
+connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteration_id_from,iteration_id_to,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000039,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,1,
+1,11991001000040,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,2,
+1,11991001000090,current_owner,test-11test-11;,test-11test-11test-11;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,3,
+1,11991001000091,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,4,
+1,11991001000093,bugtype,,App,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,5,
+1,11991001000094,bugtype,App,H5,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,6,
+1,11991001000095,bugtype,H5,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,7,
+1,11991001000096,bugtype,test-11test-11,App,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,8,
+1,11991001000097,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,9,
+1,11991001000110,current_owner,test-11test-11test-11;,test-11test-11test-11;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,10,
+1,11991001000112,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,11,
+1,11991001000370,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,12,
+1,11991001000381,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,13,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
new file mode 100644
index 00000000..50ab18cd
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
@@ -0,0 +1,14 @@
+connection_id,id,field,workspace_id,bug_id,author,old_value,new_value,memo,created,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000039,delete_bug,991,11991001000009,test-11test-11,--,--,delete bug,2019-12-13T03:36:06.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,1,
+1,11991001000040,delete_bug,991,11991001000008,test-11test-11,--,--,delete bug,2019-12-13T03:36:11.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,2,
+1,11991001000090,current_owner,991,11991001000025,test-11test-11test-11,test-11test-11;,test-11test-11test-11;,,2019-12-17T09:35:34.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,3,
+1,11991001000091,delete_bug,991,11991001000025,test-11test-11test-11,--,--,delete bug,2019-12-17T09:49:27.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,4,
+1,11991001000093,bugtype,991,11991001000026,test-11test-11test-11,,App,,2019-12-17T09:53:19.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,5,
+1,11991001000094,bugtype,991,11991001000026,test-11test-11test-11,App,H5,,2019-12-17T09:53:27.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,6,
+1,11991001000095,bugtype,991,11991001000026,test-11test-11test-11,H5,test-11test-11,,2019-12-17T09:53:29.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,7,
+1,11991001000096,bugtype,991,11991001000026,test-11test-11test-11,test-11test-11,App,,2019-12-17T09:53:32.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,8,
+1,11991001000097,delete_bug,991,11991001000026,test-11test-11test-11,--,--,delete bug,2019-12-17T09:53:54.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,9,
+1,11991001000110,current_owner,991,11991001000034,test-11test-11test-11,test-11test-11test-11;,test-11test-11test-11;,,2019-12-18T07:39:51.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,10,
+1,11991001000112,delete_bug,991,11991001000034,test-11test-11test-11,--,--,delete bug,2019-12-18T07:49:33.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,11,
+1,11991001000370,delete_bug,991,11991001000064,test-11test-11,--,--,delete bug,2019-12-20T07:06:39.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,12,
+1,11991001000381,delete_bug,991,11991001000075,test-11test-11test-11,--,--,delete bug,2019-12-20T07:37:52.000+00:00,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,13,
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs.csv b/plugins/tapd/e2e/snapshot_tables/changelogs.csv
new file mode 100644
index 00000000..25f30421
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/changelogs.csv
@@ -0,0 +1,14 @@
+id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value
+tapd:TapdBugChangelog:1:11991001000039:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,1,,tapd:TapdIssue:1:11991001000009,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-13T03:36:06.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000040:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,2,,tapd:TapdIssue:1:11991001000008,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-13T03:36:11.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000090:current_owner,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,3,,tapd:TapdIssue:1:11991001000025,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,current_owner,current_owner,,,2019-12-17T09:35:34.000+00:00,test-11test-11;,test-11test-11test-11;
+tapd:TapdBugChangelog:1:11991001000091:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,4,,tapd:TapdIssue:1:11991001000025,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-17T09:49:27.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000093:bugtype,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,5,,tapd:TapdIssue:1:11991001000026,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:19.000+00:00,,App
+tapd:TapdBugChangelog:1:11991001000094:bugtype,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,6,,tapd:TapdIssue:1:11991001000026,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:27.000+00:00,App,H5
+tapd:TapdBugChangelog:1:11991001000095:bugtype,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,7,,tapd:TapdIssue:1:11991001000026,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:29.000+00:00,H5,test-11test-11
+tapd:TapdBugChangelog:1:11991001000096:bugtype,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,8,,tapd:TapdIssue:1:11991001000026,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:32.000+00:00,test-11test-11,App
+tapd:TapdBugChangelog:1:11991001000097:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,9,,tapd:TapdIssue:1:11991001000026,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-17T09:53:54.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000110:current_owner,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,10,,tapd:TapdIssue:1:11991001000034,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,current_owner,current_owner,,,2019-12-18T07:39:51.000+00:00,test-11test-11test-11;,test-11test-11test-11;
+tapd:TapdBugChangelog:1:11991001000112:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,11,,tapd:TapdIssue:1:11991001000034,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-18T07:49:33.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000370:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,12,,tapd:TapdIssue:1:11991001000064,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-20T07:06:39.000+00:00,--,--
+tapd:TapdBugChangelog:1:11991001000381:delete_bug,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_bug_changelogs,13,,tapd:TapdIssue:1:11991001000075,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-20T07:37:52.000+00:00,--,--
diff --git a/plugins/tapd/tasks/bug_changelog_converter.go b/plugins/tapd/tasks/bug_changelog_converter.go
index 649f5668..3b07480c 100644
--- a/plugins/tapd/tasks/bug_changelog_converter.go
+++ b/plugins/tapd/tasks/bug_changelog_converter.go
@@ -56,6 +56,8 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) error {
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
 	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
+	issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{})
+	userIdGen := didgen.NewDomainIdGenerator(&models.TapdUser{})
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdBugChangelog{})
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.bug_id, tc.author, _tool_tapd_bug_changelog_items.*"),
@@ -81,8 +83,8 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) error {
 				DomainEntity: domainlayer.DomainEntity{
 					Id: clIdGen.Generate(data.Options.ConnectionId, cl.Id, cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Options.ConnectionId, cl.BugId),
-				AuthorId:          UserIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Author),
+				IssueId:           issueIdGen.Generate(data.Options.ConnectionId, cl.BugId),
+				AuthorId:          userIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, cl.Author),
 				AuthorName:        cl.Author,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,