ficsit-cli-flake/cli/test_helpers.go
Vilsol 98b7c99e74
fix: various edge cases (#45)
* fix: various edge cases
test: add tea unit test

* chore: lint

* chore: 🤷

* test: fail after 1 minute

* test: print buffer

* test: fuck windows
2023-12-07 23:31:37 +02:00

494 lines
15 KiB
Go

package cli
import (
"context"
"time"
"github.com/satisfactorymodding/ficsit-cli/cli/provider"
"github.com/satisfactorymodding/ficsit-cli/ficsit"
)
var _ provider.Provider = (*MockProvider)(nil)
type MockProvider struct{}
func (m MockProvider) Mods(_ context.Context, f ficsit.ModFilter) (*ficsit.ModsResponse, error) {
if f.Offset > 0 {
return &ficsit.ModsResponse{
Mods: ficsit.ModsModsGetMods{
Count: 5,
Mods: []ficsit.ModsModsGetModsModsMod{},
},
}, nil
}
return &ficsit.ModsResponse{
Mods: ficsit.ModsModsGetMods{
Count: 5,
Mods: []ficsit.ModsModsGetModsModsMod{
{
Id: "9LguyCdDUrpT9N",
Name: "Ficsit Remote Monitoring",
Mod_reference: "FicsitRemoteMonitoring",
Last_version_date: time.Now(),
Created_at: time.Now(),
},
{
Id: "DGiLzB3ZErWu2V",
Name: "Refined Power",
Mod_reference: "RefinedPower",
Last_version_date: time.Now(),
Created_at: time.Now(),
},
{
Id: "B24emzbs6xVZQr",
Name: "RefinedRDLib",
Mod_reference: "RefinedRDLib",
Last_version_date: time.Now(),
Created_at: time.Now(),
},
{
Id: "6vQ6ckVYFiidDh",
Name: "Area Actions",
Mod_reference: "AreaActions",
Last_version_date: time.Now(),
Created_at: time.Now(),
},
{
Id: "As2uJmQLLxjXLG",
Name: "ModularUI",
Mod_reference: "ModularUI",
Last_version_date: time.Now(),
Created_at: time.Now(),
},
},
},
}, nil
}
func (m MockProvider) GetMod(_ context.Context, _ string) (*ficsit.GetModResponse, error) {
// Currently used only by TUI
return nil, nil
}
func (m MockProvider) ModVersions(_ context.Context, modReference string, _ ficsit.VersionFilter) (*ficsit.ModVersionsResponse, error) {
switch modReference {
//nolint
case "RefinedPower":
return &ficsit.ModVersionsResponse{Mod: ficsit.ModVersionsMod{
Id: "DGiLzB3ZErWu2V",
Versions: []ficsit.ModVersionsModVersionsVersion{
{Id: "Eqgr4VcB8y1z9a", Version: "3.2.13"},
{Id: "BwVKMJNP8doDLg", Version: "3.2.11"},
{Id: "4XTjMpqFngbu9r", Version: "3.2.10"},
},
}}, nil
//nolint
case "RefinedRDLib":
return &ficsit.ModVersionsResponse{Mod: ficsit.ModVersionsMod{
Id: "B24emzbs6xVZQr",
Versions: []ficsit.ModVersionsModVersionsVersion{
{Id: "2XcE6RUzGhZW7p", Version: "1.1.7"},
{Id: "52RMLEigqT5Ksn", Version: "1.1.6"},
{Id: "F4HY9eP4D5XjWQ", Version: "1.1.5"},
},
}}, nil
}
panic("ModVersions: " + modReference)
}
func (m MockProvider) SMLVersions(_ context.Context) (*ficsit.SMLVersionsResponse, error) {
return &ficsit.SMLVersionsResponse{
SmlVersions: ficsit.SMLVersionsSmlVersionsGetSMLVersions{
Count: 4,
Sml_versions: []ficsit.SMLVersionsSmlVersionsGetSMLVersionsSml_versionsSMLVersion{
{
Id: "v2.2.1",
Version: "2.2.1",
Satisfactory_version: 125236,
Targets: []ficsit.SMLVersionsSmlVersionsGetSMLVersionsSml_versionsSMLVersionTargetsSMLVersionTarget{},
},
{
Id: "v3.3.2",
Version: "3.3.2",
Satisfactory_version: 194714,
Targets: []ficsit.SMLVersionsSmlVersionsGetSMLVersionsSml_versionsSMLVersionTargetsSMLVersionTarget{
{
TargetName: ficsit.TargetNameWindows,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.3.2/SML.zip",
},
},
},
{
Id: "v3.6.0",
Version: "3.6.0",
Satisfactory_version: 264901,
Targets: []ficsit.SMLVersionsSmlVersionsGetSMLVersionsSml_versionsSMLVersionTargetsSMLVersionTarget{
{
TargetName: ficsit.TargetNameWindows,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.0/SML.zip",
},
{
TargetName: ficsit.TargetNameWindowsserver,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.0/SML.zip",
},
{
TargetName: ficsit.TargetNameLinuxserver,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.0/SML.zip",
},
},
},
{
Id: "v3.6.1",
Version: "3.6.1",
Satisfactory_version: 264901,
Targets: []ficsit.SMLVersionsSmlVersionsGetSMLVersionsSml_versionsSMLVersionTargetsSMLVersionTarget{
{
TargetName: ficsit.TargetNameWindows,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.1/SML.zip",
},
{
TargetName: ficsit.TargetNameWindowsserver,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.1/SML.zip",
},
{
TargetName: ficsit.TargetNameLinuxserver,
Link: "https://github.com/satisfactorymodding/SatisfactoryModLoader/releases/download/v3.6.1/SML.zip",
},
},
},
},
},
}, nil
}
var commonTargets = []ficsit.ModVersionsWithDependenciesModVersionsVersionTargetsVersionTarget{
{
TargetName: ficsit.TargetNameWindows,
Link: "/v1/version/7QcfNdo5QAAyoC/Windows/download",
Hash: "62f5c84eca8480b3ffe7d6c90f759e3b463f482530e27d854fd48624fdd3acc9",
},
{
TargetName: ficsit.TargetNameWindowsserver,
Link: "/v1/version/7QcfNdo5QAAyoC/WindowsServer/download",
Hash: "8a83fcd4abece4192038769cc672fff6764d72c32fb6c7a8c58d66156bb07917",
},
{
TargetName: ficsit.TargetNameLinuxserver,
Link: "/v1/version/7QcfNdo5QAAyoC/LinuxServer/download",
Hash: "8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85",
},
}
func (m MockProvider) ModVersionsWithDependencies(_ context.Context, modID string) (*ficsit.ModVersionsWithDependenciesResponse, error) {
switch modID {
case "RefinedPower":
return &ficsit.ModVersionsWithDependenciesResponse{
Mod: ficsit.ModVersionsWithDependenciesMod{
Id: "DGiLzB3ZErWu2V",
Versions: []ficsit.ModVersionsWithDependenciesModVersionsVersion{
{
Id: "Eqgr4VcB8y1z9a",
Version: "3.2.13",
Link: "/v1/version/Eqgr4VcB8y1z9a/download",
Hash: "8cabf9245e3f2a01b95cd3d39d98e407cfeccf355c19f1538fcbf868f81de008",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "ModularUI",
Condition: "^2.1.11",
Optional: false,
},
{
Mod_id: "RefinedRDLib",
Condition: "^1.1.7",
Optional: false,
},
{
Mod_id: "SML",
Condition: "^3.6.1",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "BwVKMJNP8doDLg",
Version: "3.2.11",
Link: "/v1/version/BwVKMJNP8doDLg/download",
Hash: "b64aa7b3a4766295323eac47d432e0d857d042c9cfb1afdd16330483b0476c89",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "ModularUI",
Condition: "^2.1.10",
Optional: false,
},
{
Mod_id: "RefinedRDLib",
Condition: "^1.1.6",
Optional: false,
},
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "4XTjMpqFngbu9r",
Version: "3.2.10",
Link: "/v1/version/4XTjMpqFngbu9r/download",
Hash: "093f92c6d52c853bade386d5bc79cf103b27fb6e9d6f806850929b866ff98222",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "ModularUI",
Condition: "^2.1.9",
Optional: false,
},
{
Mod_id: "RefinedRDLib",
Condition: "^1.1.5",
Optional: false,
},
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
},
},
}, nil
case "AreaActions":
return &ficsit.ModVersionsWithDependenciesResponse{
Mod: ficsit.ModVersionsWithDependenciesMod{
Id: "6vQ6ckVYFiidDh",
Versions: []ficsit.ModVersionsWithDependenciesModVersionsVersion{
{
Id: "5KMXBkdAz5YJe",
Version: "1.6.7",
Link: "/v1/version/5KMXBkdAz5YJe/download",
Hash: "0baa673eea245b8ec5fe203a70b98deb666d85e27fb6ce9201e3c0fa3aaedcbe",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.4.1",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "EtEbwJj3smMn3o",
Version: "1.6.6",
Link: "/v1/version/EtEbwJj3smMn3o/download",
Hash: "b64aa7b3a4766295323eac47d432e0d857d042c9cfb1afdd16330483b0476c89",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.2.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "9uw1eDwgrQs279",
Version: "1.6.5",
Link: "/v1/version/9uw1eDwgrQs279/download",
Hash: "427a93383fe8a8557096666b7e81bf5fb25f54a5428248904f52adc4dc34d60c",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.0.0",
Optional: false,
},
},
Targets: commonTargets,
},
},
},
}, nil
case "RefinedRDLib":
return &ficsit.ModVersionsWithDependenciesResponse{
Mod: ficsit.ModVersionsWithDependenciesMod{
Id: "B24emzbs6xVZQr",
Versions: []ficsit.ModVersionsWithDependenciesModVersionsVersion{
{
Id: "2XcE6RUzGhZW7p",
Version: "1.1.7",
Link: "/v1/version/2XcE6RUzGhZW7p/download",
Hash: "034f3a7862d0153768e1a95d29d47a9d08ebcb7ff0fc8f9f2cb59147b09f16dd",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.1",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "52RMLEigqT5Ksn",
Version: "1.1.6",
Link: "/v1/version/52RMLEigqT5Ksn/download",
Hash: "9577e401e1a12a29657c8e3ed0cff34815009504dc62fc1a335b1e7a3b6fed12",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "F4HY9eP4D5XjWQ",
Version: "1.1.5",
Link: "/v1/version/F4HY9eP4D5XjWQ/download",
Hash: "9cbeae078e28a661ebe15642e6d8f652c6c40c50dabd79a0781e25b84ed9bddf",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
},
},
}, nil
case "ModularUI":
return &ficsit.ModVersionsWithDependenciesResponse{
Mod: ficsit.ModVersionsWithDependenciesMod{
Id: "As2uJmQLLxjXLG",
Versions: []ficsit.ModVersionsWithDependenciesModVersionsVersion{
{
Id: "7ay11W9MAv6MHs",
Version: "2.1.12",
Link: "/v1/version/7ay11W9MAv6MHs/download",
Hash: "a0de64c02448f9e37903e7569cc6ceee67f8e018f2774aac9cf295704b9e4696",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.1",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "4YuL9UbCDdzm68",
Version: "2.1.11",
Link: "/v1/version/4YuL9UbCDdzm68/download",
Hash: "b70658bfa74c132530046bee886c3c0f0277b95339b4fc67da6207cbd2cd422d",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "5yY2zmx5nTyhWv",
Version: "2.1.10",
Link: "/v1/version/5yY2zmx5nTyhWv/download",
Hash: "7c523c9e6263a0b182ed42fe4d4de40aada10c17b1b344219618cd39055870bd",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
},
},
}, nil
case "ThisModDoesNotExist$$$":
return &ficsit.ModVersionsWithDependenciesResponse{}, nil
case "FicsitRemoteMonitoring":
return &ficsit.ModVersionsWithDependenciesResponse{
Mod: ficsit.ModVersionsWithDependenciesMod{
Id: "9LguyCdDUrpT9N",
Versions: []ficsit.ModVersionsWithDependenciesModVersionsVersion{
{
Id: "7ay11W9MAv6MHs",
Version: "0.10.1",
Link: "/v1/version/9LguyCdDUrpT9N/download",
Hash: "9278b37653ad33dd859875929b15cd1f8aba88d0ea65879df2db1ae8808029d4",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.6.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "DYvfwan5tYqZKE",
Version: "0.10.0",
Link: "/v1/version/DYvfwan5tYqZKE/download",
Hash: "8666b37b24188c3f56b1dad6f1d437c1127280381172a1046e85142e7cb81c64",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.5.0",
Optional: false,
},
},
Targets: commonTargets,
},
{
Id: "918KMrX94xFpVw",
Version: "0.9.8",
Link: "/v1/version/918KMrX94xFpVw/download",
Hash: "d4fed641b6ecb25b9191f4dd7210576e9bd7bc644abcb3ca592200ccfd08fc44",
Dependencies: []ficsit.ModVersionsWithDependenciesModVersionsVersionDependenciesVersionDependency{
{
Mod_id: "SML",
Condition: "^3.4.1",
Optional: false,
},
},
Targets: commonTargets,
},
},
},
}, nil
}
panic("ModVersionsWithDependencies: " + modID)
}
func (m MockProvider) GetModName(_ context.Context, modReference string) (*ficsit.GetModNameResponse, error) {
switch modReference {
case "RefinedPower":
return &ficsit.GetModNameResponse{Mod: ficsit.GetModNameMod{
Id: "DGiLzB3ZErWu2V",
Mod_reference: "RefinedPower",
Name: "Refined Power",
}}, nil
case "RefinedRDLib":
return &ficsit.GetModNameResponse{Mod: ficsit.GetModNameMod{
Id: "B24emzbs6xVZQr",
Mod_reference: "RefinedRDLib",
Name: "RefinedRDLib",
}}, nil
}
panic("GetModName: " + modReference)
}
func (m MockProvider) IsOffline() bool {
return false
}