@@ -2,78 +2,103 @@ package test
22
33import (
44 "testing"
5+ "time"
6+
7+ "fyne.io/fyne/v2/test"
58
69 mocks "github.com/simmarn/punchclock/mocks/github.com/simmarn/punchclock/pkg"
710 punchclock "github.com/simmarn/punchclock/pkg"
11+ "github.com/stretchr/testify/assert"
812 "github.com/stretchr/testify/mock"
913)
1014
11- /*
12- func TestAutoPause(t *testing.T) {
13- assert := assert.New(t)
14-
15- mockRs := MockRecordStorage(t)
16- mockPrefs := mocks.NewPreferencesWrapper(t)
17- mockPrefs.EXPECT().SetString(mock.Anything, mock.Anything)
18- mockPrefs.EXPECT().SetBool(mock.Anything, mock.Anything)
19- mockPrefs.EXPECT().GetBool(punchclock.PREFAUTOPAUSEACTIVE).Return(false).Once()
20- controller := punchclock.NewPunchclockController(mockRs, mockPrefs, nil)
21- mockPrefs.AssertCalled(t, "GetBool", punchclock.PREFAUTOPAUSEACTIVE)
22- assert.Equal(punchclock.WORKING, GetStatus(controller))
23-
24- start := time.Now().Format(punchclock.HHMMSS24h)
25- end := time.Now().Add(time.Minute).Format(punchclock.HHMMSS24h)
26- mockPrefs.EXPECT().GetString(punchclock.PREFAUTOPAUSESTART).Return(start)
27- mockPrefs.EXPECT().GetString(punchclock.PREFAUTOPAUSEEND).Return(end)
28- err := controller.SetAutoPauseInterval(start, end)
29- mockPrefs.AssertCalled(t, "SetString", punchclock.PREFAUTOPAUSESTART, start)
30- mockPrefs.AssertCalled(t, "SetString", punchclock.PREFAUTOPAUSEEND, end)
31- mockPrefs.AssertNumberOfCalls(t, "SetString", 2)
32- assert.Nil(err)
33- assert.Equal(punchclock.WORKING, GetStatus(controller))
34-
35- mockPrefs.EXPECT().GetBool(punchclock.PREFAUTOPAUSEACTIVE).Return(true).Once()
36- err = controller.SetAutoPause(true)
37- assert.Nil(err)
38- assert.Equal(punchclock.PAUSED, GetStatus(controller))
39-
40- mockPrefs.EXPECT().GetBool(punchclock.PREFAUTOPAUSEACTIVE).Return(false).Once()
41- controller.SetAutoPause(false)
42- assert.Equal(punchclock.WORKING, GetStatus(controller))
43-
44- mockPrefs.EXPECT().GetBool(punchclock.PREFAUTOPAUSEACTIVE).Return(true).Once()
45- controller.SetAutoPause(true)
46- assert.Equal(punchclock.PAUSED, GetStatus(controller))
47-
48- err = controller.SetAutoPauseInterval("11:00", "11:00")
49- assert.NotNil(err)
50- mockPrefs.AssertNumberOfCalls(t, "SetString", 2)
51-
52- err = controller.SetAutoPauseInterval("11:00", "12,00")
53- assert.NotNil(err)
54- mockPrefs.AssertNumberOfCalls(t, "SetString", 2)
55-
56- err = controller.SetAutoPauseInterval("eleven", "12:00")
57- assert.NotNil(err)
58- mockPrefs.AssertNumberOfCalls(t, "SetString", 2)
15+ func waitForStatus (c * punchclock.PunchclockController , expected string , t * testing.T ) {
16+ deadline := time .Now ().Add (500 * time .Millisecond )
17+ for time .Now ().Before (deadline ) {
18+ status , _ := c .Status .Get ()
19+ if status == expected {
20+ return
21+ }
22+ time .Sleep (10 * time .Millisecond )
23+ }
24+ status , _ := c .Status .Get ()
25+ if status != expected {
26+ t .Fatalf ("expected status %s, got %s" , expected , status )
5927 }
28+ }
6029
61- func TestAutoPauseNotSet(t *testing.T) {
62- assert := assert.New(t)
30+ func TestAutoPause (t * testing.T ) {
31+ app := test .NewApp ()
32+ defer app .Quit ()
33+ assert := assert .New (t )
34+
35+ mockRs := MockRecordStorage (t )
36+ mockPrefs := mocks .NewPreferencesWrapper (t )
37+ mockPrefs .EXPECT ().SetString (mock .Anything , mock .Anything )
38+ mockPrefs .EXPECT ().SetBool (mock .Anything , mock .Anything )
39+ mockPrefs .EXPECT ().GetBool (punchclock .PREFAUTOPAUSEACTIVE ).Return (false ).Once ()
40+ controller := punchclock .NewPunchclockController (mockRs , mockPrefs , nil )
41+ mockPrefs .AssertCalled (t , "GetBool" , punchclock .PREFAUTOPAUSEACTIVE )
42+ waitForStatus (controller , punchclock .WORKING , t )
43+ assert .Equal (punchclock .WORKING , GetStatus (controller ))
44+
45+ start := time .Now ().Format (punchclock .HHMMSS24h )
46+ end := time .Now ().Add (time .Minute ).Format (punchclock .HHMMSS24h )
47+ mockPrefs .EXPECT ().GetString (punchclock .PREFAUTOPAUSESTART ).Return (start )
48+ mockPrefs .EXPECT ().GetString (punchclock .PREFAUTOPAUSEEND ).Return (end )
49+ err := controller .SetAutoPauseInterval (start , end )
50+ mockPrefs .AssertCalled (t , "SetString" , punchclock .PREFAUTOPAUSESTART , start )
51+ mockPrefs .AssertCalled (t , "SetString" , punchclock .PREFAUTOPAUSEEND , end )
52+ mockPrefs .AssertNumberOfCalls (t , "SetString" , 2 )
53+ assert .Nil (err )
54+ waitForStatus (controller , punchclock .WORKING , t )
55+ assert .Equal (punchclock .WORKING , GetStatus (controller ))
56+
57+ mockPrefs .EXPECT ().GetBool (punchclock .PREFAUTOPAUSEACTIVE ).Return (true ).Once ()
58+ err = controller .SetAutoPause (true )
59+ assert .Nil (err )
60+ waitForStatus (controller , punchclock .PAUSED , t )
61+ assert .Equal (punchclock .PAUSED , GetStatus (controller ))
62+
63+ mockPrefs .EXPECT ().GetBool (punchclock .PREFAUTOPAUSEACTIVE ).Return (false ).Once ()
64+ controller .SetAutoPause (false )
65+ waitForStatus (controller , punchclock .WORKING , t )
66+ assert .Equal (punchclock .WORKING , GetStatus (controller ))
67+
68+ mockPrefs .EXPECT ().GetBool (punchclock .PREFAUTOPAUSEACTIVE ).Return (true ).Once ()
69+ controller .SetAutoPause (true )
70+ waitForStatus (controller , punchclock .PAUSED , t )
71+ assert .Equal (punchclock .PAUSED , GetStatus (controller ))
72+
73+ err = controller .SetAutoPauseInterval ("11:00" , "11:00" )
74+ assert .NotNil (err )
75+ mockPrefs .AssertNumberOfCalls (t , "SetString" , 2 )
76+
77+ err = controller .SetAutoPauseInterval ("11:00" , "12,00" )
78+ assert .NotNil (err )
79+ mockPrefs .AssertNumberOfCalls (t , "SetString" , 2 )
80+
81+ err = controller .SetAutoPauseInterval ("eleven" , "12:00" )
82+ assert .NotNil (err )
83+ mockPrefs .AssertNumberOfCalls (t , "SetString" , 2 )
84+ }
6385
64- mockPrefs := mocks.NewPreferencesWrapper(t)
65- mockPrefs.EXPECT().GetBool(punchclock.PREFAUTOPAUSEACTIVE).Return(false)
66- mockPrefs.EXPECT().GetString(punchclock.PREFAUTOPAUSESTART).Return("")
67- mockPrefs.EXPECT().GetString(punchclock.PREFAUTOPAUSEEND).Return("")
86+ func TestAutoPauseNotSet (t * testing.T ) {
87+ assert := assert .New (t )
6888
69- mockRs := MockRecordStorage(t)
70- controller := punchclock.NewPunchclockController(mockRs, mockPrefs, nil)
71- assert.Equal(punchclock.WORKING, GetStatus(controller))
89+ mockPrefs := mocks .NewPreferencesWrapper (t )
90+ mockPrefs .EXPECT ().GetBool (punchclock .PREFAUTOPAUSEACTIVE ).Return (false )
91+ mockPrefs .EXPECT ().GetString (punchclock .PREFAUTOPAUSESTART ).Return ("" )
92+ mockPrefs .EXPECT ().GetString (punchclock .PREFAUTOPAUSEEND ).Return ("" )
93+
94+ mockRs := MockRecordStorage (t )
95+ controller := punchclock .NewPunchclockController (mockRs , mockPrefs , nil )
96+ assert .Equal (punchclock .WORKING , GetStatus (controller ))
97+
98+ err := controller .SetAutoPause (true )
99+ assert .NotNil (err )
100+ }
72101
73- err := controller.SetAutoPause(true)
74- assert.NotNil(err)
75- }
76- */
77102func MockRecordStorage (t * testing.T ) punchclock.RecordStorage {
78103 mockRs := mocks .NewRecordStorage (t )
79104 mockRs .EXPECT ().Load ().Return (CreateRecordsForTest (), nil )
0 commit comments