github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/stories/story_test.go (about) 1 // Tests for the stories package 2 package stories 3 4 import ( 5 "testing" 6 7 "github.com/bitcubate/cryptojournal/src/lib/resource" 8 ) 9 10 var testName = "foo" 11 12 func TestSetup(t *testing.T) { 13 err := resource.SetupTestDatabase(2) 14 if err != nil { 15 t.Fatalf("stories: Setup db failed %s", err) 16 } 17 18 } 19 20 // Test Create method 21 func TestCreateStories(t *testing.T) { 22 storyParams := map[string]string{ 23 "name": testName, 24 "status": "100", 25 } 26 27 id, err := New().Create(storyParams) 28 if err != nil { 29 t.Fatalf("stories: Create story failed :%s", err) 30 } 31 32 story, err := Find(id) 33 if err != nil { 34 t.Fatalf("stories: Create story find failed") 35 } 36 37 if story.Name != testName { 38 t.Fatalf("stories: Create story name failed expected:%s got:%s", testName, story.Name) 39 } 40 41 } 42 43 // Test Index (List) method 44 func TestListStories(t *testing.T) { 45 46 // Get all stories (we should have at least one) 47 results, err := FindAll(Query()) 48 if err != nil { 49 t.Fatalf("stories: List no story found :%s", err) 50 } 51 52 if len(results) < 1 { 53 t.Fatalf("stories: List no stories found :%s", err) 54 } 55 56 } 57 58 // Test Update method 59 func TestUpdateStories(t *testing.T) { 60 61 // Get the last story (created in TestCreateStories above) 62 story, err := FindFirst("name=?", testName) 63 if err != nil { 64 t.Fatalf("stories: Update no story found :%s", err) 65 } 66 67 name := "bar" 68 storyParams := map[string]string{"name": name} 69 err = story.Update(storyParams) 70 if err != nil { 71 t.Fatalf("stories: Update story failed :%s", err) 72 } 73 74 // Fetch the story again from db 75 story, err = Find(story.ID) 76 if err != nil { 77 t.Fatalf("stories: Update story fetch failed :%s", story.Name) 78 } 79 80 if story.Name != name { 81 t.Fatalf("stories: Update story failed :%s", story.Name) 82 } 83 84 } 85 86 // TestQuery tests trying to find published resources 87 func TestQuery(t *testing.T) { 88 89 results, err := FindAll(Published()) 90 if err != nil { 91 t.Fatalf("stories: error getting stories :%s", err) 92 } 93 if len(results) == 0 { 94 t.Fatalf("stories: published stories not found :%s", err) 95 } 96 97 results, err = FindAll(Query().Where("id>=? AND id <=?", 0, 100)) 98 if err != nil || len(results) == 0 { 99 t.Fatalf("stories: no story found :%s", err) 100 } 101 if len(results) > 2 { 102 t.Fatalf("stories: too many stories:%s", err) 103 } 104 105 } 106 107 // Test Destroy method 108 func TestDestroyStories(t *testing.T) { 109 110 results, err := FindAll(Query()) 111 if err != nil || len(results) == 0 { 112 t.Fatalf("stories: Destroy no story found :%s", err) 113 } 114 story := results[0] 115 count := len(results) 116 117 err = story.Destroy() 118 if err != nil { 119 t.Fatalf("stories: Destroy story failed :%s", err) 120 } 121 122 // Check new length of stories returned 123 results, err = FindAll(Query()) 124 if err != nil { 125 t.Fatalf("stories: Destroy error getting results :%s", err) 126 } 127 128 // length should be one less than previous 129 if len(results) != count-1 { 130 t.Fatalf("stories: Destroy story count wrong :%d", len(results)) 131 } 132 133 } 134 135 // TestAllowedParams should always return some params 136 func TestAllowedParams(t *testing.T) { 137 if len(AllowedParams()) == 0 { 138 t.Fatalf("stories: no allowed params") 139 } 140 }