mirror of
https://github.com/MeshCore-Beacon/beacon-server.git
synced 2026-09-01 16:48:19 +00:00
first db <> api mapping add filter to test coverage action to ignore generated code like sqlc and swagger docs
149 lines
3.5 KiB
Go
149 lines
3.5 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
sqlc "github.com/MeshCore-Beacon/beacon-server/db/sqlc"
|
|
mockdb "github.com/MeshCore-Beacon/beacon-server/db/sqlc/mock"
|
|
"go.uber.org/mock/gomock"
|
|
)
|
|
|
|
func TestListIATAs(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mock := mockdb.NewMockQuerier(ctrl)
|
|
|
|
lat := 49.1967
|
|
lng := -123.1815
|
|
name := "Vancouver"
|
|
|
|
mock.EXPECT().
|
|
ListIATAs(gomock.Any()).
|
|
Return([]sqlc.IataCode{
|
|
{Iata: "YVR", DisplayName: &name, ApproxLat: &lat, ApproxLng: &lng},
|
|
}, nil)
|
|
|
|
store := &Store{q: mock}
|
|
iatas, err := store.ListIATAs(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if len(iatas) != 1 {
|
|
t.Fatalf("expected 1 iata, got %d", len(iatas))
|
|
}
|
|
if iatas[0].IATA != "YVR" {
|
|
t.Errorf("expected IATA YVR, got %s", iatas[0].IATA)
|
|
}
|
|
if *iatas[0].Lat != lat {
|
|
t.Errorf("expected Lat %f, got %f", lat, *iatas[0].Lat)
|
|
}
|
|
}
|
|
|
|
func TestGetIATA(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mock := mockdb.NewMockQuerier(ctrl)
|
|
|
|
lat := 49.1967
|
|
lng := -123.1815
|
|
name := "Vancouver"
|
|
|
|
mock.EXPECT().
|
|
GetIATA(gomock.Any(), "YVR").
|
|
Return(sqlc.IataCode{Iata: "YVR", DisplayName: &name, ApproxLat: &lat, ApproxLng: &lng}, nil)
|
|
|
|
store := &Store{q: mock}
|
|
iata, err := store.GetIATA(context.Background(), "YVR")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if iata.IATA != "YVR" {
|
|
t.Errorf("expected YVR, got %s", iata.IATA)
|
|
}
|
|
if *iata.Lng != lng {
|
|
t.Errorf("expected Lng %f, got %f", lng, *iata.Lng)
|
|
}
|
|
}
|
|
|
|
func TestGetRegion_WithZoomLevel(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mock := mockdb.NewMockQuerier(ctrl)
|
|
|
|
zoom := int32(10)
|
|
|
|
mock.EXPECT().
|
|
GetRegion(gomock.Any(), int32(1)).
|
|
Return(sqlc.GetRegionRow{
|
|
ID: 1,
|
|
Slug: "bc",
|
|
Name: "British Columbia",
|
|
ZoomLevel: &zoom,
|
|
}, nil)
|
|
|
|
mock.EXPECT().
|
|
GetRegionIATAs(gomock.Any(), int32(1)).
|
|
Return([]string{"YVR", "YYJ"}, nil)
|
|
|
|
store := &Store{q: mock}
|
|
region, err := store.GetRegion(context.Background(), 1)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if region.Slug != "bc" {
|
|
t.Errorf("expected slug bc, got %s", region.Slug)
|
|
}
|
|
if region.ZoomLevel == nil {
|
|
t.Fatal("expected ZoomLevel to be set")
|
|
}
|
|
if *region.ZoomLevel != 10 {
|
|
t.Errorf("expected ZoomLevel 10, got %d", *region.ZoomLevel)
|
|
}
|
|
if len(region.IATAs) != 2 {
|
|
t.Errorf("expected 2 IATAs, got %d", len(region.IATAs))
|
|
}
|
|
}
|
|
|
|
func TestGetRegion_IATAError(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mock := mockdb.NewMockQuerier(ctrl)
|
|
|
|
mock.EXPECT().
|
|
GetRegion(gomock.Any(), int32(1)).
|
|
Return(sqlc.GetRegionRow{ID: 1, Slug: "bc", Name: "British Columbia"}, nil)
|
|
|
|
mock.EXPECT().
|
|
GetRegionIATAs(gomock.Any(), int32(1)).
|
|
Return(nil, errors.New("db error"))
|
|
|
|
store := &Store{q: mock}
|
|
_, err := store.GetRegion(context.Background(), 1)
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
}
|
|
|
|
func TestGetRegionBySlug(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mock := mockdb.NewMockQuerier(ctrl)
|
|
|
|
mock.EXPECT().
|
|
GetRegionBySlug(gomock.Any(), "bc").
|
|
Return(sqlc.GetRegionBySlugRow{ID: 1, Slug: "bc", Name: "British Columbia"}, nil)
|
|
|
|
mock.EXPECT().
|
|
GetRegionIATAs(gomock.Any(), int32(1)).
|
|
Return([]string{"YVR"}, nil)
|
|
|
|
store := &Store{q: mock}
|
|
region, err := store.GetRegionBySlug(context.Background(), "bc")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if region.Slug != "bc" {
|
|
t.Errorf("expected slug bc, got %s", region.Slug)
|
|
}
|
|
if len(region.IATAs) != 1 {
|
|
t.Errorf("expected 1 IATA, got %d", len(region.IATAs))
|
|
}
|
|
}
|