package formula

import (
	"reflect"
	"testing"
)

func TestCollectExpressionIdentifiersReturnsResourceRootsOnly(t *testing.T) {
	got, err := CollectExpressionIdentifiers(`IF({!FirstFormula} > 0, TEXT({!LookupOutput.Amount}), {!SecondFormula})`)
	if err != nil {
		t.Fatalf("CollectExpressionIdentifiers: %v", err)
	}
	want := []string{"FirstFormula", "LookupOutput", "SecondFormula"}
	if !reflect.DeepEqual(got, want) {
		t.Fatalf("CollectExpressionIdentifiers = %#v, want %#v", got, want)
	}
}

func TestCollectExpressionIdentifiersDoesNotTreatMemberAsResource(t *testing.T) {
	got, err := CollectExpressionIdentifiers(`$Record.Parent__r.Name & NameFormula`)
	if err != nil {
		t.Fatalf("CollectExpressionIdentifiers: %v", err)
	}
	want := []string{"__Record", "NameFormula"}
	if !reflect.DeepEqual(got, want) {
		t.Fatalf("CollectExpressionIdentifiers = %#v, want %#v", got, want)
	}
}
