github.com/status-im/status-go@v1.1.0/protocol/sqlite/migrations_test.go (about)

     1  package sqlite
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestPrepareMigrationsEmpty(t *testing.T) {
    10  	names, _, err := prepareMigrations(nil)
    11  	require.NoError(t, err)
    12  	require.Empty(t, names)
    13  }
    14  
    15  func TestPrepareMigrationsWithDefaultMigrations(t *testing.T) {
    16  	names, _, err := prepareMigrations(defaultMigrations)
    17  	require.NoError(t, err)
    18  	require.NotEmpty(t, names)
    19  }
    20  
    21  func TestPrepareMigrationsErrors(t *testing.T) {
    22  	// Two migrations with the same name in the same set.
    23  	names, _, err := prepareMigrations([]migrationsWithGetter{
    24  		{
    25  			Names:  []string{"name1.sql", "name1.sql"},
    26  			Getter: nil,
    27  		},
    28  	})
    29  	require.EqualError(t, err, "migration with name name1.sql already exists")
    30  	require.Empty(t, names)
    31  
    32  	// Two migrations with the same name in different sets.
    33  	names, _, err = prepareMigrations([]migrationsWithGetter{
    34  		{
    35  			Names:  []string{"name2.sql"},
    36  			Getter: nil,
    37  		},
    38  		{
    39  			Names:  []string{"name2.sql"},
    40  			Getter: nil,
    41  		},
    42  	})
    43  	require.EqualError(t, err, "migration with name name2.sql already exists")
    44  	require.Empty(t, names)
    45  
    46  	// No getter for a migration.
    47  	_, getter, err := prepareMigrations([]migrationsWithGetter{
    48  		{
    49  			Names:  []string{"name3.sql"},
    50  			Getter: nil,
    51  		},
    52  	})
    53  	require.NoError(t, err)
    54  	_, err = getter("non-existing-migration.sql")
    55  	require.EqualError(t, err, "no migration for name non-existing-migration.sql")
    56  }