factories

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2026 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Overview

Package factories provides test data factories for consistent test data generation

Package factories provides actor factory for test data generation

Package factories provides test data factories for consistent test data generation

Package factories provides timeline factory for test data generation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithDefaults

func WithDefaults(values map[string]interface{}, defaults map[string]interface{}) map[string]interface{}

WithDefaults applies default values to a map of options

Types

type ActivityBuilder

type ActivityBuilder struct {
	*BaseBuilder
	// contains filtered or unexported fields
}

ActivityBuilder builds ActivityPub activities using the builder pattern

func NewActivityBuilder

func NewActivityBuilder(domain string) *ActivityBuilder

NewActivityBuilder creates a new activity builder

func (*ActivityBuilder) Build

func (b *ActivityBuilder) Build() *activitypub.Activity

Build creates the activity with defaults for any unset values

func (*ActivityBuilder) BuildAnnounce

func (b *ActivityBuilder) BuildAnnounce(actor, object string) *activitypub.Activity

BuildAnnounce creates an Announce (reblog) activity

func (*ActivityBuilder) BuildCreate

func (b *ActivityBuilder) BuildCreate(actor string, note *activitypub.Note) *activitypub.Activity

BuildCreate creates a Create activity with a Note object

func (*ActivityBuilder) BuildDelete

func (b *ActivityBuilder) BuildDelete(actor, object string) *activitypub.Activity

BuildDelete creates a Delete activity

func (*ActivityBuilder) BuildFollow

func (b *ActivityBuilder) BuildFollow(follower, target string) *activitypub.Activity

BuildFollow creates a Follow activity with fluent interface

func (*ActivityBuilder) BuildLike

func (b *ActivityBuilder) BuildLike(actor, object string) *activitypub.Activity

BuildLike creates a Like activity

func (*ActivityBuilder) BuildUndo

func (b *ActivityBuilder) BuildUndo(actor string, activity *activitypub.Activity) *activitypub.Activity

BuildUndo creates an Undo activity

func (*ActivityBuilder) BuildUpdate

func (b *ActivityBuilder) BuildUpdate(actor string, object interface{}) *activitypub.Activity

BuildUpdate creates an Update activity

func (*ActivityBuilder) Reset

func (b *ActivityBuilder) Reset() *ActivityBuilder

Reset resets the builder to create a new activity

func (*ActivityBuilder) WithActor

func (b *ActivityBuilder) WithActor(actor string) *ActivityBuilder

WithActor sets the actor

func (*ActivityBuilder) WithCC

func (b *ActivityBuilder) WithCC(recipients ...string) *ActivityBuilder

WithCC adds recipients to the "cc" field

func (*ActivityBuilder) WithID

func (b *ActivityBuilder) WithID(id string) *ActivityBuilder

WithID sets a custom ID

func (*ActivityBuilder) WithObject

func (b *ActivityBuilder) WithObject(object interface{}) *ActivityBuilder

WithObject sets the object

func (*ActivityBuilder) WithPublished

func (b *ActivityBuilder) WithPublished(published time.Time) *ActivityBuilder

WithPublished sets the published timestamp

func (*ActivityBuilder) WithTarget

func (b *ActivityBuilder) WithTarget(target string) *ActivityBuilder

WithTarget sets the target

func (*ActivityBuilder) WithTo

func (b *ActivityBuilder) WithTo(recipients ...string) *ActivityBuilder

WithTo adds recipients to the "to" field

func (*ActivityBuilder) WithType

func (b *ActivityBuilder) WithType(activityType string) *ActivityBuilder

WithType sets the activity type

type ActivityFactory

type ActivityFactory struct {
	// contains filtered or unexported fields
}

ActivityFactory creates ActivityPub activities for testing

func NewActivityFactory

func NewActivityFactory(domain string) *ActivityFactory

NewActivityFactory creates a new activity factory

func (*ActivityFactory) CreateActivity

func (f *ActivityFactory) CreateActivity(opts ActivityOptions) *activitypub.Activity

CreateActivity creates a basic activity with default values

func (*ActivityFactory) CreateAnnounce

func (f *ActivityFactory) CreateAnnounce(actor string, object interface{}, opts ...ActivityOptions) *activitypub.Activity

CreateAnnounce creates an Announce (boost/reblog) activity

func (*ActivityFactory) CreateBatch

func (f *ActivityFactory) CreateBatch(activityType string, count int, actor string) []*activitypub.Activity

CreateBatch creates multiple activities of the same type

func (*ActivityFactory) CreateConversation

func (f *ActivityFactory) CreateConversation(participants []string, messages []string) []*activitypub.Activity

CreateConversation creates a back-and-forth conversation

func (*ActivityFactory) CreateDelete

func (f *ActivityFactory) CreateDelete(actor string, object interface{}, opts ...ActivityOptions) *activitypub.Activity

CreateDelete creates a Delete activity

func (*ActivityFactory) CreateFollow

func (f *ActivityFactory) CreateFollow(follower, target string, opts ...ActivityOptions) *activitypub.Activity

CreateFollow creates a Follow activity

func (*ActivityFactory) CreateLike

func (f *ActivityFactory) CreateLike(actor string, object interface{}, opts ...ActivityOptions) *activitypub.Activity

CreateLike creates a Like activity

func (*ActivityFactory) CreateNote

func (f *ActivityFactory) CreateNote(content string, actorID string, opts ...NoteOptions) *activitypub.Note

CreateNote creates a note object for activities

func (*ActivityFactory) CreateThread

func (f *ActivityFactory) CreateThread(originalActor string, originalContent string, replies []ThreadReply) []*activitypub.Activity

CreateThread creates a thread of activities (original post + replies)

func (*ActivityFactory) CreateUpdate

func (f *ActivityFactory) CreateUpdate(actor string, object interface{}, opts ...ActivityOptions) *activitypub.Activity

CreateUpdate creates an Update activity

func (*ActivityFactory) CreateWithMention

func (f *ActivityFactory) CreateWithMention(content string, actor string, mentions []string) *activitypub.Activity

CreateWithMention creates a note with mentions

func (*ActivityFactory) CreateWithTags

func (f *ActivityFactory) CreateWithTags(content string, actor string, hashtags []string) *activitypub.Activity

CreateWithTags creates a note with hashtags

func (*ActivityFactory) GetSequence

func (f *ActivityFactory) GetSequence() int

GetSequence returns the current sequence number

func (*ActivityFactory) Reset

func (f *ActivityFactory) Reset()

Reset resets the factory sequence counter

func (*ActivityFactory) SetBaseTime

func (f *ActivityFactory) SetBaseTime(t time.Time)

SetBaseTime sets the base time for generated activities

type ActivityOptions

type ActivityOptions struct {
	Type      string
	Actor     string
	Object    interface{}
	Target    string
	Published *time.Time
	ID        string
}

ActivityOptions configures activity creation

type ActorBuilder

type ActorBuilder struct {
	*BaseBuilder
	// contains filtered or unexported fields
}

ActorBuilder builds ActivityPub Actor objects using the builder pattern

func NewActorBuilder

func NewActorBuilder(domain string) *ActorBuilder

NewActorBuilder creates a new actor builder

func (*ActorBuilder) AsApplication

func (b *ActorBuilder) AsApplication() *ActorBuilder

AsApplication marks the actor as an application

func (*ActorBuilder) AsBot

func (b *ActorBuilder) AsBot() *ActorBuilder

AsBot marks the actor as a bot

func (*ActorBuilder) AsGroup

func (b *ActorBuilder) AsGroup() *ActorBuilder

AsGroup marks the actor as a group

func (*ActorBuilder) Build

func (b *ActorBuilder) Build() *activitypub.Actor

Build creates the actor with defaults for any unset values

func (*ActorBuilder) BuildBot

func (b *ActorBuilder) BuildBot(username string) *activitypub.Actor

BuildBot creates a bot actor

func (*ActorBuilder) BuildLocal

func (b *ActorBuilder) BuildLocal(username string) *activitypub.Actor

BuildLocal creates a local actor

func (*ActorBuilder) BuildLocked

func (b *ActorBuilder) BuildLocked(username string) *activitypub.Actor

BuildLocked creates an actor with locked account (manual follower approval)

func (*ActorBuilder) BuildRemote

func (b *ActorBuilder) BuildRemote(username, remoteDomain string) *activitypub.Actor

BuildRemote creates a remote actor

func (*ActorBuilder) Reset

func (b *ActorBuilder) Reset() *ActorBuilder

Reset resets the builder to create a new actor

func (*ActorBuilder) WithAttachment

func (b *ActorBuilder) WithAttachment(name, value string) *ActorBuilder

WithAttachment adds a profile field attachment

func (*ActorBuilder) WithDiscoverable

func (b *ActorBuilder) WithDiscoverable(discoverable bool) *ActorBuilder

WithDiscoverable sets whether the actor is discoverable

func (*ActorBuilder) WithDisplayName

func (b *ActorBuilder) WithDisplayName(name string) *ActorBuilder

WithDisplayName sets the actor's display name

func (*ActorBuilder) WithEndpoints

func (b *ActorBuilder) WithEndpoints(sharedInbox string) *ActorBuilder

WithEndpoints sets the actor's endpoints

func (*ActorBuilder) WithFollowers

func (b *ActorBuilder) WithFollowers(followers string) *ActorBuilder

WithFollowers sets the followers URL

func (*ActorBuilder) WithFollowing

func (b *ActorBuilder) WithFollowing(following string) *ActorBuilder

WithFollowing sets the following URL

func (*ActorBuilder) WithID

func (b *ActorBuilder) WithID(id string) *ActorBuilder

WithID sets a custom ID

func (*ActorBuilder) WithIcon

func (b *ActorBuilder) WithIcon(url, mediaType string) *ActorBuilder

WithIcon sets the actor's avatar

func (*ActorBuilder) WithImage

func (b *ActorBuilder) WithImage(url, mediaType string) *ActorBuilder

WithImage sets the actor's header image

func (*ActorBuilder) WithInbox

func (b *ActorBuilder) WithInbox(inbox string) *ActorBuilder

WithInbox sets the inbox URL

func (*ActorBuilder) WithManuallyApprovesFollowers

func (b *ActorBuilder) WithManuallyApprovesFollowers(approves bool) *ActorBuilder

WithManuallyApprovesFollowers sets whether the actor manually approves followers

func (*ActorBuilder) WithOutbox

func (b *ActorBuilder) WithOutbox(outbox string) *ActorBuilder

WithOutbox sets the outbox URL

func (*ActorBuilder) WithPublicKey

func (b *ActorBuilder) WithPublicKey(keyPEM string) *ActorBuilder

WithPublicKey sets the actor's public key

func (*ActorBuilder) WithPublished

func (b *ActorBuilder) WithPublished(published time.Time) *ActorBuilder

WithPublished sets when the actor was created

func (*ActorBuilder) WithSummary

func (b *ActorBuilder) WithSummary(summary string) *ActorBuilder

WithSummary sets the actor's bio/summary

func (*ActorBuilder) WithUsername

func (b *ActorBuilder) WithUsername(username string) *ActorBuilder

WithUsername sets the actor's username

type ActorFactory

type ActorFactory struct {
	// contains filtered or unexported fields
}

ActorFactory creates actors for testing

func NewActorFactory

func NewActorFactory(domain string) *ActorFactory

NewActorFactory creates a new actor factory

func (*ActorFactory) CreateActor

func (f *ActorFactory) CreateActor(opts ActorOptions) *activitypub.Actor

CreateActor creates a basic actor with default values

func (*ActorFactory) CreateActorBatch

func (f *ActorFactory) CreateActorBatch(count int, prefix string) []*activitypub.Actor

CreateActorBatch creates multiple actors for testing

func (*ActorFactory) CreateActorWithCustomFields

func (f *ActorFactory) CreateActorWithCustomFields(username string, fields map[string]string) *activitypub.Actor

CreateActorWithCustomFields creates an actor with custom profile fields

func (*ActorFactory) CreateActorWithFollowers

func (f *ActorFactory) CreateActorWithFollowers(username string, followerCount int) (*activitypub.Actor, []*activitypub.Actor)

CreateActorWithFollowers creates an actor with a specified number of followers

func (*ActorFactory) CreateActorWithFollowing

func (f *ActorFactory) CreateActorWithFollowing(username string, followingCount int) (*activitypub.Actor, []*activitypub.Actor)

CreateActorWithFollowing creates an actor following a specified number of other actors

func (*ActorFactory) CreateActorWithProfile

func (f *ActorFactory) CreateActorWithProfile(username string) *activitypub.Actor

CreateActorWithProfile creates an actor with complete profile information

func (*ActorFactory) CreateBotActor

func (f *ActorFactory) CreateBotActor(username string) *activitypub.Actor

CreateBotActor creates a bot actor

func (*ActorFactory) CreateLockedActor

func (f *ActorFactory) CreateLockedActor(username string) *activitypub.Actor

CreateLockedActor creates a locked (private) actor

func (*ActorFactory) CreateRemoteActor

func (f *ActorFactory) CreateRemoteActor(username, remoteDomain string) *activitypub.Actor

CreateRemoteActor creates an actor from a remote instance

func (*ActorFactory) CreateUserData

func (f *ActorFactory) CreateUserData(opts ActorOptions) map[string]interface{}

CreateUserData creates user data for testing (returns a map to avoid type issues)

func (*ActorFactory) CreateUserDataBatch

func (f *ActorFactory) CreateUserDataBatch(count int, prefix string) []map[string]interface{}

CreateUserDataBatch creates multiple users for testing (returns maps to avoid type issues)

func (*ActorFactory) GetSequence

func (f *ActorFactory) GetSequence() int

GetSequence returns the current sequence number

func (*ActorFactory) Reset

func (f *ActorFactory) Reset()

Reset resets the factory sequence counter

func (*ActorFactory) SetDomain

func (f *ActorFactory) SetDomain(domain string)

SetDomain changes the domain used for actor IDs

type ActorOptions

type ActorOptions struct {
	Username     string
	DisplayName  string
	Summary      string
	PublicKey    string
	PrivateKey   string
	Locked       bool
	Bot          bool
	Discoverable bool
	Avatar       *activitypub.Image
	Header       *activitypub.Image
	Fields       []activitypub.Attachment
}

ActorOptions configures actor creation

type BaseBuilder

type BaseBuilder struct {
	// contains filtered or unexported fields
}

BaseBuilder provides common functionality for all builders

func NewBaseBuilder

func NewBaseBuilder(domain string) *BaseBuilder

NewBaseBuilder creates a new base builder

func (*BaseBuilder) GenerateID

func (b *BaseBuilder) GenerateID(prefix string) string

GenerateID generates a unique ID with the given prefix

func (*BaseBuilder) GenerateTimestamp

func (b *BaseBuilder) GenerateTimestamp() time.Time

GenerateTimestamp generates a timestamp based on sequence

func (*BaseBuilder) NextSequence

func (b *BaseBuilder) NextSequence() int

NextSequence increments and returns the sequence number

type Builder

type Builder[T any] interface {
	Build() T
	Reset() Builder[T]
}

Builder is a generic builder interface for test data

type FluentSetter

type FluentSetter[T any] struct {
	// contains filtered or unexported fields
}

FluentSetter provides a fluent interface for setting values

func NewFluentSetter

func NewFluentSetter[T any](target *T) *FluentSetter[T]

NewFluentSetter creates a new fluent setter

func (*FluentSetter[T]) Build

func (f *FluentSetter[T]) Build() *T

Build returns the target object

func (*FluentSetter[T]) Set

func (f *FluentSetter[T]) Set(setter func(*T)) *FluentSetter[T]

Set sets a value and returns the setter for chaining

type NoteBuilder

type NoteBuilder struct {
	*BaseBuilder
	// contains filtered or unexported fields
}

NoteBuilder builds ActivityPub Note objects using the builder pattern

func NewNoteBuilder

func NewNoteBuilder(domain string) *NoteBuilder

NewNoteBuilder creates a new note builder

func (*NoteBuilder) AsDirect

func (b *NoteBuilder) AsDirect(recipients ...string) *NoteBuilder

AsDirect makes the note a direct message

func (*NoteBuilder) AsFollowersOnly

func (b *NoteBuilder) AsFollowersOnly(actor string) *NoteBuilder

AsFollowersOnly makes the note followers-only

func (*NoteBuilder) AsPublic

func (b *NoteBuilder) AsPublic() *NoteBuilder

AsPublic makes the note public

func (*NoteBuilder) Build

func (b *NoteBuilder) Build() *activitypub.Note

Build creates the note with defaults for any unset values

func (*NoteBuilder) BuildDirectMessage

func (b *NoteBuilder) BuildDirectMessage(content, from string, to ...string) *activitypub.Note

BuildDirectMessage creates a direct message note

func (*NoteBuilder) BuildReply

func (b *NoteBuilder) BuildReply(content, inReplyTo, author string) *activitypub.Note

BuildReply creates a reply note

func (*NoteBuilder) BuildSensitiveNote

func (b *NoteBuilder) BuildSensitiveNote(content, summary, author string) *activitypub.Note

BuildSensitiveNote creates a note with content warning

func (*NoteBuilder) Reset

func (b *NoteBuilder) Reset() *NoteBuilder

Reset resets the builder to create a new note

func (*NoteBuilder) WithAttachment

func (b *NoteBuilder) WithAttachment(attachment activitypub.Attachment) *NoteBuilder

WithAttachment adds an attachment

func (*NoteBuilder) WithAttributedTo

func (b *NoteBuilder) WithAttributedTo(actor string) *NoteBuilder

WithAttributedTo sets the author

func (*NoteBuilder) WithCC

func (b *NoteBuilder) WithCC(recipients ...string) *NoteBuilder

WithCC adds recipients to the "cc" field

func (*NoteBuilder) WithContent

func (b *NoteBuilder) WithContent(content string) *NoteBuilder

WithContent sets the note content

func (*NoteBuilder) WithHashtag

func (b *NoteBuilder) WithHashtag(name string) *NoteBuilder

WithHashtag adds a hashtag

func (*NoteBuilder) WithID

func (b *NoteBuilder) WithID(id string) *NoteBuilder

WithID sets a custom ID

func (*NoteBuilder) WithImageAttachment

func (b *NoteBuilder) WithImageAttachment(url, mediaType string) *NoteBuilder

WithImageAttachment adds an image attachment

func (*NoteBuilder) WithInReplyTo

func (b *NoteBuilder) WithInReplyTo(replyTo string) *NoteBuilder

WithInReplyTo sets the reply target

func (*NoteBuilder) WithMention

func (b *NoteBuilder) WithMention(name, href string) *NoteBuilder

WithMention adds a mention tag

func (*NoteBuilder) WithPublished

func (b *NoteBuilder) WithPublished(published time.Time) *NoteBuilder

WithPublished sets the published timestamp

func (*NoteBuilder) WithSensitive

func (b *NoteBuilder) WithSensitive(sensitive bool) *NoteBuilder

WithSensitive sets the sensitive flag

func (*NoteBuilder) WithSummary

func (b *NoteBuilder) WithSummary(summary string) *NoteBuilder

WithSummary sets the content warning/summary

func (*NoteBuilder) WithTag

func (b *NoteBuilder) WithTag(tag activitypub.Tag) *NoteBuilder

WithTag adds a tag (mention, hashtag, etc.)

func (*NoteBuilder) WithTo

func (b *NoteBuilder) WithTo(recipients ...string) *NoteBuilder

WithTo adds recipients to the "to" field

type NoteOptions

type NoteOptions struct {
	ID          string
	InReplyTo   string
	Tags        []activitypub.Tag
	Attachments []activitypub.Attachment
	Published   *time.Time
}

NoteOptions configures note creation

type ThreadReply

type ThreadReply struct {
	Actor   string
	Content string
}

ThreadReply represents a reply in a thread

type TimelineBuilder

type TimelineBuilder struct {
	*BaseBuilder
	// contains filtered or unexported fields
}

TimelineBuilder builds timeline test data using the builder pattern

func NewTimelineBuilder

func NewTimelineBuilder(domain string) *TimelineBuilder

NewTimelineBuilder creates a new timeline builder

func (*TimelineBuilder) Build

func (b *TimelineBuilder) Build() *TimelineData

Build creates the timeline with defaults for any unset values

func (*TimelineBuilder) BuildConversationTimeline

func (b *TimelineBuilder) BuildConversationTimeline(username string) *TimelineData

BuildConversationTimeline creates a timeline with conversation threads

func (*TimelineBuilder) BuildEmptyTimeline

func (b *TimelineBuilder) BuildEmptyTimeline(username string) *TimelineData

BuildEmptyTimeline creates an empty timeline

func (*TimelineBuilder) BuildHighVolumeTimeline

func (b *TimelineBuilder) BuildHighVolumeTimeline(username string) *TimelineData

BuildHighVolumeTimeline creates a high volume timeline for performance testing

func (*TimelineBuilder) BuildMixedTimeline

func (b *TimelineBuilder) BuildMixedTimeline(username string) *TimelineData

BuildMixedTimeline creates a timeline with mixed content

func (*TimelineBuilder) BuildSimpleTimeline

func (b *TimelineBuilder) BuildSimpleTimeline(username string) *TimelineData

BuildSimpleTimeline creates a simple timeline with basic posts

func (*TimelineBuilder) Reset

func (b *TimelineBuilder) Reset() *TimelineBuilder

Reset resets the builder to create a new timeline

func (*TimelineBuilder) WithBoosts

func (b *TimelineBuilder) WithBoosts(count int) *TimelineBuilder

WithBoosts adds boost activities

func (*TimelineBuilder) WithFollowers

func (b *TimelineBuilder) WithFollowers(count int) *TimelineBuilder

WithFollowers adds followers for the primary user

func (*TimelineBuilder) WithFollowing

func (b *TimelineBuilder) WithFollowing(count int) *TimelineBuilder

WithFollowing adds users that the primary user follows

func (*TimelineBuilder) WithLikes

func (b *TimelineBuilder) WithLikes(count int) *TimelineBuilder

WithLikes adds like activities

func (*TimelineBuilder) WithPosts

func (b *TimelineBuilder) WithPosts(count int) *TimelineBuilder

WithPosts adds posts from followed users

func (*TimelineBuilder) WithReplies

func (b *TimelineBuilder) WithReplies(count int) *TimelineBuilder

WithReplies adds reply activities

func (*TimelineBuilder) WithScenario

func (b *TimelineBuilder) WithScenario(scenario TimelineScenario) *TimelineBuilder

WithScenario sets the timeline scenario type

func (*TimelineBuilder) WithUser

func (b *TimelineBuilder) WithUser(username string) *TimelineBuilder

WithUser sets the primary user for the timeline

type TimelineData

type TimelineData struct {
	User       *activitypub.Actor
	Following  []*activitypub.Actor
	Followers  []*activitypub.Actor
	Activities []*activitypub.Activity
	Scenario   TimelineScenario
}

TimelineData represents a complete timeline setup for testing

type TimelineFactory

type TimelineFactory struct {
	// contains filtered or unexported fields
}

TimelineFactory creates timeline data for testing

func NewTimelineFactory

func NewTimelineFactory(domain string) *TimelineFactory

NewTimelineFactory creates a new timeline factory

func (*TimelineFactory) CreateCustomTimeline

func (f *TimelineFactory) CreateCustomTimeline(username string, followingCount int, postsPerUser int) *TimelineData

CreateCustomTimeline allows creating a timeline with specific parameters

func (*TimelineFactory) CreateNotificationData

func (f *TimelineFactory) CreateNotificationData(username string, count int) []map[string]interface{}

CreateNotificationData creates notification data for testing (returns maps to avoid type issues)

func (*TimelineFactory) CreateTimelineScenario

func (f *TimelineFactory) CreateTimelineScenario(username string, scenario TimelineScenario) *TimelineData

CreateTimelineScenario creates a complete timeline scenario

func (*TimelineFactory) CreateTimelineWithMedia

func (f *TimelineFactory) CreateTimelineWithMedia(username string) *TimelineData

CreateTimelineWithMedia creates a timeline that includes media attachments

func (*TimelineFactory) GetSequence

func (f *TimelineFactory) GetSequence() int

GetSequence returns the current sequence number

func (*TimelineFactory) Reset

func (f *TimelineFactory) Reset()

Reset resets all internal factories

type TimelineScenario

type TimelineScenario string

TimelineScenario represents different timeline scenarios for testing

const (
	// EmptyTimeline has no posts
	EmptyTimeline TimelineScenario = "empty"
	// SimpleTimeline has basic posts from followed users
	SimpleTimeline TimelineScenario = "simple"
	// MixedTimeline has posts, replies, boosts, and likes
	MixedTimeline TimelineScenario = "mixed"
	// HighVolumeTimeline has many posts for performance testing
	HighVolumeTimeline TimelineScenario = "high_volume"
	// ConversationTimeline has threaded conversations
	ConversationTimeline TimelineScenario = "conversation"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL