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  }