71 lines
2.4 KiB
Go
71 lines
2.4 KiB
Go
// Licensed to Elasticsearch B.V. under one or more contributor
|
|
// license agreements. See the NOTICE file distributed with
|
|
// this work for additional information regarding copyright
|
|
// ownership. Elasticsearch B.V. 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 feature
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestBundle(t *testing.T) {
|
|
factory := func() {}
|
|
features := []Featurable{
|
|
New("libbeat.outputs", "elasticsearch", factory, &Details{stability: Stable}),
|
|
New("libbeat.outputs", "edge", factory, &Details{stability: Experimental}),
|
|
New("libbeat.input", "tcp", factory, &Details{stability: Beta}),
|
|
}
|
|
|
|
t.Run("Creates a new Bundle", func(t *testing.T) {
|
|
b := NewBundle(features...)
|
|
assert.Equal(t, 3, len(b.Features()))
|
|
})
|
|
|
|
t.Run("Filters feature based on stability", func(t *testing.T) {
|
|
b := NewBundle(features...)
|
|
new := b.Filter(Experimental)
|
|
assert.Equal(t, 1, len(new.Features()))
|
|
})
|
|
|
|
t.Run("Filters feature based on multiple different stability", func(t *testing.T) {
|
|
b := NewBundle(features...)
|
|
new := b.Filter(Experimental, Stable)
|
|
assert.Equal(t, 2, len(new.Features()))
|
|
})
|
|
|
|
t.Run("Creates a new Bundle from specified feature", func(t *testing.T) {
|
|
f1 := New("libbeat.outputs", "elasticsearch", factory, &Details{stability: Stable})
|
|
b := MustBundle(f1)
|
|
assert.Equal(t, 1, len(b.Features()))
|
|
})
|
|
|
|
t.Run("Creates a new Bundle with grouped features", func(t *testing.T) {
|
|
f1 := New("libbeat.outputs", "elasticsearch", factory, &Details{stability: Stable})
|
|
f2 := New("libbeat.outputs", "edge", factory, &Details{stability: Experimental})
|
|
f3 := New("libbeat.input", "tcp", factory, &Details{stability: Beta})
|
|
f4 := New("libbeat.input", "udp", factory, &Details{stability: Beta})
|
|
|
|
b := MustBundle(
|
|
MustBundle(f1),
|
|
MustBundle(f2),
|
|
MustBundle(f3, f4),
|
|
)
|
|
|
|
assert.Equal(t, 4, len(b.Features()))
|
|
})
|
|
}
|