File tree Expand file tree Collapse file tree 2 files changed +86
-0
lines changed Expand file tree Collapse file tree 2 files changed +86
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace App \Commands ;
4
+
5
+ use App \Coding \Issue ;
6
+ use App \Coding \Project ;
7
+ use LaravelZero \Framework \Commands \Command ;
8
+
9
+ class ProjectGetIssueTypesCommand extends Command
10
+ {
11
+ use WithCoding;
12
+
13
+ /**
14
+ * The signature of the command.
15
+ *
16
+ * @var string
17
+ */
18
+ protected $ signature = 'project:get-issue-types
19
+ {--coding_token= : CODING 令牌}
20
+ {--coding_team_domain= : CODING 团队域名,如 xxx.coding.net 即填写 xxx}
21
+ {--coding_project_uri= : CODING 项目标识,如 xxx.coding.net/p/yyy 即填写 yyy}
22
+ ' ;
23
+
24
+ /**
25
+ * The description of the command.
26
+ *
27
+ * @var string
28
+ */
29
+ protected $ description = '获取项目下的事项类型 ' ;
30
+
31
+ /**
32
+ * Execute the console command.
33
+ *
34
+ */
35
+ public function handle (Project $ codingProject ): int
36
+ {
37
+ $ this ->setCodingApi ();
38
+
39
+ $ result = $ codingProject ->getIssueTypes ($ this ->codingToken , $ this ->codingProjectUri );
40
+
41
+ foreach ($ result as $ item ) {
42
+ $ this ->info ($ item ['Id ' ] . ' ' . $ item ['Name ' ]);
43
+ }
44
+
45
+ return 0 ;
46
+ }
47
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Tests \Feature ;
4
+
5
+ use App \Coding \Project ;
6
+ use Tests \TestCase ;
7
+
8
+ class ProjectGetIssueTypesCommandTest extends TestCase
9
+ {
10
+ protected function setUp (): void
11
+ {
12
+ parent ::setUp ();
13
+ $ codingToken = $ this ->faker ->md5 ;
14
+ config (['coding.token ' => $ codingToken ]);
15
+ $ codingTeamDomain = $ this ->faker ->domainWord ;
16
+ config (['coding.team_domain ' => $ codingTeamDomain ]);
17
+ $ codingProjectUri = $ this ->faker ->slug ;
18
+ config (['coding.project_uri ' => $ codingProjectUri ]);
19
+ }
20
+
21
+ public function testCreateSuccess ()
22
+ {
23
+ $ mock = \Mockery::mock (Project::class, [])->makePartial ();
24
+ $ this ->instance (Project::class, $ mock );
25
+
26
+ $ mock ->shouldReceive ('getIssueTypes ' )->times (1 )->andReturn (json_decode (
27
+ file_get_contents ($ this ->dataDir . 'coding/ ' . 'DescribeProjectIssueTypeListResponse.json ' ),
28
+ true
29
+ )['Response ' ]['IssueTypes ' ]);
30
+
31
+ $ this ->artisan ('project:get-issue-types ' )
32
+ ->expectsOutput ('213217 史诗 ' )
33
+ ->expectsOutput ('213218 用户故事 ' )
34
+ ->expectsOutput ('213220 任务 ' )
35
+ ->expectsOutput ('213221 缺陷 ' )
36
+ ->expectsOutput ('213222 子工作项 ' )
37
+ ->assertExitCode (0 );
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments