| 
									
										
										
										
											2024-09-13 17:45:06 -05:00
										 |  |  | package lenore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"codeberg.org/danjones000/lenore/config" | 
					
						
							|  |  |  | 	"codeberg.org/danjones000/lenore/internal/testmocks" | 
					
						
							|  |  |  | 	vocab "github.com/go-ap/activitypub" | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/assert" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestEmptyBaseURL(t *testing.T) { | 
					
						
							|  |  |  | 	c := config.Config{} | 
					
						
							|  |  |  | 	a, er := NewApp("0.0.0", c, testmocks.GetStore()) | 
					
						
							|  |  |  | 	assert.Nil(t, a) | 
					
						
							| 
									
										
										
										
											2024-09-14 17:34:47 -05:00
										 |  |  | 	assert.EqualError(t, er, "missing BaseURL") | 
					
						
							| 
									
										
										
										
											2024-09-13 17:45:06 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestDefaultEnvironment(t *testing.T) { | 
					
						
							|  |  |  | 	c := config.Config{BaseURL: "http://localhost:1234/"} | 
					
						
							|  |  |  | 	a, er := NewApp("0.0.0", c, testmocks.GetStore()) | 
					
						
							|  |  |  | 	assert.NoError(t, er) | 
					
						
							|  |  |  | 	if assert.NotNil(t, a) { | 
					
						
							|  |  |  | 		assert.Equal(t, config.DEV, a.Environment()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestGivenEnvironment(t *testing.T) { | 
					
						
							|  |  |  | 	cases := [...]struct { | 
					
						
							|  |  |  | 		given config.Env | 
					
						
							|  |  |  | 		exp   config.Env | 
					
						
							|  |  |  | 	}{ | 
					
						
							|  |  |  | 		{config.DEV, config.DEV}, | 
					
						
							|  |  |  | 		{config.PROD, config.PROD}, | 
					
						
							|  |  |  | 		{config.QA, config.QA}, | 
					
						
							|  |  |  | 		{config.Env("foo"), config.DEV}, | 
					
						
							|  |  |  | 		{config.Env("✨"), config.DEV}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for _, c := range cases { | 
					
						
							|  |  |  | 		t.Run(string(c.given), func(t *testing.T) { | 
					
						
							|  |  |  | 			conf := config.Config{BaseURL: "http://localhost:1234/", Env: c.given} | 
					
						
							|  |  |  | 			a, er := NewApp("0.0.0", conf, testmocks.GetStore()) | 
					
						
							|  |  |  | 			assert.NoError(t, er) | 
					
						
							|  |  |  | 			if assert.NotNil(t, a) { | 
					
						
							|  |  |  | 				assert.Equal(t, conf, a.Config()) | 
					
						
							|  |  |  | 				assert.Equal(t, c.exp, a.Environment()) | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestService(t *testing.T) { | 
					
						
							|  |  |  | 	base := "http://localhost:1234/" | 
					
						
							|  |  |  | 	conf := config.Config{BaseURL: base} | 
					
						
							|  |  |  | 	a, er := NewApp("0.0.0.0", conf, testmocks.GetStore()) | 
					
						
							|  |  |  | 	assert.NoError(t, er) | 
					
						
							|  |  |  | 	if assert.NotNil(t, a) { | 
					
						
							|  |  |  | 		assert.Equal(t, vocab.IRI(base), a.ServiceIRI()) | 
					
						
							|  |  |  | 		assert.Equal(t, vocab.IRI(base), a.Service().ID) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestStrings(t *testing.T) { | 
					
						
							|  |  |  | 	cases := [...]struct { | 
					
						
							|  |  |  | 		given string | 
					
						
							|  |  |  | 		exp   string | 
					
						
							|  |  |  | 	}{ | 
					
						
							|  |  |  | 		{"", "Lenore"}, | 
					
						
							|  |  |  | 		{"Lenore", "Lenore"}, | 
					
						
							|  |  |  | 		{"Danny Ray", "Danny Ray"}, | 
					
						
							|  |  |  | 		{"✨👹", "✨👹"}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for _, c := range cases { | 
					
						
							|  |  |  | 		t.Run(c.given, func(t *testing.T) { | 
					
						
							|  |  |  | 			conf := config.Config{BaseURL: "http://localhost:1234/", Name: c.given} | 
					
						
							|  |  |  | 			expStr := fmt.Sprintf("%s (%s)", c.exp, "0.0.0.0") | 
					
						
							|  |  |  | 			a, er := NewApp("0.0.0.0", conf, testmocks.GetStore()) | 
					
						
							|  |  |  | 			assert.NoError(t, er) | 
					
						
							|  |  |  | 			if assert.NotNil(t, a) { | 
					
						
							|  |  |  | 				assert.Equal(t, c.exp, a.Name()) | 
					
						
							|  |  |  | 				assert.Equal(t, "0.0.0.0", a.Version()) | 
					
						
							|  |  |  | 				assert.Equal(t, expStr, a.String()) | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |