Skip to content

Commit b8af8d2

Browse files
committed
Merge branch 'refs/heads/develop' into feature/procedural_command
2 parents d69e4c4 + 1da75a7 commit b8af8d2

File tree

7 files changed

+116
-11
lines changed

7 files changed

+116
-11
lines changed

internal/converter/copyright.go

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package converter
2+
3+
import (
4+
"os/exec"
5+
"os/user"
6+
"strings"
7+
)
8+
9+
type Copyright interface {
10+
Get() (string, error)
11+
}
12+
13+
type CopyrightImpl struct {
14+
}
15+
16+
func (c CopyrightImpl) Get() (string, error) {
17+
18+
gitUsername, err := c.getGitUsername()
19+
20+
if err == nil {
21+
return gitUsername, nil
22+
}
23+
24+
user, err := user.Current()
25+
26+
if err == nil {
27+
return user.Username, nil
28+
}
29+
30+
return "", err
31+
}
32+
33+
func (c CopyrightImpl) getGitUsername() (string, error) {
34+
35+
gitCmd := exec.Command("git", "config", "--global", "user.name")
36+
nameBytes, err := gitCmd.Output()
37+
38+
if err == nil && len(nameBytes) > 0 {
39+
return strings.Trim(string(nameBytes), "\n"), nil
40+
}
41+
42+
return "", err
43+
}

internal/converter/copyright_test.go

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package converter_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/Geektree0101/clean-swift-scaffold/internal/converter"
7+
)
8+
9+
// MARK: - Test Double
10+
11+
type CopyrightStub struct {
12+
GetSuccessStub string
13+
GetErrorStub error
14+
}
15+
16+
func (c CopyrightStub) Get() (string, error) {
17+
18+
return c.GetSuccessStub, c.GetErrorStub
19+
}
20+
21+
// MARK: - Test Case
22+
23+
func TestCopyright(t *testing.T) {
24+
25+
t.Run("get copyright", func(t *testing.T) {
26+
// given
27+
sut := converter.CopyrightImpl{}
28+
29+
// when
30+
out, err := sut.Get()
31+
32+
// then
33+
if err != nil {
34+
t.Error(err)
35+
}
36+
37+
if len(out) == 0 {
38+
t.Errorf("output should be longer than 0, output: %s", out)
39+
}
40+
})
41+
}

internal/converter/header.go

+16-7
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,22 @@ import (
1010
)
1111

1212
type HeaderConverter struct {
13-
targetProjectName string
14-
copyright string
15-
date time.Time
13+
copyright Copyright
14+
targetProjectName string
15+
copyrightDefaultValue string
16+
date time.Time
1617
}
1718

1819
func NewHeaderConverter(
20+
copyright Copyright,
1921
config *model.Config,
2022
date time.Time) *HeaderConverter {
2123

2224
return &HeaderConverter{
23-
targetProjectName: config.TargetProjectName,
24-
copyright: config.Copyright,
25-
date: date,
25+
copyright: copyright,
26+
targetProjectName: config.TargetProjectName,
27+
copyrightDefaultValue: config.Copyright,
28+
date: date,
2629
}
2730
}
2831

@@ -34,12 +37,18 @@ func (header *HeaderConverter) Render(source string, sceneName string) string {
3437

3538
dateStr := fmt.Sprintf("%d/%d/%d", day, month, year)
3639

40+
copyright, err := header.copyright.Get()
41+
42+
if err != nil {
43+
copyright = header.copyrightDefaultValue
44+
}
45+
3746
var replacedSource string = source
3847
replacedSource = strings.ReplaceAll(replacedSource, "__SCENE_NAME__", sceneName)
3948
replacedSource = strings.ReplaceAll(replacedSource, "__TARGET_PROJECT_NAME__", header.targetProjectName)
4049
replacedSource = strings.ReplaceAll(replacedSource, "__DATE__", dateStr)
4150
replacedSource = strings.ReplaceAll(replacedSource, "__YEAR__", strconv.Itoa(year))
42-
replacedSource = strings.ReplaceAll(replacedSource, "__COPYRIGHT__", header.copyright)
51+
replacedSource = strings.ReplaceAll(replacedSource, "__COPYRIGHT__", copyright)
4352

4453
return replacedSource
4554
}

internal/converter/header_test.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,19 @@ func TestHeader(t *testing.T) {
4040
// given
4141
config := model.Config{
4242
TargetProjectName: "Miro",
43-
Copyright: "Geektree0101",
43+
Copyright: "David Ha",
4444
TemplatePath: "",
4545
}
4646

4747
date := time.Date(2020, 10, 12, 0, 0, 0, 0, time.UTC)
48-
sut := converter.NewHeaderConverter(&config, date)
48+
sut := converter.NewHeaderConverter(
49+
CopyrightStub{
50+
GetSuccessStub: "Geektree0101",
51+
GetErrorStub: nil,
52+
},
53+
&config,
54+
date,
55+
)
4956

5057
usecaseName := "ArticleDetail"
5158

internal/converter/source_test.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,18 @@ func createSource() *converter.SourceConverter {
1515

1616
config := &model.Config{
1717
TargetProjectName: "Miro",
18-
Copyright: "Geektree0101",
18+
Copyright: "David Ha",
1919
TemplatePath: "../../templates",
2020
SourceDir: "./Playground/Sources",
2121
TestDir: "./Playground/Tests",
2222
Indentation: 2,
2323
}
2424

2525
header := converter.NewHeaderConverter(
26+
CopyrightStub{
27+
GetSuccessStub: "Geektree0101",
28+
GetErrorStub: nil,
29+
},
2630
config,
2731
date,
2832
)

internal/gen/generator.go

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ func (gen *Generator) Run() error {
4848
gen.flag.Name,
4949
strings.Split(gen.flag.UsecasesString, ","),
5050
converter.NewHeaderConverter(
51+
converter.CopyrightImpl{},
5152
config,
5253
today,
5354
),

test/ArticleDetailPresenterTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ final class ArticleDetailPresenterTests: XCTestCase {
3737
override func setUp() {
3838
self.presenter = ArticleDetailPresenter()
3939
self.display = ArticleDetailDisplaySpy()
40-
self.presenter.view = self.display
40+
self.presenter.viewController = self.display
4141
}
4242
}
4343

0 commit comments

Comments
 (0)