blob: f2ca13f2c54eb89135ed18a77b0a93c9071ce784 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package migration
import (
"context"
"os"
"testing"
"beam.apache.org/playground/backend/internal/constants"
"beam.apache.org/playground/backend/internal/db/datastore"
"beam.apache.org/playground/backend/internal/db/mapper"
"beam.apache.org/playground/backend/internal/db/schema"
"beam.apache.org/playground/backend/internal/environment"
)
var datastoreDb *datastore.Datastore
var ctx context.Context
var appEnvs *environment.ApplicationEnvs
var props *environment.Properties
func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}
func setup() {
datastoreEmulatorHost := os.Getenv(constants.EmulatorHostKey)
if datastoreEmulatorHost == "" {
if err := os.Setenv(constants.EmulatorHostKey, constants.EmulatorHostValue); err != nil {
panic(err)
}
}
ctx = context.Background()
ctx = context.WithValue(ctx, constants.DatastoreNamespaceKey, "migration")
var err error
datastoreDb, err = datastore.New(ctx, mapper.NewPrecompiledObjectMapper(), constants.EmulatorProjectId)
if err != nil {
panic(err)
}
appEnvs = environment.NewApplicationEnvs("/app", "", "", "", "../../../../../sdks-emulator.yaml", "../../../../.", nil, 0, 0)
props, err = environment.NewProperties(appEnvs.PropertyPath())
if err != nil {
panic(err)
}
}
func teardown() {
if err := datastoreDb.Client.Close(); err != nil {
panic(err)
}
}
func TestInitialStructure_InitiateData(t *testing.T) {
tests := []struct {
name string
dbArgs *schema.DBArgs
wantErr bool
}{
{
name: "Test migration with version 0.0.1 in the usual case",
dbArgs: &schema.DBArgs{
Ctx: ctx,
Db: datastoreDb,
AppEnv: appEnvs,
Props: props,
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
is := new(InitialStructure)
err := is.InitiateData(tt.dbArgs)
if (err != nil) != tt.wantErr {
t.Errorf("InitiateData(): error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func TestAddingComplexityProperty_InitiateData(t *testing.T) {
tests := []struct {
name string
dbArgs *schema.DBArgs
wantErr bool
}{
{
name: "Test migration with version 0.0.2 in the usual case",
dbArgs: &schema.DBArgs{
Ctx: ctx,
Db: datastoreDb,
AppEnv: appEnvs,
Props: props,
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
is := new(AddingComplexityProperty)
err := is.InitiateData(tt.dbArgs)
if (err != nil) != tt.wantErr {
t.Errorf("InitiateData(): error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}