Files
cloud-services/pkg/common/mobile_rx_test.go

268 lines
6.0 KiB
Go

package common_test
import (
"testing"
"time"
"fiskerinc.com/modules/common"
"fiskerinc.com/modules/common/dbbasemodel"
"fiskerinc.com/modules/testhelper"
"github.com/google/uuid"
)
func TestMobileRXMessages(t *testing.T) {
schema := "file://" + testhelper.GetSchemaDirPath() + "/mobile/RXMessage.json"
now := time.Now()
percent, maxMiles, temp, chTime, stateOfCharge := 100, 350, -11, 43, 40
typ := "AC"
tests := []testhelper.SchemaTest{
{
Name: "TestMobileCarLocations",
Object: common.Message{
Handler: "car_locations",
Data: []common.JSONCarLocation{
{
VIN: "1F15K3R45N1234567",
Altitude: 1,
Latitude: 2,
Longitude: 3,
},
{
VIN: "1F15K3R45N3456789",
Altitude: 100,
Latitude: 200,
Longitude: 300,
},
},
},
},
{
Name: "TestMobileDigitalTwin",
Object: common.Message{
Handler: "digital_twin",
Data: common.JSONDigitalTwin{
VIN: "1F15K3R45N1234567",
Online: true,
OnlineHMI: true,
VehicleSpeed: &common.VehicleSpeed{
Speed: 123.4,
},
Battery: &common.JSONBattery{
Percent: &percent,
MaxMiles: &maxMiles,
AvgCellTemperature: &temp,
ChargeType: &typ,
RemainingChargingTime: &chTime,
StateOfCharge: &stateOfCharge,
},
Doors: &common.Doors{
LeftFront: true,
LeftRear: true,
RightFront: false,
RightRear: false,
},
Location: &common.Location{
Altitude: 1000,
Longitude: 1,
Latitude: -1,
},
Locks: &common.Locks{
Driver: true,
All: false,
},
UpdatedAt: &time.Time{},
Windows: &common.JSONWindows{
LeftFront: 0,
LeftRear: 25,
LeftRearQuarter: 100,
RightFront: 50,
RightRear: 75,
RightRearQuarter: 100,
RearWindshield: 100,
Sunroof: 100,
},
ClimateControl: &common.JSONClimateControl{
CabinTemperature: 70,
RearDefrost: false,
DriverSeatHeat: 0,
PassengerSeatHeat: 0,
SteeringWheelHeat: false,
},
},
},
},
{
Name: "TestMobileProfiles",
Object: common.Message{
Handler: "profiles",
Data: []common.JSONMobileProfile{
{
VIN: "1F15K3R45N1234567",
DriverRole: "OWNER",
Settings: []common.CarSetting{{
Name: "TESTSETTING",
Value: "TESTVALUE",
Type: "string",
DBModelBase: dbbasemodel.DBModelBase{
UpdatedAt: &now,
},
}},
Subscriptions: []common.Subscription{{
Name: "test",
Destination: "ICC",
Expires: time.Date(2021, 10, 30, 8, 35, 0, 0, time.UTC),
}},
},
{
VIN: "1F15K3R45N3456789",
DriverRole: "DRIVER",
},
},
},
},
{
Name: "TestMobileSettingsUpdate",
Object: common.Message{
Handler: "settings_update",
Data: common.MobileSettingsUpdate{
VIN: "1F15K3R45N1234567",
Settings: []common.CarSetting{{
Name: "TESTSETTING",
Value: "TESTVALUE",
Type: "string",
DBModelBase: dbbasemodel.DBModelBase{
UpdatedAt: &now,
},
}},
},
},
},
{
Name: "TestMobileStoreInventory",
Object: common.Message{
Handler: "store_inventory",
Data: []common.SubscriptionType{{
ID: uuid.New(),
Name: "TESTSUB",
Destination: "ICC",
Price: 100,
Currency: "USD",
Description: "this is a test",
DurationValue: 5,
DurationUnit: "Hours",
}},
},
},
{
Name: "TestMobileSubscriptionsUpdate",
Object: common.Message{
Handler: "subscriptions_update",
Data: common.MobileSubscriptionUpdate{
VIN: "1F15K3R45N1234567",
Subscriptions: []common.Subscription{{
Name: "test",
Destination: "ICC",
Expires: time.Date(2021, 10, 30, 8, 35, 0, 0, time.UTC),
}},
},
},
},
{
Name: "TestMobileStorePurchaseError",
Object: common.Message{
Handler: "store_purchase_error",
Data: common.JSONError{
Error: "test error",
},
},
},
{
Name: "TestMobileStoreInventoryError",
Object: common.Message{
Handler: "store_inventory_error",
Data: common.JSONError{
Error: "test error",
},
},
},
{
Name: "TestUpdates",
Object: common.Message{
Handler: "updates",
Data: []common.ApprovalUpdate{
{
ID: 1000,
VIN: "1F15K3R45N1234567",
Name: "Update name",
Version: "Update version",
Description: "Update description",
ReleaseNotes: "http://releasenotes.com",
},
{
ID: 1001,
VIN: "1F15K3R45N1234567",
Name: "Update name",
Version: "Update version",
Description: "Update description",
ReleaseNotes: "http://releasenotes.com",
},
},
},
},
{
Name: "TestPOIs",
Object: common.Message{
Handler: "user_pois",
Data: []common.PointOfInterest{
{
Name: "TestWorkPOI",
Location: common.POILocation{
Latitude: 1.11,
Longitude: 2.22,
},
},
{
Name: "TestHomePOI",
Location: common.POILocation{
Latitude: 8.88,
Longitude: 9.99,
},
},
},
},
},
{
Name: "TestMobileError",
Object: common.Message{
Handler: "error",
Data: common.MessageString{
Message: "disconnected by duplicate ID",
},
},
},
{
Name: "TestMobileManualIssue",
Object: common.Message{
Handler: "manual_issue",
Data: common.AddIssueRequest{
Issue: common.Issue{
VIN: "1F15K3R45N1234567",
Title: "HMI not working",
Description: "Black screen on HMI",
Timestamp: time.Now(),
},
Images: [][]byte{
{72, 101, 108, 108, 111},
{72, 101, 108, 108, 49},
},
},
},
},
}
testhelper.NewSchemaTestHelper(t, schema).
RunSchemaTests(tests)
}