github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/cmd/kubeblocks/list_versions_test.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package kubeblocks 21 22 import ( 23 . "github.com/onsi/ginkgo/v2" 24 . "github.com/onsi/gomega" 25 26 "github.com/Masterminds/semver/v3" 27 "github.com/spf13/cobra" 28 "k8s.io/cli-runtime/pkg/genericiooptions" 29 clientfake "k8s.io/client-go/rest/fake" 30 cmdtesting "k8s.io/kubectl/pkg/cmd/testing" 31 ) 32 33 var _ = Describe("kubeblocks list versions", func() { 34 var cmd *cobra.Command 35 var streams genericiooptions.IOStreams 36 var tf *cmdtesting.TestFactory 37 38 BeforeEach(func() { 39 streams, _, _, _ = genericiooptions.NewTestIOStreams() 40 tf = cmdtesting.NewTestFactory().WithNamespace(namespace) 41 tf.Client = &clientfake.RESTClient{} 42 }) 43 44 AfterEach(func() { 45 tf.Cleanup() 46 }) 47 48 It("list versions command", func() { 49 cmd = newListVersionsCmd(streams) 50 Expect(cmd).ShouldNot(BeNil()) 51 }) 52 53 It("run list-versions", func() { 54 o := listVersionsOption{ 55 IOStreams: streams, 56 } 57 By("setup searched version") 58 o.setupSearchedVersion() 59 Expect(o.version).ShouldNot(BeEmpty()) 60 61 By("search version") 62 versions := []string{"0.1.0", "0.1.0-alpha.0"} 63 semverVersions := make([]*semver.Version, len(versions)) 64 for i, v := range versions { 65 semVer, _ := semver.NewVersion(v) 66 semverVersions[i] = semVer 67 } 68 res, err := o.applyConstraint(semverVersions) 69 Expect(err).Should(Succeed()) 70 Expect(len(res)).Should(Equal(1)) 71 Expect(res[0].String()).Should(Equal("0.1.0")) 72 73 By("search version with devel") 74 o.devel = true 75 o.setupSearchedVersion() 76 res, err = o.applyConstraint(semverVersions) 77 Expect(err).Should(Succeed()) 78 Expect(len(res)).Should(Equal(2)) 79 80 // TODO: use a mock helm chart to test 81 By("list versions") 82 Expect(o.listVersions()).Should(Succeed()) 83 }) 84 })