add: some tests

This commit is contained in:
2026-03-24 23:16:22 -07:00
parent e7e23c1e8c
commit 98b14220e7
6 changed files with 159 additions and 3 deletions
+1
View File
@@ -1 +1,2 @@
node_modules/ node_modules/
bin/
+16 -3
View File
@@ -1,7 +1,18 @@
.PHONY: proto proto-deps help .PHONY: all build test proto proto-deps help
# Default target # Default target
all: help all: build
# Build Go project
build:
@echo "Building Go project..."
go build -o bin/webstory ./cmd/webstory || exit 1
@echo "Build complete!"
# Run tests
test:
@echo "Running tests..."
go test -v ./...
# Generate Go code from proto files using buf # Generate Go code from proto files using buf
proto: proto-deps proto: proto-deps
@@ -18,6 +29,8 @@ help:
@echo "Webstory Makefile" @echo "Webstory Makefile"
@echo "" @echo ""
@echo "Available targets:" @echo "Available targets:"
@echo " make all - Show this help message" @echo " make all - Show this help message (default)"
@echo " make build - Build Go project"
@echo " make test - Run tests"
@echo " make proto - Generate Go code from proto files" @echo " make proto - Generate Go code from proto files"
@echo " make proto-deps - Ensure buf is installed" @echo " make proto-deps - Ensure buf is installed"
+30
View File
@@ -0,0 +1,30 @@
package main
import (
"fmt"
"log"
"net"
"google.golang.org/grpc"
v1 "git.tipsy.codes/charles/webstory/pkg/api/webstory/v1"
"git.tipsy.codes/charles/webstory/pkg/webstory_service"
)
func main() {
lis, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
server := grpc.NewServer()
defer server.GracefulStop()
v1.RegisterWebstoryServiceServer(server, &webstory_service.WebstoryServiceServer{})
fmt.Println("Starting gRPC server on :50051")
if err := server.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
+6
View File
@@ -0,0 +1,6 @@
package errors
import "errors"
// ErrNotImplemented is returned when an RPC method has not been implemented yet.
var ErrNotImplemented = errors.New("method not implemented")
+92
View File
@@ -0,0 +1,92 @@
package webstory_service
import (
"context"
"google.golang.org/protobuf/types/known/emptypb"
v1 "git.tipsy.codes/charles/webstory/pkg/api/webstory/v1"
"git.tipsy.codes/charles/webstory/pkg/webstory_service/errors"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type WebstoryServiceServer struct {
v1.UnimplementedWebstoryServiceServer
}
// GetStory retrieves a story by its resource name.
func (s *WebstoryServiceServer) GetStory(ctx context.Context, req *v1.GetStoryRequest) (*v1.Story, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// ListStories returns a list of stories.
func (s *WebstoryServiceServer) ListStories(ctx context.Context, req *v1.ListStoriesRequest) (*v1.ListStoriesResponse, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// CreateStory creates a new story.
func (s *WebstoryServiceServer) CreateStory(ctx context.Context, req *v1.CreateStoryRequest) (*v1.Story, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// UpdateStory updates an existing story.
func (s *WebstoryServiceServer) UpdateStory(ctx context.Context, req *v1.UpdateStoryRequest) (*v1.Story, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// DeleteStory deletes a story.
func (s *WebstoryServiceServer) DeleteStory(ctx context.Context, req *v1.DeleteStoryRequest) (*emptypb.Empty, error) {
return &emptypb.Empty{}, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// GetScene retrieves a scene by its resource name.
func (s *WebstoryServiceServer) GetScene(ctx context.Context, req *v1.GetSceneRequest) (*v1.Scene, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// ListScenes returns a list of scenes for a story.
func (s *WebstoryServiceServer) ListScenes(ctx context.Context, req *v1.ListScenesRequest) (*v1.ListScenesResponse, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// CreateScene creates a new scene in a story.
func (s *WebstoryServiceServer) CreateScene(ctx context.Context, req *v1.CreateSceneRequest) (*v1.Scene, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// UpdateScene updates an existing scene.
func (s *WebstoryServiceServer) UpdateScene(ctx context.Context, req *v1.UpdateSceneRequest) (*v1.Scene, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// DeleteScene deletes a scene.
func (s *WebstoryServiceServer) DeleteScene(ctx context.Context, req *v1.DeleteSceneRequest) (*emptypb.Empty, error) {
return &emptypb.Empty{}, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// GetActor retrieves an actor by its resource name.
func (s *WebstoryServiceServer) GetActor(ctx context.Context, req *v1.GetActorRequest) (*v1.Actor, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// ListActors returns a list of actors for a story.
func (s *WebstoryServiceServer) ListActors(ctx context.Context, req *v1.ListActorsRequest) (*v1.ListActorsResponse, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// CreateActor creates a new actor in a story.
func (s *WebstoryServiceServer) CreateActor(ctx context.Context, req *v1.CreateActorRequest) (*v1.Actor, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// UpdateActor updates an existing actor.
func (s *WebstoryServiceServer) UpdateActor(ctx context.Context, req *v1.UpdateActorRequest) (*v1.Actor, error) {
return nil, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
// DeleteActor deletes an actor.
func (s *WebstoryServiceServer) DeleteActor(ctx context.Context, req *v1.DeleteActorRequest) (*emptypb.Empty, error) {
return &emptypb.Empty{}, status.Error(codes.Unimplemented, errors.ErrNotImplemented.Error())
}
@@ -0,0 +1,14 @@
package webstory_service
import (
"testing"
v1 "git.tipsy.codes/charles/webstory/pkg/api/webstory/v1"
)
// Test_WebstoryServiceServer_ImplementsInterface ensures that WebstoryServiceServer
// implements the v1.WebstoryServiceServer interface. This is a compile-time check
// that will fail if the interface changes or if methods are missing.
func Test_WebstoryServiceServer_ImplementsInterface(t *testing.T) {
var _ v1.WebstoryServiceServer = (*WebstoryServiceServer)(nil)
}