github.com/c3pm-labs/c3pm@v0.3.0/ctpm/remove_test.go (about)

     1  package ctpm_test
     2  
     3  import (
     4  	"github.com/c3pm-labs/c3pm/config"
     5  	"github.com/c3pm-labs/c3pm/config/manifest"
     6  	"github.com/c3pm-labs/c3pm/ctpm"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	"os"
    10  	"path/filepath"
    11  )
    12  
    13  var _ = Describe("Remove", func() {
    14  	Describe("Remove dependencies", func() {
    15  		var projectFolder = getTestFolder("RemoveTestFolder")
    16  		var projectName = "Test-Remove"
    17  		var projectType = manifest.Executable
    18  		var projectDesc = "description"
    19  		var projectLicense = "MIT"
    20  		var dependencies = map[string]string{
    21  			"calculator":  "1.0.0",
    22  			"sort":        "1.0.0",
    23  			"simple-math": "1.0.0",
    24  			"super-math":  "1.0.0",
    25  		}
    26  		var pc *config.ProjectConfig
    27  		err := os.MkdirAll(projectFolder, os.ModePerm)
    28  		Ω(err).ShouldNot(HaveOccurred())
    29  
    30  		BeforeEach(func() {
    31  			m := manifest.New()
    32  			m.Name = projectName
    33  			m.Version, err = manifest.VersionFromString("1.0.0")
    34  			Ω(err).ShouldNot(HaveOccurred())
    35  			m.Type = projectType
    36  			m.License = projectLicense
    37  			m.Description = projectDesc
    38  			m.Dependencies = dependencies
    39  
    40  			pc = &config.ProjectConfig{Manifest: m, ProjectRoot: projectFolder}
    41  
    42  			_, err = os.Create(filepath.Join(projectFolder, "c3pm.yml"))
    43  			Ω(err).ShouldNot(HaveOccurred())
    44  		})
    45  		AfterEach(func() {
    46  			os.Remove(filepath.Join(projectFolder, "c3pm.yml"))
    47  		})
    48  
    49  		It("remove one dependency", func() {
    50  			toRemove := []string{"calculator"}
    51  			err := ctpm.Remove(pc, ctpm.RemoveOptions{Dependencies: toRemove})
    52  			Ω(err).ShouldNot(HaveOccurred())
    53  			_, ok := pc.Manifest.Dependencies[toRemove[0]]
    54  			Ω(ok).Should(BeFalse())
    55  
    56  		})
    57  		It("remove several dependencies at the same time", func() {
    58  			toRemove := []string{"calculator", "sort", "simple-math"}
    59  			err := ctpm.Remove(pc, ctpm.RemoveOptions{Dependencies: toRemove})
    60  			Ω(err).ShouldNot(HaveOccurred())
    61  			for _, dep := range toRemove {
    62  				_, ok := pc.Manifest.Dependencies[dep]
    63  				Ω(ok).Should(BeFalse())
    64  			}
    65  		})
    66  		It("remove unexisting dependency", func() {
    67  			toRemove := []string{"toto"}
    68  			err := ctpm.Remove(pc, ctpm.RemoveOptions{Dependencies: toRemove})
    69  			Ω(err).ShouldNot(HaveOccurred())
    70  			for _, dep := range toRemove {
    71  				_, ok := pc.Manifest.Dependencies[dep]
    72  				Ω(ok).Should(BeFalse())
    73  			}
    74  		})
    75  		It("remove dependency from an empty dependency array", func() {
    76  			pc.Manifest.Dependencies = map[string]string{}
    77  			toRemove := []string{"toto"}
    78  			err := ctpm.Remove(pc, ctpm.RemoveOptions{Dependencies: toRemove})
    79  			Ω(err).Should(HaveOccurred())
    80  		})
    81  		It("remove dependency from an nil dependency array", func() {
    82  			pc.Manifest.Dependencies = nil
    83  			toRemove := []string{"toto"}
    84  			err := ctpm.Remove(pc, ctpm.RemoveOptions{Dependencies: toRemove})
    85  			Ω(err).Should(HaveOccurred())
    86  		})
    87  	})
    88  })