Skip to content

Commit fb3191b

Browse files
authored
Fix test cases and update swagger documentation (#32)
- Fixed all failing test cases by correcting mock expectations - Updated swagger annotations for all API endpoints - Added missing swagger documentation for product details and update handlers - Added swagger documentation for health check endpoint - Fixed swagger comment format issues - Regenerated complete swagger documentation - All tests now passing (100% success rate) - Complete API documentation coverage for all 9 endpoints
1 parent 3fe4390 commit fb3191b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+630
-501
lines changed

.github/workflows/go.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ jobs:
3333

3434
- name: Build
3535
run: go build -v ./...
36+
37+
- name: Run golangci-lint (v2)
38+
uses: golangci/golangci-lint-action@v8
39+
with:
40+
version: v2.1.0
41+
args: --verbose
3642

3743
- name: Test
3844
run: go test -v ./...

.golangci.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
version: "2"
2+
run:
3+
concurrency: 4
4+
linters:
5+
default: all
6+
disable:
7+
- copyloopvar
8+
- cyclop
9+
- depguard
10+
- dupl
11+
- err113
12+
- errname
13+
- errorlint
14+
- exhaustive
15+
- exhaustruct
16+
- forbidigo
17+
- forcetypeassert
18+
- funlen
19+
- gochecknoglobals
20+
- gocognit
21+
- goconst
22+
- gocyclo
23+
- godox
24+
- godot
25+
- gosec
26+
- gosmopolitan
27+
- inamedparam
28+
- interfacebloat
29+
- intrange
30+
- ireturn
31+
- lll
32+
- maintidx
33+
- mnd
34+
- nakedret
35+
- nestif
36+
- nlreturn
37+
- noctx
38+
- nonamedreturns
39+
- paralleltest
40+
- testableexamples
41+
- testpackage
42+
- testifylint
43+
- thelper
44+
- tparallel
45+
- unparam
46+
- usestdlibvars
47+
- varnamelen
48+
- wrapcheck
49+
- wsl
50+
settings:
51+
gocritic:
52+
disabled-checks:
53+
- deferInLoop
54+
- importShadow
55+
- sloppyReassign
56+
- unnamedResult
57+
- whyNoLint
58+
enabled-tags:
59+
- diagnostic
60+
- experimental
61+
- opinionated
62+
- performance
63+
- style
64+
govet:
65+
disable:
66+
- fieldalignment
67+
- shadow
68+
enable-all: true
69+
lll:
70+
line-length: 130
71+
revive:
72+
rules:
73+
- name: indent-error-flow
74+
- name: use-any
75+
staticcheck:
76+
checks:
77+
- -ST1000
78+
- all
79+
exclusions:
80+
generated: lax
81+
presets:
82+
- common-false-positives
83+
- legacy
84+
- std-error-handling
85+
rules:
86+
- linters:
87+
- lll
88+
path: _test\.go
89+
paths:
90+
- third_party$
91+
- builtin$
92+
- examples$
93+
- example/
94+
issues:
95+
max-issues-per-linter: 0
96+
max-same-issues: 0
97+
formatters:
98+
enable:
99+
- gci
100+
- gofmt
101+
- gofumpt
102+
- goimports
103+
exclusions:
104+
generated: lax
105+
paths:
106+
- third_party$
107+
- builtin$
108+
- examples$
109+
- example/

cmd/server/main.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package main
22

33
import (
4-
"github.com/MitulShah1/golang-rest-api-template/package/logger"
5-
6-
_ "github.com/MitulShah1/golang-rest-api-template/internal/handlers/category/model"
7-
84
"github.com/MitulShah1/golang-rest-api-template/config"
5+
_ "github.com/MitulShah1/golang-rest-api-template/internal/handlers/category/model"
6+
"github.com/MitulShah1/golang-rest-api-template/package/logger"
97
)
108

119
// @title REST API Template Example
@@ -30,7 +28,6 @@ import (
3028
// @externalDocs.description OpenAPI
3129
// @externalDocs.url https://swagger.io/resources/open-api/
3230
func main() {
33-
3431
// Initialize the logger
3532
log := logger.NewLogger(logger.DefaultOptions())
3633

@@ -44,5 +41,4 @@ func main() {
4441
if err := config.Run(); err != nil {
4542
log.Fatal("error while run app", "error", err.Error())
4643
}
47-
4844
}

config/config.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// Package config provides configuration management for the application.
2+
// It handles loading environment variables, database configuration,
3+
// server settings, and telemetry configuration.
14
package config
25

36
import (
@@ -17,7 +20,8 @@ import (
1720
tracesdk "go.opentelemetry.io/otel/sdk/trace"
1821
)
1922

20-
// Config holds application configuration
23+
// Service holds application configuration and manages the application lifecycle.
24+
// It includes database, server, and telemetry configuration.
2125
type Service struct {
2226
Name string
2327
Logger *logger.Logger
@@ -57,17 +61,16 @@ func NewService() *Service {
5761
// initializing the logger, database connection, and server. It returns an error if any
5862
// of the initialization steps fail.
5963
func (cnf *Service) Init() (err error) {
60-
61-
//initiale logger
64+
// initialize logger
6265
cnf.Logger = logger.NewLogger(logger.DefaultOptions())
6366

64-
//Load Env variables
67+
// Load environment variables
6568
if err := cnf.LoadConfig(); err != nil {
6669
return err
6770
}
6871

69-
//initiale database
70-
cnf.db, err = database.NewDatabase(database.DBConfig{
72+
// initialize database
73+
cnf.db, err = database.NewDatabase(&database.DBConfig{
7174
Host: cnf.dbEnv.Host,
7275
Port: cnf.dbEnv.Port,
7376
User: cnf.dbEnv.User,
@@ -95,9 +98,9 @@ func (cnf *Service) Init() (err error) {
9598

9699
cnf.Logger.Info("Tracer initialized")
97100

98-
//initiale server
101+
// initialize server
99102
serverAddr := cnf.srvConfg.Address + ":" + cnf.srvConfg.Port
100-
if cnf.Server, err = handlers.NewServer(serverAddr, cnf.Logger, cnf.db, tmCnfg); err != nil {
103+
if cnf.Server, err = handlers.NewServer(serverAddr, cnf.Logger, cnf.db, &tmCnfg); err != nil {
101104
return err
102105
}
103106

@@ -108,7 +111,6 @@ func (cnf *Service) Init() (err error) {
108111
// It runs the server in a goroutine and waits for a termination signal (SIGINT or SIGTERM).
109112
// When a termination signal is received, it gracefully shuts down the server.
110113
func (cnf *Service) Run() error {
111-
112114
// Channel to listen for termination signals
113115
stop := make(chan os.Signal, 1)
114116
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
@@ -144,7 +146,7 @@ func (cnf *Service) Run() error {
144146
}
145147

146148
func (cnf *Service) LoadConfig() error {
147-
//loads environment variables from .env file
149+
// loads environment variables from .env file
148150
if err := godotenv.Load(); err != nil {
149151
cnf.Logger.Warn("no .env file found, using system environment variables")
150152
}
@@ -157,13 +159,13 @@ func (cnf *Service) LoadConfig() error {
157159
Name: getEnv("DB_NAME", "mydatabase"),
158160
}
159161

160-
//Server config
162+
// Server config
161163
cnf.srvConfg = ServerConf{
162164
Address: getEnv("SERVER_ADDR", ""),
163165
Port: getEnv("SERVER_PORT", "8080"),
164166
}
165167

166-
//Jaeger config
168+
// Jaeger config
167169
cnf.jaegerConfig = JaegerConfig{
168170
AgentHost: getEnv("JAEGER_AGENT_HOST", "localhost"),
169171
AgentPort: getEnv("JAEGER_AGENT_PORT", "6831"),

0 commit comments

Comments
 (0)