debian-forge-composer/internal/mocks/rpmmd/rpmmd_mock.go
Ondřej Budai 495f5b558b Add support for mocking rpmmd
We want to test API methods which calls dnf. Unfortunately, calling dnf
is expensive operation - it requires network access and downloading
a lot of (meta)data. This commit changes the rpmmd implementation
so that it can be mocked.
2019-11-13 14:54:02 +01:00

33 lines
721 B
Go

package rpmmd_mock
import "github.com/osbuild/osbuild-composer/internal/rpmmd"
type fetchPackageList struct {
ret rpmmd.PackageList
err error
}
type depsolve struct {
ret []rpmmd.PackageSpec
err error
}
type Fixture struct {
fetchPackageList
depsolve
}
type rpmmdMock struct {
Fixture Fixture
}
func NewRPMMDMock(fixture Fixture) rpmmd.RPMMD {
return &rpmmdMock{Fixture: fixture}
}
func (r *rpmmdMock) FetchPackageList(repos []rpmmd.RepoConfig) (rpmmd.PackageList, error) {
return r.Fixture.fetchPackageList.ret, r.Fixture.fetchPackageList.err
}
func (r *rpmmdMock) Depsolve(specs []string, repos []rpmmd.RepoConfig) ([]rpmmd.PackageSpec, error) {
return r.Fixture.depsolve.ret, r.Fixture.depsolve.err
}