From 34532b32d56f95910557671bab4e4873df2d470e Mon Sep 17 00:00:00 2001 From: Charles Iliya Krempeaux Date: Tue, 13 Feb 2024 18:56:08 -0800 Subject: [PATCH] initial commits --- versions.go | 5 ++++ writeframe.go | 28 +++++++++++++++++++ writeframe_test.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 versions.go create mode 100644 writeframe.go create mode 100644 writeframe_test.go diff --git a/versions.go b/versions.go new file mode 100644 index 0000000..70869bb --- /dev/null +++ b/versions.go @@ -0,0 +1,5 @@ +package frameproto + +const ( + VersionVNext = "vNext" +) diff --git a/writeframe.go b/writeframe.go new file mode 100644 index 0000000..5624be2 --- /dev/null +++ b/writeframe.go @@ -0,0 +1,28 @@ +package frameproto + +import ( + "io" +) + +// WriteFrame will write the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame" name-value pair. +// +// For example, this call: +// +// var version string = "vNext" +// +// frameproto.WriteFrame(writer, version) +// +// Would write this HTML element: +// +// +// +// Note that this package provides some constants to use with WriteFrame. +// Namely: VersionVNext (for "vNext"). +// +// Which in code would be used as: +// +// frameproto.WriteFrame(writer, frameproto.VersionVNext) +func WriteFrame(writer io.Writer, version string) { + const property string = MetaPropertyFrame + writeMetaPropertyContent(writer, property, version) +} diff --git a/writeframe_test.go b/writeframe_test.go new file mode 100644 index 0000000..ed1d268 --- /dev/null +++ b/writeframe_test.go @@ -0,0 +1,68 @@ +package frameproto + +import ( + "testing" + + "strings" +) + +func TestWriteFrame(t *testing.T) { + + tests := []struct{ + Version string + Expected string + }{ + { + Version: "", + Expected: ``+"\n", + }, + + + + { + Version: "something", + Expected: ``+"\n", + }, + + + + { + Version: "Hello world! 🙂", + Expected: ``+"\n", + }, + + + + { + Version: "vNext", + Expected: ``+"\n", + }, + + + + { + Version: "2020-01-01", + Expected: ``+"\n", + }, + } + + for testNumber, test := range tests { + + var buffer strings.Builder + + WriteFrame(&buffer, test.Version) + + expected := test.Expected + actual := buffer.String() + + if expected != actual { + t.Errorf("For test #%d, the actual written meta-tag is not what was expected.", testNumber) + t.Logf("EXPECTED: %s", expected) + t.Logf("ACTUAL: %s", actual) + t.Logf("EXPECTED: %q", expected) + t.Logf("ACTUAL: %q", actual) + t.Logf("LABEL: %q", test.Version) + continue + } + } +}