Skip to content

Commit 6747d38

Browse files
author
Brandon Poe
committed
Fixing bug in creating Monthly Day of Week schedules
1 parent 67b66d3 commit 6747d38

File tree

2 files changed

+117
-1
lines changed

2 files changed

+117
-1
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
namespace Microsoft.Azure.Commands.Automation.Test.UnitTests.Models
16+
{
17+
using System;
18+
using System.Collections.Generic;
19+
using Microsoft.Azure.Commands.Automation.Cmdlet;
20+
using Microsoft.Azure.Management.Automation.Models;
21+
using Microsoft.WindowsAzure.Commands.ScenarioTest;
22+
using Xunit;
23+
24+
public class ScheduleTest
25+
{
26+
[Fact]
27+
[Trait(Category.Automation, Category.CheckIn)]
28+
public void ScheduleConstructorHandlesMonthlyDayOfWeekSchedule()
29+
{
30+
const string expectedDayOfWeek = "Saturday";
31+
const int occurrence = 1;
32+
33+
var sdkSchedule = new Schedule()
34+
{
35+
Frequency = "Month",
36+
AdvancedSchedule = new AdvancedSchedule()
37+
{
38+
WeekDays = null,
39+
MonthDays = null,
40+
MonthlyOccurrences = new List<AdvancedScheduleMonthlyOccurrence>()
41+
{
42+
new AdvancedScheduleMonthlyOccurrence()
43+
{
44+
Day = expectedDayOfWeek,
45+
Occurrence = occurrence,
46+
},
47+
},
48+
},
49+
};
50+
51+
var schedule = new Model.Schedule("anyRg", "anyAccount", sdkSchedule);
52+
53+
Assert.NotNull(schedule.MonthlyScheduleOptions);
54+
Assert.Null(schedule.WeeklyScheduleOptions);
55+
56+
Assert.Null(schedule.MonthlyScheduleOptions.DaysOfMonth);
57+
Assert.NotNull(schedule.MonthlyScheduleOptions.DayOfWeek);
58+
59+
Assert.Equal(expectedDayOfWeek, schedule.MonthlyScheduleOptions.DayOfWeek.Day);
60+
Assert.Equal(Enum.GetName(typeof(DayOfWeekOccurrence), occurrence), schedule.MonthlyScheduleOptions.DayOfWeek.Occurrence);
61+
}
62+
63+
[Fact]
64+
[Trait(Category.Automation, Category.CheckIn)]
65+
public void ScheduleConstructorHandlesMonthlyDayOfMonthSchedule()
66+
{
67+
var sdkSchedule = new Schedule()
68+
{
69+
Frequency = "Month",
70+
AdvancedSchedule = new AdvancedSchedule()
71+
{
72+
WeekDays = null,
73+
MonthDays = new List<int>() { 1, 15, },
74+
MonthlyOccurrences = null,
75+
},
76+
};
77+
78+
var schedule = new Model.Schedule("anyRg", "anyAccount", sdkSchedule);
79+
80+
Assert.NotNull(schedule.MonthlyScheduleOptions);
81+
Assert.Null(schedule.WeeklyScheduleOptions);
82+
83+
Assert.NotNull(schedule.MonthlyScheduleOptions.DaysOfMonth);
84+
Assert.Null(schedule.MonthlyScheduleOptions.DayOfWeek);
85+
}
86+
87+
[Fact]
88+
[Trait(Category.Automation, Category.CheckIn)]
89+
public void ScheduleConstructorHandlesWeeklySchedule()
90+
{
91+
var sdkSchedule = new Schedule()
92+
{
93+
Frequency = "Week",
94+
AdvancedSchedule = new AdvancedSchedule()
95+
{
96+
WeekDays = new List<string>() { "Monday" },
97+
MonthDays = null,
98+
MonthlyOccurrences = null,
99+
},
100+
};
101+
102+
var schedule = new Model.Schedule("anyRg", "anyAccount", sdkSchedule);
103+
104+
Assert.Null(schedule.MonthlyScheduleOptions);
105+
Assert.NotNull(schedule.WeeklyScheduleOptions);
106+
107+
Assert.NotNull(schedule.WeeklyScheduleOptions.DaysOfWeek);
108+
}
109+
}
110+
}

src/Automation/Automation/Model/Schedule.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ private WeeklyScheduleOptions CreateWeeklyScheduleOptions(Microsoft.Azure.Manage
233233
private static WeeklyScheduleOptions CreateWeeklyScheduleOptions(Microsoft.Azure.Management.Automation.Models.AdvancedSchedule advSchedule)
234234
{
235235
return advSchedule == null
236+
|| advSchedule.WeekDays == null
236237
? null
237238
: new WeeklyScheduleOptions()
238239
{
@@ -301,7 +302,12 @@ private static string GetDayOfWeekOccurrence(int? dayOfWeekOccurrence)
301302
/// </returns>
302303
private static IList<DaysOfMonth> GetDaysOfMonth(IList<int> daysOfMonth)
303304
{
304-
return daysOfMonth.Select(value => (DaysOfMonth)value).ToList();
305+
if (daysOfMonth != null)
306+
{
307+
return daysOfMonth.Select(value => (DaysOfMonth)value).ToList();
308+
}
309+
310+
return null;
305311
}
306312

307313
private static DateTimeOffset? AdjustOffset(DateTimeOffset? dateTimeOffset, double offsetMinutes)

0 commit comments

Comments
 (0)