package placement import "testing" func TestWithoutCrawlerStripsBrowserModes(t *testing.T) { if got := WithoutCrawler(SearchSourceMixed); got != SearchSourceThreadsBrave { t.Fatalf("mixed -> threads_brave, got %s", got) } if got := WithoutCrawler(SearchSourceCrawler); got != SearchSourceThreads { t.Fatalf("crawler -> threads, got %s", got) } } func TestMemberNeedsBraveKey(t *testing.T) { threadsOnly := MemberContext{AllowsBrave: false, AllowsThreadsAPI: true, SearchSourceMode: SearchSourceThreads} if MemberNeedsBraveKey(threadsOnly) { t.Fatal("threads-only should not require brave key") } braveOnly := MemberContext{AllowsBrave: true, SearchSourceMode: SearchSourceBrave} if !MemberNeedsBraveKey(braveOnly) { t.Fatal("brave-only should require brave key") } testPatrol := MemberContextForCrawlerOnly(MemberContext{AllowsBrave: true, SearchSourceMode: SearchSourceBrave}) if MemberNeedsBraveKey(testPatrol) { t.Fatal("test patrol crawler should not require brave key") } } func TestBuildMemberContextFormalModeRespectsSearchSource(t *testing.T) { prefs := ConnectionPrefsInput{ DevMode: false, SearchSourceMode: string(SearchSourceMixed), } ctx := BuildMemberContext("t", "u", "acc", prefs, true, false, ResearchSettings{}, false, 10) if !ctx.AllowsCrawler { t.Fatal("mixed mode should allow crawler when browser is connected") } if ctx.SearchSourceMode != SearchSourceMixed { t.Fatalf("expected mixed, got %s", ctx.SearchSourceMode) } }