package domain import "testing" func TestDocumentIsStickerSetMaterialAcceptsUploadedFormats(t *testing.T) { tests := []struct { name string doc Document want bool wantMime string }{ { name: "existing sticker", doc: Document{ID: 1, AccessHash: 11, Size: MaxStickerMaterialDocumentSize + 1, Attributes: []DocumentAttribute{{Kind: DocAttrSticker}}}, want: true, wantMime: "", }, { name: "tgs mime", doc: Document{ID: 2, AccessHash: 22, MimeType: "application/x-tgsticker", Size: 4096}, want: true, wantMime: "application/x-tgsticker", }, { name: "webp extension", doc: Document{ID: 3, AccessHash: 33, MimeType: "application/octet-stream", Size: 4096, Attributes: []DocumentAttribute{{Kind: DocAttrFilename, FileName: "sticker.WEBP"}}}, want: true, wantMime: "image/webp", }, { name: "lottie json mime", doc: Document{ID: 31, AccessHash: 331, MimeType: "application/lottie+json", Size: 4096}, want: true, wantMime: "application/json", }, { name: "lottie json extension", doc: Document{ID: 32, AccessHash: 332, MimeType: "application/octet-stream", Size: 4096, Attributes: []DocumentAttribute{{Kind: DocAttrFilename, FileName: "wave.JSON"}}}, want: true, wantMime: "application/json", }, { name: "mp4 mime", doc: Document{ID: 4, AccessHash: 44, MimeType: "video/mp4", Size: 4096, Attributes: []DocumentAttribute{{Kind: DocAttrVideo, W: 512, H: 512, Duration: 1}}}, want: true, wantMime: "video/mp4", }, { name: "mp4 without video attribute", doc: Document{ID: 40, AccessHash: 440, MimeType: "video/mp4", Size: 4096}, wantMime: "video/mp4", }, { name: "arbitrary file", doc: Document{ID: 5, AccessHash: 55, MimeType: "application/pdf", Size: 4096}, wantMime: "application/pdf", }, { name: "oversized upload", doc: Document{ID: 6, AccessHash: 66, MimeType: "image/webp", Size: MaxStickerMaterialDocumentSize + 1}, wantMime: "image/webp", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := tt.doc.IsStickerSetMaterial(); got != tt.want { t.Fatalf("IsStickerSetMaterial() = %v, want %v", got, tt.want) } if got := tt.doc.StickerSetMaterialMime(); got != tt.wantMime { t.Fatalf("StickerSetMaterialMime() = %q, want %q", got, tt.wantMime) } }) } }