package placement

import "testing"

func TestShouldTryCrawlerFirst_mixedWithBrowser(t *testing.T) {
	m := MemberContext{
		AllowsCrawler:    true,
		BrowserConnected: true,
		SearchSourceMode: SearchSourceMixed,
		AllowsThreadsAPI: true,
		ApiConnected:     true,
	}
	if !ShouldTryCrawlerFirst(m) {
		t.Fatal("mixed + browser should try crawler first to save API")
	}
}

func TestShouldTryCrawlerFirst_threadsOnly(t *testing.T) {
	m := MemberContext{
		AllowsCrawler:    true,
		BrowserConnected: true,
		SearchSourceMode: SearchSourceThreads,
	}
	if ShouldTryCrawlerFirst(m) {
		t.Fatal("threads-only must not use crawler first")
	}
}

func TestBuildMemberContextFormalModeKeepsCrawlerMode(t *testing.T) {
	prefs := ConnectionPrefsInput{
		DevMode:          false,
		SearchSourceMode: string(SearchSourceThreadsCrawler),
	}
	ctx := BuildMemberContext("t", "u", "acc", prefs, true, true, ResearchSettings{}, false, 10)
	if !ctx.AllowsCrawler {
		t.Fatal("threads_crawler in formal mode should allow crawler")
	}
	if !ctx.AllowsThreadsAPI {
		t.Fatal("threads_crawler should still allow API fallback")
	}
}
