github.com/blend/go-sdk@v1.20220411.3/cron/interval_schedule_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2022 - Present. Blend Labs, Inc. All rights reserved
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file.
     5  
     6  */
     7  
     8  package cron
     9  
    10  import (
    11  	"testing"
    12  	"time"
    13  
    14  	"github.com/blend/go-sdk/assert"
    15  )
    16  
    17  func Test_IntervalSchedule(t *testing.T) {
    18  	t.Parallel()
    19  	its := assert.New(t)
    20  
    21  	its.Equal(time.Second, EverySecond().Every)
    22  	its.Equal(time.Minute, EveryMinute().Every)
    23  	its.Equal(time.Hour, EveryHour().Every)
    24  	its.Equal(time.Millisecond, Every(time.Millisecond).Every)
    25  
    26  	schedule := EveryHour()
    27  	its.Equal("@every 1h0m0s", schedule.String())
    28  
    29  	now := time.Now().UTC()
    30  	firstRun := schedule.Next(Zero)
    31  	firstRunDiff := firstRun.Sub(now)
    32  	its.InDelta(float64(firstRunDiff), float64(1*time.Hour), float64(1*time.Second))
    33  	next := schedule.Next(now)
    34  	its.True(next.After(now))
    35  }