Resolve "testing building and linting pipeline for backend"

This commit is contained in:
ekresse
2024-01-11 21:53:24 +00:00
parent 466b2503e4
commit c027c20fd6
5 changed files with 79 additions and 19 deletions

55
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,55 @@
stages:
- build
- test
- docker
build-backend:
image: golang:1.21-alpine
stage: build
rules:
- changes:
- backend/**/*
script:
- cd backend
- go build -o htwkalender
artifacts:
paths:
- backend/htwkalender
- backend/go.sum
- backend/go.mod
test:
image: golang:1.21-alpine
stage: test
rules:
- changes:
- backend/**/*
script:
- cd backend
- go test -v ./...
dependencies:
- build-backend
build-backend-image:
stage: docker
image: docker:20.10.16
services:
- name: docker:20.10.16-dind
alias: docker
tags:
- image
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "/certs/client"
script:
- cd backend
- docker login -u $CI_DOCKER_REGISTRY_USER -p $CI_DOCKER_REGISTRY_PASSWORD $CI_DOCKER_REGISTRY
- docker build -t htwkalender-backend$IMAGE_TAG .
- docker tag htwkalender-backend$IMAGE_TAG $CI_DOCKER_REGISTRY_USER/htwkalender:backend
- docker push $CI_DOCKER_REGISTRY_USER/htwkalender:backend
only:
- main
- development

View File

@@ -9,7 +9,7 @@ RUN go mod download
# Copy the source from the current directory to the Working Directory inside the container # Copy the source from the current directory to the Working Directory inside the container
COPY *.go ./ COPY *.go ./
COPY .. . COPY . .
# Build the Go app # Build the Go app
RUN CGO_ENABLED=0 GOOS=linux go build -o /htwkalender RUN CGO_ENABLED=0 GOOS=linux go build -o /htwkalender

View File

@@ -9,6 +9,8 @@ import (
) )
func TestEvents_Contains(t *testing.T) { func TestEvents_Contains(t *testing.T) {
specificTime, _ := types.ParseDateTime("2020-01-01 12:00:00.000Z")
type args struct { type args struct {
event Event event Event
} }
@@ -26,20 +28,20 @@ func TestEvents_Contains(t *testing.T) {
}, },
{ {
name: "one event", name: "one event",
m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}},
args: args{event: Event{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, args: args{event: Event{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}},
want: true, want: true,
}, },
{ {
name: "two events", name: "two events",
m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, {Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, {Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}},
args: args{event: Event{Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, args: args{event: Event{Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}},
want: true, want: true,
}, },
{ {
name: "two events with different values", name: "two events with different values",
m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test", UUID: "439ßu56rf8u9ijn4f4-2345345"}, {Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2", UUID: "432a39ßu545349ijn4f4-23dsa45"}}, m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test", UUID: "439ßu56rf8u9ijn4f4-2345345"}, {Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2", UUID: "432a39ßu545349ijn4f4-23dsa45"}},
args: args{event: Event{Day: "test3", Week: "test3", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test3", Course: "test3", Prof: "test3", Rooms: "test3", EventType: "test3", UUID: "934mf43r34f-g68h7655tg3"}}, args: args{event: Event{Day: "test3", Week: "test3", Start: specificTime, End: specificTime, Name: "test3", Course: "test3", Prof: "test3", Rooms: "test3", EventType: "test3", UUID: "934mf43r34f-g68h7655tg3"}},
want: false, want: false,
}, },
} }
@@ -53,6 +55,8 @@ func TestEvents_Contains(t *testing.T) {
} }
func TestEvent_Equals(t *testing.T) { func TestEvent_Equals(t *testing.T) {
specificTime, _ := types.ParseDateTime("2020-01-01 12:00:00.000Z")
type fields struct { type fields struct {
UUID string UUID string
Day string Day string
@@ -86,20 +90,20 @@ func TestEvent_Equals(t *testing.T) {
}, },
{ {
name: "one empty one not", name: "one empty one not",
fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"},
args: args{event: Event{}}, args: args{event: Event{}},
want: false, want: false,
}, },
{ {
name: "one event", name: "one event",
fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"},
args: args{event: Event{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, args: args{event: Event{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}},
want: true, want: true,
}, },
{ {
name: "two events", name: "two events",
fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"},
args: args{event: Event{Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, args: args{event: Event{Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}},
want: false, want: false,
}, },
} }

View File

@@ -7,6 +7,8 @@ import (
) )
func Test_getDateFromWeekNumber(t *testing.T) { func Test_getDateFromWeekNumber(t *testing.T) {
europeTime, _ := time.LoadLocation("Europe/Berlin")
type args struct { type args struct {
year int year int
weekNumber int weekNumber int
@@ -25,7 +27,7 @@ func Test_getDateFromWeekNumber(t *testing.T) {
weekNumber: 1, weekNumber: 1,
dayName: "Montag", dayName: "Montag",
}, },
want: time.Date(2021, 1, 4, 0, 0, 0, 0, time.UTC), want: time.Date(2021, 1, 4, 0, 0, 0, 0, europeTime),
wantErr: false, wantErr: false,
}, },
{ {
@@ -35,7 +37,7 @@ func Test_getDateFromWeekNumber(t *testing.T) {
weekNumber: 57, weekNumber: 57,
dayName: "Montag", dayName: "Montag",
}, },
want: time.Date(2024, 1, 29, 0, 0, 0, 0, time.UTC), want: time.Date(2024, 1, 29, 0, 0, 0, 0, europeTime),
wantErr: false, wantErr: false,
}, },
{ {
@@ -45,7 +47,7 @@ func Test_getDateFromWeekNumber(t *testing.T) {
weekNumber: 1, weekNumber: 1,
dayName: "Montag", dayName: "Montag",
}, },
want: time.Date(2023, 1, 2, 0, 0, 0, 0, time.UTC), want: time.Date(2023, 1, 2, 0, 0, 0, 0, europeTime),
wantErr: false, wantErr: false,
}, },
} }

View File

@@ -267,7 +267,6 @@ func Test_generateUUIDs(t *testing.T) {
} }
func Test_createTimeFromHourAndMinuteString(t *testing.T) { func Test_createTimeFromHourAndMinuteString(t *testing.T) {
europeTime, _ := time.LoadLocation("Europe/Berlin")
type args struct { type args struct {
tableTime string tableTime string
} }
@@ -281,21 +280,21 @@ func Test_createTimeFromHourAndMinuteString(t *testing.T) {
args: args{ args: args{
tableTime: "08:00", tableTime: "08:00",
}, },
want: time.Date(0, 0, 0, 8, 0, 0, 0, europeTime), want: time.Date(0, 0, 0, 8, 0, 0, 0, time.UTC),
}, },
{ {
name: "Test 2", name: "Test 2",
args: args{ args: args{
tableTime: "08:15", tableTime: "08:15",
}, },
want: time.Date(0, 0, 0, 8, 15, 0, 0, europeTime), want: time.Date(0, 0, 0, 8, 15, 0, 0, time.UTC),
}, },
{ {
name: "Test 3", name: "Test 3",
args: args{ args: args{
tableTime: "08:30", tableTime: "08:30",
}, },
want: time.Date(0, 0, 0, 8, 30, 0, 0, europeTime), want: time.Date(0, 0, 0, 8, 30, 0, 0, time.UTC),
}, },
} }
for _, tt := range tests { for _, tt := range tests {