| 
									
										
										
										
											2022-07-07 05:19:05 +08:00
										 |  |  | package models_test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/pocketbase/pocketbase/models" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestBaseModelHasId(t *testing.T) { | 
					
						
							|  |  |  | 	scenarios := []struct { | 
					
						
							|  |  |  | 		model    models.BaseModel | 
					
						
							|  |  |  | 		expected bool | 
					
						
							|  |  |  | 	}{ | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			models.BaseModel{}, | 
					
						
							|  |  |  | 			false, | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			models.BaseModel{Id: ""}, | 
					
						
							|  |  |  | 			false, | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			models.BaseModel{Id: "abc"}, | 
					
						
							|  |  |  | 			true, | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for i, s := range scenarios { | 
					
						
							|  |  |  | 		result := s.model.HasId() | 
					
						
							|  |  |  | 		if result != s.expected { | 
					
						
							|  |  |  | 			t.Errorf("(%d) Expected %v, got %v", i, s.expected, result) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | func TestBaseModelId(t *testing.T) { | 
					
						
							|  |  |  | 	m := models.BaseModel{} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if m.GetId() != "" { | 
					
						
							|  |  |  | 		t.Fatalf("Expected empty id value, got %v", m.GetId()) | 
					
						
							| 
									
										
										
										
											2022-07-07 05:19:05 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 	m.SetId("test") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if m.GetId() != "test" { | 
					
						
							|  |  |  | 		t.Fatalf("Expected %q id, got %v", "test", m.GetId()) | 
					
						
							| 
									
										
										
										
											2022-07-07 05:19:05 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	m.RefreshId() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 	if len(m.GetId()) != 15 { | 
					
						
							|  |  |  | 		t.Fatalf("Expected 15 chars id, got %v", m.GetId()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestBaseModelIsNew(t *testing.T) { | 
					
						
							|  |  |  | 	m0 := models.BaseModel{} | 
					
						
							|  |  |  | 	m1 := models.BaseModel{Id: ""} | 
					
						
							|  |  |  | 	m2 := models.BaseModel{Id: "test"} | 
					
						
							|  |  |  | 	m3 := models.BaseModel{} | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 	m3.MarkAsNotNew() | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 	m4 := models.BaseModel{Id: "test"} | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 	m4.MarkAsNotNew() | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 	m5 := models.BaseModel{Id: "test"} | 
					
						
							|  |  |  | 	m5.MarkAsNew() | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 	m5.MarkAsNotNew() | 
					
						
							| 
									
										
										
										
											2022-10-30 16:28:14 +08:00
										 |  |  | 	m6 := models.BaseModel{} | 
					
						
							|  |  |  | 	m6.RefreshId() | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 	m7 := models.BaseModel{} | 
					
						
							|  |  |  | 	m7.MarkAsNotNew() | 
					
						
							|  |  |  | 	m7.RefreshId() | 
					
						
							|  |  |  | 	m8 := models.BaseModel{} | 
					
						
							|  |  |  | 	m8.PostScan() | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	scenarios := []struct { | 
					
						
							|  |  |  | 		model    models.BaseModel | 
					
						
							|  |  |  | 		expected bool | 
					
						
							|  |  |  | 	}{ | 
					
						
							|  |  |  | 		{m0, true}, | 
					
						
							|  |  |  | 		{m1, true}, | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 		{m2, true}, | 
					
						
							|  |  |  | 		{m3, false}, | 
					
						
							|  |  |  | 		{m4, false}, | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 		{m5, false}, | 
					
						
							| 
									
										
										
										
											2022-10-30 16:28:14 +08:00
										 |  |  | 		{m6, true}, | 
					
						
							| 
									
										
										
										
											2022-12-05 19:57:09 +08:00
										 |  |  | 		{m7, false}, | 
					
						
							|  |  |  | 		{m8, false}, | 
					
						
							| 
									
										
										
										
											2022-08-08 01:58:21 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for i, s := range scenarios { | 
					
						
							|  |  |  | 		result := s.model.IsNew() | 
					
						
							|  |  |  | 		if result != s.expected { | 
					
						
							|  |  |  | 			t.Errorf("(%d) Expected IsNew %v, got %v", i, s.expected, result) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2022-07-07 05:19:05 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestBaseModelCreated(t *testing.T) { | 
					
						
							|  |  |  | 	m := models.BaseModel{} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if !m.GetCreated().IsZero() { | 
					
						
							|  |  |  | 		t.Fatalf("Expected zero datetime, got %v", m.GetCreated()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	m.RefreshCreated() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if m.GetCreated().IsZero() { | 
					
						
							|  |  |  | 		t.Fatalf("Expected non-zero datetime, got %v", m.GetCreated()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestBaseModelUpdated(t *testing.T) { | 
					
						
							|  |  |  | 	m := models.BaseModel{} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if !m.GetUpdated().IsZero() { | 
					
						
							|  |  |  | 		t.Fatalf("Expected zero datetime, got %v", m.GetUpdated()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	m.RefreshUpdated() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if m.GetUpdated().IsZero() { | 
					
						
							|  |  |  | 		t.Fatalf("Expected non-zero datetime, got %v", m.GetUpdated()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |