relationship_test.go

 1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
 2//
 3// SPDX-License-Identifier: AGPL-3.0-or-later
 4
 5package lunatask_test
 6
 7import (
 8	"testing"
 9
10	lunatask "git.secluded.site/go-lunatask"
11)
12
13func TestParseRelationshipStrength(t *testing.T) {
14	t.Parallel()
15
16	tests := []struct {
17		name    string
18		input   string
19		want    lunatask.RelationshipStrength
20		wantErr bool
21	}{
22		{"family_lower", "family", lunatask.RelationshipFamily, false},
23		{"family_upper", "FAMILY", lunatask.RelationshipFamily, false},
24		{"family_mixed", "FaMiLy", lunatask.RelationshipFamily, false},
25		{"intimate_friends_lower", "intimate-friends", lunatask.RelationshipIntimateFriend, false},
26		{"intimate_friends_upper", "INTIMATE-FRIENDS", lunatask.RelationshipIntimateFriend, false},
27		{"close_friends_lower", "close-friends", lunatask.RelationshipCloseFriend, false},
28		{"close_friends_upper", "CLOSE-FRIENDS", lunatask.RelationshipCloseFriend, false},
29		{"casual_friends_lower", "casual-friends", lunatask.RelationshipCasualFriend, false},
30		{"casual_friends_upper", "CASUAL-FRIENDS", lunatask.RelationshipCasualFriend, false},
31		{"acquaintances_lower", "acquaintances", lunatask.RelationshipAcquaintance, false},
32		{"acquaintances_upper", "ACQUAINTANCES", lunatask.RelationshipAcquaintance, false},
33		{"business_contacts_lower", "business-contacts", lunatask.RelationshipBusiness, false},
34		{"business_contacts_upper", "BUSINESS-CONTACTS", lunatask.RelationshipBusiness, false},
35		{"almost_strangers_lower", "almost-strangers", lunatask.RelationshipAlmostStranger, false},
36		{"almost_strangers_upper", "ALMOST-STRANGERS", lunatask.RelationshipAlmostStranger, false},
37		{"almost_strangers_mixed", "Almost-Strangers", lunatask.RelationshipAlmostStranger, false},
38		{"invalid", "invalid", "", true},
39		{"empty", "", "", true},
40		{"numeric", "1", "", true},
41		{"typo", "famly", "", true},
42		{"no_hyphen", "closefriends", "", true},
43	}
44
45	for _, testCase := range tests {
46		t.Run(testCase.name, func(t *testing.T) {
47			t.Parallel()
48
49			got, err := lunatask.ParseRelationshipStrength(testCase.input)
50			if (err != nil) != testCase.wantErr {
51				t.Errorf("ParseRelationshipStrength(%q) error = %v, wantErr %v", testCase.input, err, testCase.wantErr)
52
53				return
54			}
55
56			if !testCase.wantErr && got != testCase.want {
57				t.Errorf("ParseRelationshipStrength(%q) = %q, want %q", testCase.input, got, testCase.want)
58			}
59		})
60	}
61}