mirror of https://github.com/0xERR0R/blocky.git
108 lines
2.2 KiB
Go
108 lines
2.2 KiB
Go
package config
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Schedules", func() {
|
|
const (
|
|
group = "testGroup"
|
|
)
|
|
|
|
var (
|
|
schedules Schedules
|
|
ctx context.Context
|
|
cancel context.CancelFunc
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
schedules = make(Schedules)
|
|
ctx, cancel = context.WithCancel(context.Background())
|
|
|
|
hr, _ := parseHoursRange("09:00-17:00")
|
|
|
|
schedules[group] = []Schedule{
|
|
{
|
|
Days: []day{day(time.Saturday)},
|
|
HoursRanges: []hoursRange{hr},
|
|
},
|
|
}
|
|
})
|
|
|
|
AfterEach(func() {
|
|
cancel()
|
|
})
|
|
|
|
Describe("Refresh", func() {
|
|
When("refresh loop running", func() {
|
|
go schedules.Refresh(ctx, nil)
|
|
|
|
time.Sleep(time.Second)
|
|
|
|
It("should set the Active field", func() {
|
|
now := time.Now()
|
|
weekDay := now.Weekday()
|
|
hour := now.Hour()
|
|
|
|
if weekDay == time.Saturday && hour >= 9 && hour < 17 {
|
|
Expect(schedules[group][0].Active).To(BeTrue())
|
|
} else {
|
|
Expect(schedules[group][0].Active).To(BeFalse())
|
|
}
|
|
})
|
|
})
|
|
|
|
It("should set the Active field to true when schedule is active", func() {
|
|
fakeTime := getFakeTime(time.Saturday, "10:00")
|
|
|
|
go schedules.Refresh(ctx, fakeTime)
|
|
time.Sleep(time.Second)
|
|
|
|
Expect(schedules[group][0].Active).To(BeTrue())
|
|
})
|
|
|
|
It("should set the Active field to false when schedule is inactive", func() {
|
|
fakeTime := getFakeTime(time.Saturday, "19:00")
|
|
schedules[group][0].Active = true
|
|
|
|
go schedules.Refresh(ctx, fakeTime)
|
|
time.Sleep(time.Second)
|
|
|
|
Expect(schedules[group][0].Active).To(BeFalse())
|
|
})
|
|
})
|
|
|
|
Describe("IsActive", func() {
|
|
When("schedule is active", func() {
|
|
It("should return true", func() {
|
|
fakeTime := getFakeTime(time.Saturday, "10:00")
|
|
isActive := schedules.IsActive(group, fakeTime)
|
|
Expect(isActive).To(BeTrue())
|
|
})
|
|
})
|
|
|
|
When("schedule is inactive", func() {
|
|
It("should return false", func() {
|
|
fakeTime := getFakeTime(time.Sunday, "10:00")
|
|
isActive := schedules.IsActive(group, fakeTime)
|
|
Expect(isActive).To(BeFalse())
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
func getFakeTime(wk time.Weekday, hr string) func() time.Time {
|
|
return func() time.Time {
|
|
t, err := time.Parse("15:04", hr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return getRefTime(t).AddDate(0, 0, int(wk)+1)
|
|
}
|
|
}
|