Skip to content

Commit

Permalink
test: check hibernation works with filtering (#153)
Browse files Browse the repository at this point in the history
  • Loading branch information
plastikfan committed Sep 4, 2024
1 parent b2f14d0 commit 834639b
Showing 1 changed file with 101 additions and 19 deletions.
120 changes: 101 additions & 19 deletions internal/feat/hiber/hibernate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/snivilised/traverse/internal/helpers"
"github.com/snivilised/traverse/internal/services"
"github.com/snivilised/traverse/internal/third/lo"
"github.com/snivilised/traverse/pref"
)

var _ = Describe("feature", Ordered, func() {
Expand Down Expand Up @@ -458,9 +459,9 @@ var _ = Describe("feature", Ordered, func() {
// this has been turned into a table test case, see below
})

XDescribeTable("filter and listen both active",
DescribeTable("filter and listen both active",
func(ctx SpecContext, entry *hibernateTE) {
path := helpers.Path(root, "")
path := helpers.Path(root, "RETRO-WAVE")

// THIS IS BOILER-PLATE TEST IMPLEMENTATION, DON'T
// TAKE THIS SERIOUSLY.
Expand All @@ -469,7 +470,7 @@ var _ = Describe("feature", Ordered, func() {
&tv.Using{
Root: path,
Subscription: entry.Subscription,
Handler: helpers.FoldersCallback("EARLY-EXIT-😴"),
Handler: entry.Callback,
GetReadDirFS: func() fs.ReadDirFS {
return FS
},
Expand All @@ -478,11 +479,39 @@ var _ = Describe("feature", Ordered, func() {
},
},

tv.WithHibernationFilterSleep(
&core.FilterDef{
Type: entry.Hibernate.SleepAt.Type,
Description: entry.Hibernate.SleepAt.Description,
Pattern: entry.Hibernate.SleepAt.Pattern,
tv.WithOnBegin(helpers.Begin("🛡️")),
tv.WithOnEnd(helpers.End("🏁")),

tv.WithFilter(&pref.FilterOptions{
Node: &core.FilterDef{
Type: enums.FilterTypeGlob,
Description: "items with '.flac' suffix",
Pattern: "*.flac",
Scope: enums.ScopeFile,
},
}),

tv.IfOptionF(entry.Hibernate != nil && entry.Hibernate.WakeAt != nil,
func() pref.Option {
return tv.WithHibernationFilterWake(
&core.FilterDef{
Type: entry.Hibernate.WakeAt.Type,
Description: entry.Hibernate.WakeAt.Description,
Pattern: entry.Hibernate.WakeAt.Pattern,
},
)
},
),

tv.IfOptionF(entry.Hibernate != nil && entry.Hibernate.SleepAt != nil,
func() pref.Option {
return tv.WithHibernationFilterSleep(
&core.FilterDef{
Type: entry.Hibernate.SleepAt.Type,
Description: entry.Hibernate.SleepAt.Description,
Pattern: entry.Hibernate.SleepAt.Pattern,
},
)
},
),

Expand Down Expand Up @@ -519,31 +548,84 @@ var _ = Describe("feature", Ordered, func() {
func(entry *hibernateTE) string {
return fmt.Sprintf("🧪 ===> given: '%v', should: '%v'", entry.Given, entry.Should)
},

Entry(nil, &hibernateTE{
NaviTE: helpers.NaviTE{ // TBD
Given: "Folder Subscription",
Should: "apply filter within the listen range",
Subscription: enums.SubscribeFolders,
NaviTE: helpers.NaviTE{
Given: "File Subscription",
Should: "wake, then apply filter until the end",
Subscription: enums.SubscribeUniversal,
Callback: func(node *core.Node) error {
GinkgoWriter.Printf("---> WAKE-HIBERNATE-AND-FILTER-😵‍💫: '%v'\n", node.Path)

return nil
},
ExpectedNoOf: helpers.Quantities{
Files: 6,
Folders: 4,
},
},
Hibernate: &core.HibernateOptions{
WakeAt: &core.FilterDef{
Type: enums.FilterTypeGlob,
Description: "Wake At: Northern Council",
Pattern: "Northern Council",
Scope: enums.ScopeFolder,
},
},
}),

Entry(nil, &hibernateTE{
NaviTE: helpers.NaviTE{
Given: "File Subscription",
Should: "apply filter until sleep",
Subscription: enums.SubscribeUniversal,
Callback: func(node *core.Node) error {
GinkgoWriter.Printf("---> SLEEP-HIBERNATE-AND-FILTER-😴: '%v'\n", node.Path)

return nil
},
ExpectedNoOf: helpers.Quantities{
Files: 2,
Folders: 4,
},
},
Hibernate: &core.HibernateOptions{
SleepAt: &core.FilterDef{
Type: enums.FilterTypeGlob,
Description: "tbd ...",
Pattern: "tbd ...",
Description: "Sleep At: Northern Council",
Pattern: "Northern Council",
Scope: enums.ScopeFolder,
},
},
}),
Entry(nil, &hibernateTE{ // TBD

Entry(nil, &hibernateTE{
NaviTE: helpers.NaviTE{
Given: "File Subscription",
Should: "apply filter within the listen range",
Subscription: enums.SubscribeFiles,
Should: "apply filter within hibernation range",
Subscription: enums.SubscribeUniversal,
Callback: func(node *core.Node) error {
GinkgoWriter.Printf("---> SLEEP-HIBERNATE-AND-FILTER-😴: '%v'\n", node.Path)

return nil
},
ExpectedNoOf: helpers.Quantities{
Files: 4,
Folders: 2,
},
},
Hibernate: &core.HibernateOptions{
WakeAt: &core.FilterDef{
Type: enums.FilterTypeGlob,
Description: "Wake At: Northern Council",
Pattern: "Northern Council",
Scope: enums.ScopeFolder,
},
SleepAt: &core.FilterDef{
Type: enums.FilterTypeGlob,
Description: "tbd ...",
Pattern: "tbd ...",
Description: "Sleep At: Electric Youth",
Pattern: "Electric Youth",
Scope: enums.ScopeFolder,
},
},
}),
Expand Down

0 comments on commit 834639b

Please sign in to comment.