This commit is contained in:
2026-09-17 13:32:05 +07:00
parent 5ba640bfe4
commit dfa4aa9d8b
9 changed files with 19 additions and 35 deletions
+10 -6
View File
@@ -3,6 +3,7 @@ package team_qr_pdf
import (
"bytes"
_ "embed"
"errors"
"fmt"
"net/url"
"strings"
@@ -11,16 +12,19 @@ import (
"github.com/skip2/go-qrcode"
)
var ErrNoCards = errors.New("нет карточек")
type Card struct {
Name string
URL string
}
//go:embed fonts/DejaVuSansCondensed.ttf
var font []byte
type generator struct{}
func NewGenerator() IGenerator { return &generator{} }
func (g *generator) Generate(cards []Card) ([]byte, error) {
func Generate(cards []Card) ([]byte, error) {
if len(cards) == 0 {
return nil, ErrNoTeams
return nil, ErrNoCards
}
pdf := fpdf.New("P", "mm", "A4", "")
pdf.SetAutoPageBreak(false, 0)
@@ -10,8 +10,7 @@ import (
)
func TestGenerate(t *testing.T) {
g := NewGenerator()
if _, err := g.Generate(nil); !errors.Is(err, ErrNoTeams) {
if _, err := Generate(nil); !errors.Is(err, ErrNoCards) {
t.Fatalf("empty game: %v", err)
}
for _, count := range []int{1, 12, 13, 24} {
@@ -24,7 +23,7 @@ func TestGenerate(t *testing.T) {
}
}
cards[0].Name = strings.Repeat("Ш", 255)
data, err := g.Generate(cards)
data, err := Generate(cards)
if err != nil {
t.Fatal(err)
}
@@ -48,7 +47,7 @@ func TestGenerate(t *testing.T) {
{Name: "Команда", URL: "https://example.org/" + strings.Repeat("x", 5000)},
{Name: "Команда 🔍", URL: "https://example.org"},
} {
if _, err := g.Generate([]Card{card}); err == nil {
if _, err := Generate([]Card{card}); err == nil {
t.Fatal("expected error for unsupported input")
}
}
-14
View File
@@ -1,14 +0,0 @@
package team_qr_pdf
import "errors"
var ErrNoTeams = errors.New("в игре нет команд")
type Card struct {
Name string
URL string
}
type IGenerator interface {
Generate(cards []Card) ([]byte, error)
}