-- Copyright (C) 2017 Red Hat, Inc. -- -- This file is part of bdcs-api. -- -- bdcs-api is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- bdcs-api is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with bdcs-api. If not, see . module RecipesSpec where import BDCS.API.Customization(emptyCustomization) import BDCS.API.Recipes(runGitRepoTests, runWorkspaceTests, recipeDiff, RecipeDiffType(..), RecipeDiffEntry(..)) import BDCS.API.Recipe(Recipe(..), RecipeModule(..)) import Test.Hspec -- | Recipe to be used for diff test testOldRecipe :: Recipe testOldRecipe = Recipe {rName = "test-server", rVersion = Just "0.1.2", rDescription = "Testing diff of Recipe records", rPackages = [RecipeModule {rmName = "tmux", rmVersion = "2.2"}, RecipeModule {rmName = "openssh-server", rmVersion = "6.6.*"}, RecipeModule {rmName = "rsync", rmVersion = "3.0.*"}], rModules = [RecipeModule {rmName = "httpd", rmVersion = "2.4.*"}, RecipeModule {rmName = "mod_auth_kerb", rmVersion = "5.4"}, RecipeModule {rmName = "mod_ssl", rmVersion = "2.4.*"}, RecipeModule {rmName = "php", rmVersion = "5.4.*"}, RecipeModule {rmName = "php-mysql", rmVersion = "5.4.*"}], rCustomization = emptyCustomization } -- | Recipe to be used for diff test testNewRecipe :: Recipe testNewRecipe = Recipe {rName = "test-server", rVersion = Just "0.1.3", rDescription = "Testing diff of Recipe records, new version", rPackages = [RecipeModule {rmName = "tmux", rmVersion = "2.2"}, RecipeModule {rmName = "openssh-server", rmVersion = "6.7.*"}, RecipeModule {rmName = "vim-enhanced", rmVersion = "8.0.*"}], rModules = [RecipeModule {rmName = "httpd", rmVersion = "2.4.*"}, RecipeModule {rmName = "mod_auth_kerb", rmVersion = "5.5"}, RecipeModule {rmName = "mod_ssl", rmVersion = "2.4.*"}, RecipeModule {rmName = "php", rmVersion = "5.4.*"}, RecipeModule {rmName = "perl", rmVersion = "6.0"}], rCustomization = emptyCustomization } testDiffResults :: [RecipeDiffEntry] testDiffResults = [RecipeDiffEntry {rdeOld = Description {rdtDescription = "Testing diff of Recipe records"}, rdeNew = Description {rdtDescription = "Testing diff of Recipe records, new version"}}, RecipeDiffEntry {rdeOld = Version {rdtVersion = Just "0.1.2"}, rdeNew = Version {rdtVersion = Just "0.1.3"}}, RecipeDiffEntry {rdeOld = Module {rdtModule = RecipeModule {rmName = "php-mysql", rmVersion = "5.4.*"}}, rdeNew = None}, RecipeDiffEntry {rdeOld = None, rdeNew = Module {rdtModule = RecipeModule {rmName = "perl", rmVersion = "6.0"}}}, RecipeDiffEntry {rdeOld = Module {rdtModule = RecipeModule {rmName = "mod_auth_kerb", rmVersion = "5.4"}}, rdeNew = Module {rdtModule = RecipeModule {rmName = "mod_auth_kerb", rmVersion = "5.5"}}}, RecipeDiffEntry {rdeOld = Package {rdtPackage = RecipeModule {rmName = "rsync", rmVersion = "3.0.*"}}, rdeNew = None}, RecipeDiffEntry {rdeOld = None, rdeNew = Package {rdtPackage = RecipeModule {rmName = "vim-enhanced", rmVersion = "8.0.*"}}}, RecipeDiffEntry {rdeOld = Package {rdtPackage = RecipeModule {rmName = "openssh-server", rmVersion = "6.6.*"}}, rdeNew = Package {rdtPackage = RecipeModule {rmName = "openssh-server", rmVersion = "6.7.*"}}}] {-# ANN module ("HLint: ignore Redundant do Found" :: String) #-} spec :: Spec spec = describe "Recipes" $ do it "Ran a series of tests on storing Recipes in a Git repo" $ runGitRepoTests `shouldReturn` True it "Ran a series of tests on storing Recipes in a Workspace" $ runWorkspaceTests `shouldReturn` True it "Test Recipe Diff" $ recipeDiff testOldRecipe testNewRecipe `shouldBe` testDiffResults