This is an automated email from the ASF dual-hosted git repository.

aldettinger pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/master by this push:
     new 740e1f6  Added unit tests for the quarkus trait #255
740e1f6 is described below

commit 740e1f6cac1be983ae05344ba0c1a283d04c3516
Author: aldettinger <aldettin...@gmail.com>
AuthorDate: Fri Jan 17 18:53:04 2020 +0100

    Added unit tests for the quarkus trait #255
---
 pkg/trait/quarkus_test.go | 258 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 258 insertions(+)

diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
new file mode 100644
index 0000000..dbc3aed
--- /dev/null
+++ b/pkg/trait/quarkus_test.go
@@ -0,0 +1,258 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package trait
+
+import (
+       "testing"
+
+       v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
+
+       "github.com/apache/camel-k/pkg/builder"
+       "github.com/apache/camel-k/pkg/util/camel"
+       "github.com/apache/camel-k/pkg/util/envvar"
+       "github.com/stretchr/testify/assert"
+)
+
+func TestConfigureQuarkusTraitShouldSucceed(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       configured, err := quarkusTrait.Configure(environment)
+
+       assert.True(t, configured)
+       assert.Nil(t, err)
+}
+
+func TestConfigureDisabledQuarkusTraitShouldFail(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       quarkusTrait.Enabled = new(bool)
+
+       configured, err := quarkusTrait.Configure(environment)
+
+       assert.False(t, configured)
+       assert.Nil(t, err)
+}
+
+func TestApplyQuarkusTraitDoesNothing(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       err := quarkusTrait.Apply(environment)
+
+       assert.Nil(t, err)
+}
+
+func TestQuarkusTraitAddBuildStepsShouldSucceed(t *testing.T) {
+       quarkusTrait, _ := createNominalQuarkusTest()
+
+       task := &v1.BuilderTask{
+               Steps: builder.StepIDsFor(builder.DefaultSteps...),
+       }
+
+       quarkusTrait.addBuildSteps(task)
+
+       assert.Len(t, task.Steps, 8)
+}
+
+func TestQuarkusTraitAddRuntimeDependenciesShouldSucceed(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       err := quarkusTrait.addRuntimeDependencies(environment)
+
+       assert.Nil(t, err)
+       assert.Len(t, environment.Integration.Status.Dependencies, 2)
+}
+
+func TestQuarkusTraitAddRuntimeDependenciesWithKnativeLoaderShouldSucceed(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Integration.Spec.Sources[0].Loader = "knative-source"
+
+       err := quarkusTrait.addRuntimeDependencies(environment)
+
+       assert.Nil(t, err)
+       assert.Len(t, environment.Integration.Status.Dependencies, 4)
+}
+
+func TestQuarkusTraitAddRuntimeDependenciesWithUnsupportedLanguageShouldFail(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Integration.Spec.Sources[0].Language = 
"unsupported-language"
+
+       err := quarkusTrait.addRuntimeDependencies(environment)
+
+       assert.NotNil(t, err)
+       assert.Equal(t, "unsupported language for Quarkus runtime: 
unsupported-language (native=false)", err.Error())
+       assert.Len(t, environment.Integration.Status.Dependencies, 0)
+}
+
+func TestQuarkusTraitAddRuntimeDependenciesWithouSourceDoesNothing(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Integration.Spec.Sources = nil
+
+       err := quarkusTrait.addRuntimeDependencies(environment)
+
+       assert.Nil(t, err)
+       assert.Len(t, environment.Integration.Status.Dependencies, 0)
+}
+
+func TestQuarkusTraitAddContainerEnvironmentShouldSucceed(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       quarkusTrait.addContainerEnvironment(environment)
+
+       assert.NotNil(t, envvar.Get(environment.EnvVars, envVarAppJAR))
+}
+
+func TestQuarkusTraitAddRuntimeDependencyShouldSucceed(t *testing.T) {
+       dependency := "depA"
+       dependencies := make([]string, 0)
+       addRuntimeDependency(dependency, &dependencies)
+       assert.Len(t, dependencies, 1)
+       assert.Equal(t, "mvn:org.apache.camel.k/depA", dependencies[0])
+}
+
+func TestQuarkusTraitDetermineQuarkusVersionShouldReturnDefaultVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       version := quarkusTrait.determineQuarkusVersion(environment)
+
+       assert.NotNil(t, version)
+}
+
+func TestQuarkusTraitDetermineQuarkusVersionShouldReturnTraitVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       quarkusTrait.QuarkusVersion = "0.0.5-from-trait"
+
+       version := quarkusTrait.determineQuarkusVersion(environment)
+
+       assert.Equal(t, "0.0.5-from-trait", version)
+}
+
+func TestQuarkusTraitDetermineQuarkusVersionShouldReturnIntegrationVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Integration.Status.RuntimeProvider = &v1.RuntimeProvider{
+               Quarkus: &v1.QuarkusRuntimeProvider{
+                       QuarkusVersion: "0.0.5-from-integration",
+               },
+       }
+
+       version := quarkusTrait.determineQuarkusVersion(environment)
+
+       assert.Equal(t, "0.0.5-from-integration", version)
+}
+
+func 
TestQuarkusTraitDetermineQuarkusVersionShouldReturnIntegrationKitVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.IntegrationKit = &v1.IntegrationKit{
+               Status: v1.IntegrationKitStatus{
+                       RuntimeProvider: &v1.RuntimeProvider{
+                               Quarkus: &v1.QuarkusRuntimeProvider{
+                                       QuarkusVersion: 
"0.0.5-from-integration-kit",
+                               },
+                       },
+               },
+       }
+
+       version := quarkusTrait.determineQuarkusVersion(environment)
+
+       assert.Equal(t, "0.0.5-from-integration-kit", version)
+}
+
+func TestQuarkusTraitDetermineQuarkusVersionShouldReturnPlatformVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Platform.Status.Build.RuntimeProvider = &v1.RuntimeProvider{
+               Quarkus: &v1.QuarkusRuntimeProvider{
+                       QuarkusVersion: "0.0.5-from-platform",
+               },
+       }
+
+       version := quarkusTrait.determineQuarkusVersion(environment)
+
+       assert.Equal(t, "0.0.5-from-platform", version)
+}
+
+func TestQuarkusTraitDetermineCamelQuarkusVersionShouldReturnDefaultVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+
+       version := quarkusTrait.determineCamelQuarkusVersion(environment)
+
+       assert.NotNil(t, version)
+}
+
+func 
TestQuarkusTraitDetermineCamelQuarkusVersionShouldReturnIntegrationVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Integration.Status.RuntimeProvider = &v1.RuntimeProvider{
+               Quarkus: &v1.QuarkusRuntimeProvider{
+                       CamelQuarkusVersion: "1.0.5-from-integration",
+               },
+       }
+
+       version := quarkusTrait.determineCamelQuarkusVersion(environment)
+
+       assert.Equal(t, "1.0.5-from-integration", version)
+}
+
+func 
TestQuarkusTraitDetermineCamelQuarkusVersionShouldReturnIntegrationKitVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.IntegrationKit = &v1.IntegrationKit{
+               Status: v1.IntegrationKitStatus{
+                       RuntimeProvider: &v1.RuntimeProvider{
+                               Quarkus: &v1.QuarkusRuntimeProvider{
+                                       CamelQuarkusVersion: 
"1.0.5-from-integration-kit",
+                               },
+                       },
+               },
+       }
+
+       version := quarkusTrait.determineCamelQuarkusVersion(environment)
+
+       assert.Equal(t, "1.0.5-from-integration-kit", version)
+}
+
+func TestQuarkusTraitDetermineCamelQuarkusVersionShouldReturnPlatformVersion(t 
*testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       environment.Platform.Status.Build.RuntimeProvider = &v1.RuntimeProvider{
+               Quarkus: &v1.QuarkusRuntimeProvider{
+                       CamelQuarkusVersion: "1.0.5-from-platform",
+               },
+       }
+
+       version := quarkusTrait.determineCamelQuarkusVersion(environment)
+
+       assert.Equal(t, "1.0.5-from-platform", version)
+}
+
+func createNominalQuarkusTest() (*quarkusTrait, *Environment) {
+
+       trait := newQuarkusTrait()
+       enabled := true
+       trait.Enabled = &enabled
+
+       environment := &Environment{
+               CamelCatalog: &camel.RuntimeCatalog{},
+               Integration: &v1.Integration{
+                       Spec: v1.IntegrationSpec{
+                               Sources: []v1.SourceSpec{
+                                       {
+                                               Language: v1.LanguageJavaSource,
+                                       },
+                               },
+                       },
+               },
+               Platform: &v1.IntegrationPlatform{},
+       }
+
+       return trait, environment
+}

Reply via email to