@@ -686,6 +686,39 @@ func CheckBundlesHaveContentsIfNoPath(t *testing.T, db *sql.DB) {
686686 }
687687}
688688
689+ func TestDirectoryPopulator (t * testing.T ) {
690+ db , cleanup := CreateTestDb (t )
691+ defer cleanup ()
692+
693+ loader , err := sqlite .NewSQLLiteLoader (db )
694+ require .NoError (t , err )
695+ require .NoError (t , loader .Migrate (context .TODO ()))
696+
697+ graphLoader , err := sqlite .NewSQLGraphLoaderFromDB (db )
698+ require .NoError (t , err )
699+
700+ query := sqlite .NewSQLLiteQuerierFromDb (db )
701+
702+ populate := func (bundles map [image.Reference ]string ) error {
703+ return registry .NewDirectoryPopulator (
704+ loader ,
705+ graphLoader ,
706+ query ,
707+ bundles ,
708+ make (map [string ]map [image.Reference ]string ),
709+ false ).Populate (registry .ReplacesMode )
710+ }
711+ add := map [image.Reference ]string {
712+ image .SimpleReference ("quay.io/test/etcd.0.9.2" ): "../../bundles/etcd.0.9.2" ,
713+ image .SimpleReference ("quay.io/test/prometheus.0.22.2" ): "../../bundles/prometheus.0.22.2" ,
714+ }
715+ expectedErr := errors .NewAggregate ([]error {
716+ fmt .Errorf ("Invalid bundle %s, bundle specifies a non-existent replacement %s" , "etcdoperator.v0.9.2" , "etcdoperator.v0.9.0" ),
717+ fmt .Errorf ("Invalid bundle %s, bundle specifies a non-existent replacement %s" , "prometheusoperator.0.22.2" , "prometheusoperator.0.15.0" ),
718+ })
719+ require .ElementsMatch (t , expectedErr , populate (add ))
720+ }
721+
689722func TestDeprecateBundle (t * testing.T ) {
690723 type args struct {
691724 bundles []string
@@ -898,6 +931,34 @@ func TestOverwrite(t *testing.T) {
898931 args args
899932 expected expected
900933 }{
934+ {
935+ description : "OverwriteBundle/DefaultBehavior" ,
936+ args : args {
937+ firstAdd : getBundleRefs ([]string {"prometheus.0.14.0" }),
938+ secondAdd : map [image.Reference ]string {
939+ image .SimpleReference ("quay.io/test/etcd.0.9.2" ): "../../bundles/etcd.0.9.2" ,
940+ image .SimpleReference ("quay.io/test/prometheus.0.22.2" ): "../../bundles/prometheus.0.22.2" ,
941+ },
942+ overwrites : nil ,
943+ },
944+ expected : expected {
945+ err : errors .NewAggregate ([]error {
946+ fmt .Errorf ("Invalid bundle %s, bundle specifies a non-existent replacement %s" , "etcdoperator.v0.9.2" , "etcdoperator.v0.9.0" ),
947+ fmt .Errorf ("Invalid bundle %s, bundle specifies a non-existent replacement %s" , "prometheusoperator.0.22.2" , "prometheusoperator.0.15.0" ),
948+ }),
949+ remainingBundles : []string {
950+ "quay.io/test/prometheus.0.14.0/preview" ,
951+ },
952+ remainingPkgChannels : pkgChannel {
953+ "prometheus" : []string {
954+ "preview" ,
955+ },
956+ },
957+ remainingDefaultChannels : map [string ]string {
958+ "prometheus" : "preview" ,
959+ },
960+ },
961+ },
901962 {
902963 description : "OverwriteBundle/SimpleCsvChange" ,
903964 args : args {
0 commit comments