Skip to content

Commit

Permalink
[Test] cover mode by tests
Browse files Browse the repository at this point in the history
  • Loading branch information
JanGalek committed Dec 16, 2024
1 parent 3d0c762 commit 012a63f
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .github/workflows/commit-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ on:
- develop
- feature/**
- release/**
- test/**
- bugfix/**

jobs:
lint-commits:
Expand Down
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.PHONY: install tests

install:
go mod tidy && go mod vendor

tests:
go test -v ./tests
8 changes: 8 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
module github.com/gouef/mode

go 1.23.4

require github.com/stretchr/testify v1.10.0

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
7 changes: 6 additions & 1 deletion mode.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func NewMode(additionalModes []string) (*Mode, error) {
return &Mode{
mode: DebugMode,
modes: modes,
}, errors.New(fmt.Sprintf("mode from env doest not exists in available modes, used \"%s\", \"%s\" will be used.", mode, DebugMode))
}, errors.New(fmt.Sprintf("mode from env doest not exists in available modes, used \"%s\", \"%s\" will be use.", mode, DebugMode))
}

return &Mode{
Expand Down Expand Up @@ -117,6 +117,11 @@ func (m *Mode) GetMode() string {
return m.mode
}

// Modes return available modes
func (m Mode) Modes() []string {
return m.modes
}

// modeExists internal function for check if mode is inside available modes
func (m *Mode) modeExists(mode string) bool {
return modeExists(m.modes, mode)
Expand Down
116 changes: 116 additions & 0 deletions tests/mode_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package tests

import (
"os"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/gouef/mode" // Nahraď správnou cestou k balíčku "mode"
)

func TestNewBasicMode_DefaultMode(t *testing.T) {
os.Unsetenv(mode.EnvMode)

m, err := mode.NewBasicMode()

require.Error(t, err, "mode from env doest not exists in available modes, used \"\", \"debug\" will be used.\n")
assert.Equal(t, mode.DebugMode, m.GetMode())
assert.ElementsMatch(t, []string{mode.DebugMode, mode.TestMode, mode.ReleaseMode}, m.Modes())
}

func TestNewBasicMode_InvalidEnvMode(t *testing.T) {
os.Setenv(mode.EnvMode, "invalid")

m, err := mode.NewBasicMode()

assert.Error(t, err)
assert.Equal(t, mode.DebugMode, m.GetMode())
assert.Contains(t, err.Error(), "mode from env doest not exists in available modes")
}

func TestNewMode_ValidEnvMode(t *testing.T) {
os.Setenv(mode.EnvMode, mode.TestMode)

m, err := mode.NewMode([]string{"staging"})

require.NoError(t, err)
assert.Equal(t, mode.TestMode, m.GetMode())
assert.Contains(t, m.Modes(), "staging")
}

func TestMode_AddMode(t *testing.T) {
os.Unsetenv(mode.EnvMode)
m, _ := mode.NewBasicMode()

m.AddMode("staging")

assert.Contains(t, m.Modes(), "staging")
}

func TestMode_EnableMode(t *testing.T) {
os.Unsetenv(mode.EnvMode)
m, _ := mode.NewBasicMode()

success, err := m.EnableMode(mode.TestMode)

require.NoError(t, err)
assert.True(t, success)
assert.Equal(t, mode.TestMode, m.GetMode())
}

func TestMode_EnableMode_Invalid(t *testing.T) {
os.Unsetenv(mode.EnvMode)
m, _ := mode.NewBasicMode()

success, err := m.EnableMode("invalid")

assert.Error(t, err)
assert.False(t, success)
assert.Contains(t, err.Error(), "mode doest not exists")
}

func TestMode_IsMode(t *testing.T) {
os.Setenv(mode.EnvMode, mode.DebugMode)
m, _ := mode.NewBasicMode()

isMode, err := m.IsMode(mode.DebugMode)

require.NoError(t, err)
assert.True(t, isMode)

isMode, err = m.IsMode("invalid")
assert.Error(t, err)
assert.False(t, isMode)
}

func TestMode_IsDebug(t *testing.T) {
os.Setenv(mode.EnvMode, mode.DebugMode)
m, _ := mode.NewBasicMode()

isDebug, err := m.IsDebug()

require.NoError(t, err)
assert.True(t, isDebug)
}

func TestMode_IsTest(t *testing.T) {
os.Setenv(mode.EnvMode, mode.TestMode)
m, _ := mode.NewBasicMode()

isTest, err := m.IsTest()

require.NoError(t, err)
assert.True(t, isTest)
}

func TestMode_IsRelease(t *testing.T) {
os.Setenv(mode.EnvMode, mode.ReleaseMode)
m, _ := mode.NewBasicMode()

isRelease, err := m.IsRelease()

require.NoError(t, err)
assert.True(t, isRelease)
}

0 comments on commit 012a63f

Please sign in to comment.