Skip to content

Commit 9494c3f

Browse files
committed
カスタムフィールドが削除されると以前の課題に以前のカスタムフィールドが残るのでコピーできない。
1 parent f70b532 commit 9494c3f

File tree

3 files changed

+13
-16
lines changed

3 files changed

+13
-16
lines changed

src/lib/Backup/Copy/Traits/CopyIssue.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public function remapCustomFieldKeys($issue,$idMap){
5656
$data[$idx] = [];
5757
$data[$idx]['id'] = $map[$cf->id];
5858
$data[$idx]['value'] =match ($cf->fieldTypeId){
59-
1,2,3,4,5,8 => $cf->value,// シングル値
59+
1,2,3,4 => $cf->value,// シングル値
60+
5,8 => $cf->value->id,// シングル値、ただしオブジェクトから選ぶ
6061
6,7 => array_column($cf->value,'id'),//複数値選択
6162
};
6263
if (!empty($cf->other_value)){

src/lib/Backup/Copy/Traits/CopyProjectCustomField.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ protected function formatCustomField ( object $customField, array $type_ids ) {
4545
}
4646
}
4747
if (!empty($data['items'])){
48-
$values = array_column($data['items'],'name');
48+
// カスタムフィールドのListは削除される、二度と取得できないため欠番を埋める。
49+
$values = array_column($data['items'],'name','id');
50+
$seq_keys = range(array_keys($values)[0],array_slice(array_keys($values),-1)[0]);
51+
$values = array_replace(array_fill_keys($seq_keys,'未設定'),$values);
4952
$data['items'] = $values;
5053
}
5154
// カスタムフィールドの必須チェックは誤作動する。

tests/Feature/Copy/CopyBacklogProjectTest.php

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,29 @@ protected function tearDown (): void {
1818

1919

2020
public function test_copy_project_and_issues_and_comments () {
21-
22-
2321
$projects = $this->api->getProjectList();
2422
$project = null;
2523
foreach ( $projects as $project ) {
26-
if(preg_match('/TAKU/',$project->projectKey)>0){
27-
dump($project);
24+
if ( preg_match( '/TAKU/', $project->projectKey ) > 0 ) {
25+
//dump($project->projectKey);
2826
break;
2927
}
3028
}
3129
$src_project_id = $project->id;
32-
//スペースをまたぐ場合を想定する
30+
////スペースをまたぐ場合を想定する
3331
$src_cli = $this->api;
3432
$dst_cli = $this->api;
35-
$woker = new BacklogCopy($src_cli,$dst_cli);
36-
$woker->copyProject($src_project_id,$this->project_id);
33+
$woker = new BacklogCopy( $src_cli, $dst_cli );
34+
$woker->setAssignee( $this->api->getOwnUser()->id );
35+
$woker->copyProject( $src_project_id, $this->project_id );
3736

3837
$src_issue_list = $src_cli->issue_ids($src_project_id);
3938
$dst_issue_list = $dst_cli->issue_ids($this->project_id);
4039
$this->assertEquals(sizeof($src_issue_list),sizeof($dst_issue_list));
41-
//
40+
4241
$src_wiki_list = $src_cli->getWikiPageList(['projectIdOrKey' =>$src_project_id]);
4342
$dst_wiki_list = $dst_cli->getWikiPageList(['projectIdOrKey' =>$this->project_id]);
4443
$this->assertEquals(sizeof($src_wiki_list),sizeof($dst_wiki_list));
45-
46-
47-
48-
49-
50-
5144
}
5245

5346
}

0 commit comments

Comments
 (0)