Files
cloud-services/pkg/db/queries/subscription_packages_test.go

253 lines
8.1 KiB
Go

package queries_test
import (
"testing"
m "fiskerinc.com/modules/common"
"fiskerinc.com/modules/db"
"fiskerinc.com/modules/db/queries"
th "fiskerinc.com/modules/testhelper"
"github.com/google/uuid"
)
const testSubPackageName = "TESTSUBPACKAGE"
func TestSubscriptionPackagesIntegration(t *testing.T) {
t.Skip()
qsp := setupSubscriptionPackages()
qsf := &queries.SubscriptionFeatures{}
qsc := &queries.SubscriptionConfigurations{}
pack := testSubscriptionPackageInsert(t, qsp)
if pack.ID == uuid.Nil {
t.Error("unable to create package")
return
}
feature := testSubscriptionPackageFeatureInsert(t, qsf)
if feature.ID == uuid.Nil {
t.Error("unable to create feature")
return
}
config, err := testSubscriptionAddConfiguration(t, qsc, &feature)
if err != nil {
t.Error("unable to create configuration")
return
}
testSubscriptionAddFeature(t, qsp, &pack, &feature)
testSubscriptionPackageSelect(t, qsp, &pack)
testSubscriptionFeatureSelect(t, qsf, &feature)
testSubscriptionConfigurationSelect(t, qsc, &config)
testSubscriptionPackageCount(t, qsp, &pack)
testSubscriptionFeatureCount(t, qsf, &feature)
testSubscriptionConfigurationCount(t, qsc, &config)
testSubscriptionPackageUpdate(t, qsp, &pack)
testSubscriptionFeatureUpdate(t, qsf, &feature)
testSubscriptionConfigurationUpdate(t, qsc, &config)
testSubscriptionFeatureLoad(t, qsf, &feature)
testSubscriptionPackageLoad(t, qsp, &pack)
testSubscriptionPackageDelete(t, qsp, &pack)
testSubscriptionFeatureDelete(t, qsf, &feature)
testSubscriptionConfigDelete(t, qsc, &config)
}
func setupSubscriptionPackages() queries.SubscriptionPackagesInterface {
instance := &queries.SubscriptionPackages{}
conn = instance.GetDBConn()
conn.AddQueryHook(db.SQLLogger{})
client := instance.GetClient()
client.InitSchema([]interface{}{
(*m.SubscriptionPackageToFeature)(nil),
(*m.SubscriptionPackage)(nil),
(*m.SubscriptionFeature)(nil),
(*m.SubscriptionConfiguration)(nil),
})
return instance
}
func testSubscriptionPackageInsert(t *testing.T, q queries.SubscriptionPackagesInterface) m.SubscriptionPackage {
model := m.SubscriptionPackage{Name: testSubPackageName}
result, err := q.Insert(&model)
if th.NoError(t, "Insert Package error", err) {
return model
}
th.Equal(t, "Insert Package affected", 1, result.RowsAffected())
th.Equal(t, "Insert Package returned", 1, result.RowsReturned())
return model
}
func testSubscriptionPackageFeatureInsert(t *testing.T, q queries.SubscriptionFeaturesInterface) m.SubscriptionFeature {
feature := m.SubscriptionFeature{
Name: testSubPackageName,
Description: "Test Description",
}
result, err := q.Insert(&feature)
if th.NoError(t, "Insert Feature error", err) {
return feature
}
th.Equal(t, "Insert Feature affected", 1, result.RowsAffected())
th.Equal(t, "Insert Feature returned", 1, result.RowsReturned())
return feature
}
func testSubscriptionAddFeature(t *testing.T, q queries.SubscriptionPackagesInterface, p *m.SubscriptionPackage, f *m.SubscriptionFeature) {
result, err := q.AddFeature(p, f)
th.NoError(t, "AddFeature error", err)
th.True(t, "AddFeature result", result)
}
func testSubscriptionAddConfiguration(t *testing.T, q queries.SubscriptionConfigurationsInterface, f *m.SubscriptionFeature) (m.SubscriptionConfiguration, error) {
model := m.SubscriptionConfiguration{
SubscriptionFeatureID: f.ID,
ECU: "TEST",
SoftwareVersion: "SOFTWAREVERSION",
HardwareVersion: "HARDWAREVERSION",
Configuration: &m.BinaryHex{0x99},
DID: &m.BinaryHex{0x01},
PID: &m.BinaryHex{0x02},
Mask: &m.BinaryHex{0x03},
}
result, err := q.Insert(&model)
if th.NoError(t, "Insert Config error", err) {
return model, err
}
th.Equal(t, "Insert Config affected", 1, result.RowsAffected())
th.Equal(t, "Insert Config returned", 1, result.RowsReturned())
return model, nil
}
func testSubscriptionPackageUpdate(t *testing.T, q queries.SubscriptionPackagesInterface, model *m.SubscriptionPackage) {
model.Name = model.Name + "X"
result, err := q.Update(model)
if th.NoError(t, "Update Package error", err) {
return
}
th.Equal(t, "Update Package affected", 1, result.RowsAffected())
th.Equal(t, "Update Package returned", 0, result.RowsReturned())
}
func testSubscriptionFeatureUpdate(t *testing.T, q queries.SubscriptionFeaturesInterface, model *m.SubscriptionFeature) {
result, err := q.Update(model)
if th.NoError(t, "Update Feature error", err) {
return
}
th.Equal(t, "Update Feature affected", 1, result.RowsAffected())
th.Equal(t, "Update Feature returned", 0, result.RowsReturned())
}
func testSubscriptionConfigurationUpdate(t *testing.T, q queries.SubscriptionConfigurationsInterface, model *m.SubscriptionConfiguration) {
result, err := q.Update(model)
if th.NoError(t, "Update Config error", err) {
return
}
th.Equal(t, "Update Config affected", 1, result.RowsAffected())
th.Equal(t, "Update Config returned", 0, result.RowsReturned())
}
func testSubscriptionPackageCount(t *testing.T, q queries.SubscriptionPackagesInterface, model *m.SubscriptionPackage) {
result, err := q.Count(model)
if th.NoError(t, "Count Package error", err) {
return
}
th.Equal(t, "Count Package result", 1, result)
}
func testSubscriptionFeatureCount(t *testing.T, q queries.SubscriptionFeaturesInterface, model *m.SubscriptionFeature) {
result, err := q.Count(model)
th.NoError(t, "Count Feature error", err)
th.Equal(t, "Count Feature result", 1, result)
}
func testSubscriptionConfigurationCount(t *testing.T, q queries.SubscriptionConfigurationsInterface, model *m.SubscriptionConfiguration) {
result, err := q.Count(model)
th.NoError(t, "Count Config error", err)
th.Equal(t, "Count Config result", 1, result)
}
func testSubscriptionPackageSelect(t *testing.T, q queries.SubscriptionPackagesInterface, model *m.SubscriptionPackage) {
result, err := q.Select(model, nil)
th.NoError(t, "Select Package error", err)
th.Equal(t, "Select Package result", 1, len(result))
}
func testSubscriptionFeatureSelect(t *testing.T, q queries.SubscriptionFeaturesInterface, model *m.SubscriptionFeature) {
result, err := q.Select(model, nil)
th.NoError(t, "Select Feature error", err)
th.Equal(t, "Select Feature result", 1, len(result))
}
func testSubscriptionConfigurationSelect(t *testing.T, q queries.SubscriptionConfigurationsInterface, model *m.SubscriptionConfiguration) {
result, err := q.Select(model, nil)
th.NoError(t, "Select Config error", err)
th.Equal(t, "Select Config result", 1, len(result))
}
func testSubscriptionFeatureLoad(t *testing.T, q queries.SubscriptionFeaturesInterface, model *m.SubscriptionFeature) {
item := m.SubscriptionFeature{ID: model.ID}
err := q.Load(&item)
th.NoError(t, "Load Feature error", err)
th.Equal(t, "Load Feature configurations", 1, len(item.Configurations))
}
func testSubscriptionPackageLoad(t *testing.T, q queries.SubscriptionPackagesInterface, model *m.SubscriptionPackage) {
item := m.SubscriptionPackage{ID: model.ID}
err := q.Load(&item)
th.NoError(t, "Load Package error", err)
th.Equal(t, "Load Package features", 1, len(item.Features))
}
func testSubscriptionPackageDelete(t *testing.T, q queries.SubscriptionPackagesInterface, model *m.SubscriptionPackage) {
result, err := q.Delete(model)
if th.NoError(t, "Delete Package error", err) {
return
}
th.Equal(t, "Delete Package affected", 2, result.RowsAffected())
th.Equal(t, "Delete Package returned", 0, result.RowsReturned())
}
func testSubscriptionFeatureDelete(t *testing.T, q queries.SubscriptionFeaturesInterface, model *m.SubscriptionFeature) {
result, err := q.Delete(model)
if th.NoError(t, "Delete Feature error", err) {
return
}
th.Equal(t, "Delete Feature affected", 2, result.RowsAffected())
th.Equal(t, "Delete Feature returned", 0, result.RowsReturned())
}
func testSubscriptionConfigDelete(t *testing.T, q queries.SubscriptionConfigurationsInterface, model *m.SubscriptionConfiguration) {
result, err := q.Delete(model)
if th.NoError(t, "Delete Config error", err) {
return
}
th.Equal(t, "Delete Config affected", 0, result.RowsAffected())
th.Equal(t, "Delete Config returned", 0, result.RowsReturned())
}