generated from VLADIMIR/template
clear
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user