| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | package cache_test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | 	"github.com/stretchr/testify/suite" | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 	"github.com/superseriousbusiness/gotosocial/internal/cache" | 
					
						
							|  |  |  | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | 	"github.com/superseriousbusiness/gotosocial/testrig" | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | type StatusCacheTestSuite struct { | 
					
						
							|  |  |  | 	suite.Suite | 
					
						
							|  |  |  | 	data  map[string]*gtsmodel.Status | 
					
						
							|  |  |  | 	cache *cache.StatusCache | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | func (suite *StatusCacheTestSuite) SetupSuite() { | 
					
						
							|  |  |  | 	suite.data = testrig.NewTestStatuses() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | func (suite *StatusCacheTestSuite) SetupTest() { | 
					
						
							|  |  |  | 	suite.cache = cache.NewStatusCache() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | func (suite *StatusCacheTestSuite) TearDownTest() { | 
					
						
							|  |  |  | 	suite.data = nil | 
					
						
							|  |  |  | 	suite.cache = nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (suite *StatusCacheTestSuite) TestStatusCache() { | 
					
						
							|  |  |  | 	for _, status := range suite.data { | 
					
						
							|  |  |  | 		// Place in the cache | 
					
						
							|  |  |  | 		suite.cache.Put(status) | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	for _, status := range suite.data { | 
					
						
							|  |  |  | 		var ok bool | 
					
						
							|  |  |  | 		var check *gtsmodel.Status | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Check we can retrieve | 
					
						
							|  |  |  | 		check, ok = suite.cache.GetByID(status.ID) | 
					
						
							|  |  |  | 		if !ok && !statusIs(status, check) { | 
					
						
							|  |  |  | 			suite.Fail("Failed to fetch expected account with ID: %s", status.ID) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		check, ok = suite.cache.GetByURI(status.URI) | 
					
						
							|  |  |  | 		if status.URI != "" && !ok && !statusIs(status, check) { | 
					
						
							|  |  |  | 			suite.Fail("Failed to fetch expected account with URI: %s", status.URI) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		check, ok = suite.cache.GetByURL(status.URL) | 
					
						
							|  |  |  | 		if status.URL != "" && !ok && !statusIs(status, check) { | 
					
						
							|  |  |  | 			suite.Fail("Failed to fetch expected account with URL: %s", status.URL) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-01 10:08:21 +01:00
										 |  |  | func TestStatusCache(t *testing.T) { | 
					
						
							|  |  |  | 	suite.Run(t, &StatusCacheTestSuite{}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-29 15:41:41 +01:00
										 |  |  | func statusIs(status1, status2 *gtsmodel.Status) bool { | 
					
						
							|  |  |  | 	return status1.ID == status2.ID && status1.URI == status2.URI && status1.URL == status2.URL | 
					
						
							|  |  |  | } |