client/pkg/commands/trigger/update_flags_test.go

127 lines
3.6 KiB
Go

// Copyright © 2019 The Knative Authors
//
// Licensed 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 trigger
import (
"sort"
"testing"
"gotest.tools/v3/assert"
)
func TestGetFilters(t *testing.T) {
t.Run("get multiple filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type=abc.edf.ghi", "attr=value"},
}
created, err := createFlag.GetFilters()
wanted := map[string]string{
"type": "abc.edf.ghi",
"attr": "value",
}
assert.NilError(t, err, "Filter should be created")
assert.DeepEqual(t, wanted, created)
})
t.Run("get filters with errors", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type"},
}
_, err := createFlag.GetFilters()
assert.ErrorContains(t, err, "Invalid --filter")
createFlag = TriggerUpdateFlags{
Filters: []string{"type="},
}
filters, _ := createFlag.GetFilters()
wanted := map[string]string{"type": ""}
assert.DeepEqual(t, wanted, filters)
createFlag = TriggerUpdateFlags{
Filters: []string{"=value"},
}
_, err = createFlag.GetFilters()
assert.ErrorContains(t, err, "Invalid --filter")
createFlag = TriggerUpdateFlags{
Filters: []string{"="},
}
_, err = createFlag.GetFilters()
assert.ErrorContains(t, err, "Invalid --filter")
})
t.Run("get duplicate filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type=foo", "type=bar"},
}
_, err := createFlag.GetFilters()
assert.ErrorContains(t, err, "duplicate")
})
}
func TestGetUpdateFilters(t *testing.T) {
t.Run("get updated filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type=abc.edf.ghi", "attr=value"},
}
updated, removed, err := createFlag.GetUpdateFilters()
wanted := map[string]string{
"type": "abc.edf.ghi",
"attr": "value",
}
assert.NilError(t, err, "UpdateFilter should be created")
assert.DeepEqual(t, wanted, updated)
assert.Assert(t, len(removed) == 0)
})
t.Run("get deleted filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type-", "attr-"},
}
updated, removed, err := createFlag.GetUpdateFilters()
wanted := []string{"type", "attr"}
sort.Strings(wanted)
sort.Strings(removed)
assert.NilError(t, err, "UpdateFilter should be created")
assert.DeepEqual(t, wanted, removed)
assert.Assert(t, len(updated) == 0)
})
t.Run("get updated & deleted filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type=foo", "attr-", "source=bar", "env-"},
}
updated, removed, err := createFlag.GetUpdateFilters()
wantedRemoved := []string{"attr", "env"}
wantedUpdated := map[string]string{
"type": "foo",
"source": "bar",
}
sort.Strings(wantedRemoved)
sort.Strings(removed)
assert.NilError(t, err, "UpdateFilter should be created")
assert.DeepEqual(t, wantedRemoved, removed)
assert.DeepEqual(t, wantedUpdated, updated)
})
t.Run("update duplicate filters", func(t *testing.T) {
createFlag := TriggerUpdateFlags{
Filters: []string{"type=foo", "type=bar"},
}
_, _, err := createFlag.GetUpdateFilters()
assert.ErrorContains(t, err, "duplicate")
})
}