File tree Expand file tree Collapse file tree 2 files changed +38
-2
lines changed
site/src/components/WorkspaceScheduleForm Expand file tree Collapse file tree 2 files changed +38
-2
lines changed Original file line number Diff line number Diff line change @@ -57,6 +57,22 @@ describe("validationSchema", () => {
5757 expect ( validate ) . toThrowError ( Language . errorNoDayOfWeek )
5858 } )
5959
60+ it ( "disallows empty startTime when at least one day is set" , ( ) => {
61+ const values : WorkspaceScheduleFormValues = {
62+ ...valid ,
63+ sunday : false ,
64+ monday : true ,
65+ tuesday : false ,
66+ wednesday : false ,
67+ thursday : false ,
68+ friday : false ,
69+ saturday : false ,
70+ startTime : "" ,
71+ }
72+ const validate = ( ) => validationSchema . validateSync ( values )
73+ expect ( validate ) . toThrowError ( Language . errorNoTime )
74+ } )
75+
6076 it ( "allows startTime 16:20" , ( ) => {
6177 const values : WorkspaceScheduleFormValues = {
6278 ...valid ,
Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ dayjs.extend(timezone)
2727
2828export const Language = {
2929 errorNoDayOfWeek : "Must set at least one day of week" ,
30+ errorNoTime : "Start time is required" ,
3031 errorTime : "Time must be in HH:mm format (24 hours)" ,
3132 errorTimezone : "Invalid timezone" ,
3233 daysOfWeekLabel : "Days of Week" ,
@@ -93,6 +94,25 @@ export const validationSchema = Yup.object({
9394
9495 startTime : Yup . string ( )
9596 . ensure ( )
97+ . test ( "required-if-day-selected" , Language . errorNoTime , function ( value ) {
98+ const parent = this . parent as WorkspaceScheduleFormValues
99+
100+ const isDaySelected = [
101+ parent . sunday ,
102+ parent . monday ,
103+ parent . tuesday ,
104+ parent . wednesday ,
105+ parent . thursday ,
106+ parent . friday ,
107+ parent . saturday ,
108+ ] . some ( ( day ) => day )
109+
110+ if ( isDaySelected ) {
111+ return value !== ""
112+ } else {
113+ return true
114+ }
115+ } )
96116 . test ( "is-time-string" , Language . errorTime , ( value ) => {
97117 if ( value === "" ) {
98118 return true
@@ -192,7 +212,7 @@ export const WorkspaceScheduleForm: FC<WorkspaceScheduleFormProps> = ({
192212 </ Link >
193213 </ > ,
194214 ) }
195- disabled = { isLoading || ! form . values . startTime }
215+ disabled = { isLoading }
196216 InputLabelProps = { {
197217 shrink : true ,
198218 } }
@@ -210,7 +230,7 @@ export const WorkspaceScheduleForm: FC<WorkspaceScheduleFormProps> = ({
210230 control = {
211231 < Checkbox
212232 checked = { checkbox . value }
213- disabled = { ! form . values . startTime || isLoading }
233+ disabled = { isLoading }
214234 onChange = { form . handleChange }
215235 name = { checkbox . name }
216236 color = "primary"
You can’t perform that action at this time.
0 commit comments