github.com/willyham/dosa@v2.3.1-0.20171024181418-1e446d37ee71+incompatible/connectors/base/base_test.go (about)

     1  // Copyright (c) 2017 Uber Technologies, Inc.
     2  //
     3  // Permission is hereby granted, free of charge, to any person obtaining a copy
     4  // of this software and associated documentation files (the "Software"), to deal
     5  // in the Software without restriction, including without limitation the rights
     6  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     7  // copies of the Software, and to permit persons to whom the Software is
     8  // furnished to do so, subject to the following conditions:
     9  //
    10  // The above copyright notice and this permission notice shall be included in
    11  // all copies or substantial portions of the Software.
    12  //
    13  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    14  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    15  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    16  // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    17  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    18  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    19  // THE SOFTWARE.
    20  
    21  package base_test
    22  
    23  import (
    24  	"context"
    25  	"testing"
    26  
    27  	"github.com/stretchr/testify/assert"
    28  	"github.com/uber-go/dosa"
    29  	"github.com/uber-go/dosa/connectors/base"
    30  	"github.com/uber-go/dosa/connectors/devnull"
    31  )
    32  
    33  var (
    34  	bc      = base.Connector{}
    35  	dl      = devnull.Connector{}
    36  	bcWNext = base.Connector{Next: &dl}
    37  )
    38  
    39  var (
    40  	testInfo = &dosa.EntityInfo{
    41  		Ref: &dosa.SchemaRef{
    42  			Scope:      "testScope",
    43  			NamePrefix: "testPrefix",
    44  			EntityName: "testEntityName",
    45  		},
    46  		Def: &dosa.EntityDefinition{},
    47  	}
    48  	testPairs       = dosa.FieldNameValuePair{}
    49  	testValues      = make(map[string]dosa.FieldValue)
    50  	testMultiValues = make([]map[string]dosa.FieldValue, 1)
    51  )
    52  
    53  var ctx = context.Background()
    54  
    55  func TestBase_CreateIfNotExists(t *testing.T) {
    56  	assert.Error(t, bc.CreateIfNotExists(ctx, testInfo, testValues))
    57  	assert.NoError(t, bcWNext.CreateIfNotExists(ctx, testInfo, testValues))
    58  }
    59  
    60  func TestBase_Read(t *testing.T) {
    61  	minimumFields := make([]string, 1)
    62  	_, err := bc.Read(ctx, testInfo, testValues, minimumFields)
    63  	assert.Error(t, err)
    64  
    65  	val, err := bcWNext.Read(ctx, testInfo, testValues, minimumFields)
    66  	assert.Nil(t, val)
    67  	assert.Error(t, err)
    68  }
    69  
    70  func TestBase_MultiRead(t *testing.T) {
    71  	minimumFields := make([]string, 1)
    72  	_, e := bc.MultiRead(ctx, testInfo, testMultiValues, minimumFields)
    73  	assert.Error(t, e)
    74  
    75  	v, e := bcWNext.MultiRead(ctx, testInfo, testMultiValues, minimumFields)
    76  	assert.NotNil(t, v)
    77  	assert.Nil(t, e)
    78  }
    79  
    80  func TestBase_Upsert(t *testing.T) {
    81  	err := bc.Upsert(ctx, testInfo, testValues)
    82  	assert.Error(t, err)
    83  
    84  	err = bcWNext.Upsert(ctx, testInfo, testValues)
    85  	assert.Nil(t, err)
    86  }
    87  
    88  func TestBase_MultiUpsert(t *testing.T) {
    89  	_, err := bc.MultiUpsert(ctx, testInfo, testMultiValues)
    90  	assert.Error(t, err)
    91  
    92  	errs, err := bcWNext.MultiUpsert(ctx, testInfo, testMultiValues)
    93  	assert.NotNil(t, errs)
    94  	assert.Nil(t, err)
    95  }
    96  
    97  func TestBase_Remove(t *testing.T) {
    98  	err := bc.Remove(ctx, testInfo, testValues)
    99  	assert.Error(t, err)
   100  
   101  	err = bcWNext.Remove(ctx, testInfo, testValues)
   102  	assert.NoError(t, err)
   103  }
   104  
   105  func TestBase_RemoveRange(t *testing.T) {
   106  	conditions := make(map[string][]*dosa.Condition)
   107  	err := bc.RemoveRange(ctx, testInfo, conditions)
   108  	assert.Error(t, err)
   109  
   110  	err = bcWNext.RemoveRange(ctx, testInfo, conditions)
   111  	assert.NoError(t, err)
   112  }
   113  
   114  func TestBase_MultiRemove(t *testing.T) {
   115  	_, err := bc.MultiRemove(ctx, testInfo, testMultiValues)
   116  	assert.Error(t, err)
   117  
   118  	errs, err := bcWNext.MultiRemove(ctx, testInfo, testMultiValues)
   119  	assert.NotNil(t, errs)
   120  	assert.Nil(t, err)
   121  }
   122  
   123  func TestBase_Range(t *testing.T) {
   124  	conditions := make(map[string][]*dosa.Condition)
   125  	minimumFields := make([]string, 1)
   126  	_, _, err := bc.Range(ctx, testInfo, conditions, minimumFields, "", 0)
   127  	assert.Error(t, err)
   128  
   129  	vals, _, err := bcWNext.Range(ctx, testInfo, conditions, minimumFields, "", 0)
   130  	assert.Nil(t, vals)
   131  	assert.Error(t, err)
   132  }
   133  
   134  func TestBase_Scan(t *testing.T) {
   135  	minimumFields := make([]string, 1)
   136  	_, _, err := bc.Scan(ctx, testInfo, minimumFields, "", 0)
   137  	assert.Error(t, err)
   138  
   139  	vals, _, err := bcWNext.Scan(ctx, testInfo, minimumFields, "", 0)
   140  	assert.Nil(t, vals)
   141  	assert.Error(t, err)
   142  }
   143  
   144  func TestBase_CheckSchema(t *testing.T) {
   145  	defs := make([]*dosa.EntityDefinition, 4)
   146  	_, err := bc.CheckSchema(ctx, "testScope", "testPrefix", defs)
   147  	assert.Error(t, err)
   148  
   149  	versions, err := bcWNext.CheckSchema(ctx, "testScope", "testPrefix", defs)
   150  	assert.NotNil(t, versions)
   151  	assert.NoError(t, err)
   152  }
   153  
   154  func TestBase_UpsertSchema(t *testing.T) {
   155  	defs := make([]*dosa.EntityDefinition, 4)
   156  	_, err := bc.UpsertSchema(ctx, "testScope", "testPrefix", defs)
   157  	assert.Error(t, err)
   158  
   159  	status, err := bcWNext.UpsertSchema(ctx, "testScope", "testPrefix", defs)
   160  	assert.NotNil(t, status)
   161  	assert.NoError(t, err)
   162  }
   163  
   164  func TestBase_CreateScope(t *testing.T) {
   165  	assert.Error(t, bc.CreateScope(ctx, ""))
   166  	assert.NoError(t, bcWNext.CreateScope(ctx, ""))
   167  }
   168  
   169  func TestBase_TruncateScope(t *testing.T) {
   170  	assert.Error(t, bc.TruncateScope(ctx, ""))
   171  	assert.NoError(t, bcWNext.TruncateScope(ctx, ""))
   172  }
   173  
   174  func TestBase_DropScope(t *testing.T) {
   175  	assert.Error(t, bc.DropScope(ctx, ""))
   176  	assert.NoError(t, bcWNext.DropScope(ctx, ""))
   177  }
   178  
   179  func TestBase_Shutdown(t *testing.T) {
   180  	assert.Error(t, bc.Shutdown())
   181  	assert.NoError(t, bcWNext.Shutdown())
   182  }
   183  
   184  func TestBase_CheckSchemaStatus(t *testing.T) {
   185  	_, err := bc.CheckSchemaStatus(ctx, "testScope", "testPrefix", int32(1))
   186  	assert.Error(t, err)
   187  
   188  	versions, err := bcWNext.CheckSchemaStatus(ctx, "testScope", "testPrefix", int32(1))
   189  	assert.NotNil(t, versions)
   190  	assert.NoError(t, err)
   191  }