public void CanGetTwoWorkshops() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec4rdaOkafgV1Bqm", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)") .WithHost("Barry") .WithCategories("Delivery") .WithTime(2019, 10, 18, 13, 0, 0) .WithDurationInSeconds(3600) .WithLocation("Everest, 2nd Foor") .WithSessionType("Seminar") .AddRecord( "reca7W6WxWubIR7CK", new DateTime(2019, 8, 27, 5, 24, 25) ) .WithName("Account Leadership - Roles & Responsibilities") .WithHost("Rory") .WithCategories("Sales", "Workshop", "Life Skills", "Business") .WithTime(2019, 10, 18, 14, 30, 0) .WithDurationInSeconds(3600) .WithLocation("Everest") .WithSessionType("Workshop") .Build(); airtableSimulator.SetUpAll(TABLE_ID, AIRTABLE_API_KEY, expectedResponse); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); var workshops = airtableGateway.All(); Assert.True(workshops[0].name.Contains("Team Performance:")); Assert.True(workshops[1].name.Contains("Account Leadership")); }
public void AddsUserToAirtableTable() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec4rdaOkafgV1Bqm", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)") .WithHost("Barry") .WithCategories("Delivery") .WithTime(2019, 10, 18, 13, 0, 0) .WithDurationInSeconds(3600) .WithLocation("Everest, 2nd Foor") .WithSessionType("Seminar") .WithAttendees(new List <string>()) .Build(); airtableSimulator.SetUpFind(TABLE_ID, AIRTABLE_API_KEY, expectedResponse.Records[0], "ID000"); airtableSimulator.SetUpSave(TABLE_ID, AIRTABLE_API_KEY); AirtableGateway gateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); ToggleWorkshopAttendance attend = new ToggleWorkshopAttendance(gateway, gateway); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "ID000"; attend.Execute(payload); var requests = airtableSimulator.simulator.ReceivedRequests; Console.WriteLine(requests); var sentEmployee = requests[1].BodyAs <AirtableRequest>(); Assert.AreEqual("Maria", sentEmployee.Records[0].Fields.Attendees[0]); }
public void CanGetAWorkshop() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec0d7vSGRLxzbUNz", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Coding Black Females - Code Dojo") .WithHost("Made Tech") .WithCategories("Meetup") .WithTime(2019, 9, 18, 17, 0, 0) .WithDurationInSeconds(10800) .WithLocation("Made Tech O'Meara'") .WithSessionType("Code Dojo") .Build(); airtableSimulator.SetUpAll(TABLE_ID, AIRTABLE_API_KEY, expectedResponse); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); var workshops = airtableGateway.All(); DateTime time = new DateTime(2019, 09, 18, 17, 00, 0); Assert.True(workshops[0].name.Contains("Coding Black Females - Code Dojo")); Assert.True(workshops[0].host.Contains("Made Tech")); Assert.AreEqual(workshops[0].time, time); Assert.True(workshops[0].location.Contains("O'Meara")); Assert.AreEqual(workshops[0].duration, 180); Assert.True(workshops[0].type.Contains("Code Dojo")); }
public void CanAddAttendeeToAWorkshopWithNoAttendees() { airtableSimulator.SetUpSave(TABLE_ID, AIRTABLE_API_KEY); Workshop workshopParameter = new Workshop() { id = "aaa", attendees = new List <string>() { "Maria" } }; AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); airtableGateway.Update(workshopParameter); var requests = airtableSimulator.simulator.ReceivedRequests; var receivedRequest = requests[0].BodyAs <AirtableRequest>(); Assert.AreEqual("Maria", receivedRequest.Records[0].Fields.Attendees[0]); Assert.AreEqual(true, receivedRequest.Typecast); Assert.AreEqual("application/json", requests[0].ContentType); Assert.AreEqual("Bearer " + AIRTABLE_API_KEY, requests[0].Headers["Authorization"]); }
public void SendsCorrectAirtableRequest() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec4rdaOkafgV1Bqm", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)") .WithHost("Barry") .WithCategories("Delivery") .WithTime(2019, 10, 18, 13, 0, 0) .WithDurationInSeconds(3600) .WithLocation("Everest, 2nd Foor") .WithSessionType("Seminar") .Build(); airtableSimulator.SetUpFind(TABLE_ID, AIRTABLE_API_KEY, expectedResponse.Records[0], "rec4rdaOkafgV1Bqm"); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); Workshop workshop = airtableGateway.Find("rec4rdaOkafgV1Bqm"); Assert.AreEqual(workshop.name, "Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)"); Assert.AreEqual(workshop.host, "Barry"); Assert.AreEqual(workshop.time, new DateTime(2019, 10, 18, 13, 0, 0)); Assert.AreEqual(workshop.location, "Everest, 2nd Foor"); Assert.AreEqual(workshop.type, "Seminar"); Assert.AreEqual(workshop.duration, 3600 / 60); var requests = airtableSimulator.simulator.ReceivedRequests; Assert.AreEqual("Bearer 111", requests[0].Headers["Authorization"]); Assert.AreEqual("application/json", requests[0].Headers["Content-type"]); }
public void CanGetAWorkshop() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec0d7vSGRLxzbUNz", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Coding Black Females - Code Dojo") .WithHost("Made Tech") .WithCategories("Meetup") .WithTime(2019, 9, 18, 17, 0, 0) .WithDurationInSeconds(10800) .WithLocation("Made Tech O'Meara") .WithSessionType("Code Dojo") .Build(); airtableSimulator.SetUpAll(expectedResponse, TABLE_ID, AIRTABLE_API_KEY); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); var workshops = airtableGateway.All(); DateTime time = new DateTime(2019, 09, 18, 17, 00, 0); var firstWorkshop = workshops[0]; firstWorkshop.name.Should().Be("Coding Black Females - Code Dojo"); firstWorkshop.host.Should().Be("Made Tech"); firstWorkshop.time.Should().Be(time); firstWorkshop.location.Should().Be("Made Tech O'Meara"); firstWorkshop.duration.Should().Be(180); firstWorkshop.type.Should().Be("Code Dojo"); }
public void CanFindWorkshopByID() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec4rdaOkafgV1Bqm", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)") .WithHost("Barry") .WithCategories("Delivery") .WithTime(2019, 10, 18, 13, 0, 0) .WithDurationInSeconds(3600) .WithLocation("Everest, 2nd Foor") .WithSessionType("Seminar") .Build(); airtableSimulator.SetUpFind(TABLE_ID, AIRTABLE_API_KEY, expectedResponse.Records[0], "rec4rdaOkafgV1Bqm"); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); Workshop firstWorkshop = airtableGateway.Find("rec4rdaOkafgV1Bqm"); DateTime time = new DateTime(2019, 10, 18, 13, 0, 0); firstWorkshop.name.Should().Be("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)"); firstWorkshop.host.Should().Be("Barry"); firstWorkshop.time.Should().Be(time); firstWorkshop.duration.Should().Be(3600 / 60); firstWorkshop.location.Should().Be("Everest, 2nd Foor"); firstWorkshop.type.Should().Be("Seminar"); }
public void CanGetTwoAirtableWorkshops() { var expectedResponse = new AirtableResponseBuilder() .AddRecord( "rec4rdaOkafgV1Bqm", new DateTime(2019, 8, 22, 8, 25, 28) ).WithName("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)") .WithHost("Barry") .WithCategories("Delivery") .WithTime(2019, 10, 18, 13, 0, 0) .WithDurationInSeconds(3600) .WithLocation("Everest, 2nd Foor") .WithSessionType("Seminar") .AddRecord( "reca7W6WxWubIR7CK", new DateTime(2019, 8, 27, 5, 24, 25) ) .WithName("Account Leadership - Roles & Responsibilities") .WithHost("Rory") .WithCategories("Sales", "Workshop", "Life Skills", "Business") .WithTime(2019, 10, 18, 14, 30, 0) .WithDurationInSeconds(3600) .WithLocation("Everest") .WithSessionType("Workshop") .Build(); airtableSimulator.SetUpAll( TABLE_ID, AIRTABLE_API_KEY, expectedResponse ); AirtableGateway airtableGateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); GetWorkshops getWorkshops = new GetWorkshops(airtableGateway); GetWorkshopsResponse response = getWorkshops.Execute(); DateTime sourceDate = new DateTime(2019, 10, 18, 14, 00, 0); DateTimeOffset time = new DateTimeOffset(sourceDate, TimeZoneInfo.FindSystemTimeZoneById("Europe/London").GetUtcOffset(sourceDate)); DateTime sourceDate2 = new DateTime(2019, 10, 18, 15, 30, 0); DateTimeOffset time2 = new DateTimeOffset(sourceDate2, TimeZoneInfo.FindSystemTimeZoneById("Europe/London").GetUtcOffset(sourceDate2)); PresentableWorkshop[] presentableWorkshops = response.PresentableWorkshops; Assert.AreEqual("Team Performance: Team Agile-Lean maturity 'measures' in practice (at DfE and Hackney)", presentableWorkshops[0].Name); Assert.AreEqual("Barry", presentableWorkshops[0].Host); Assert.AreEqual(time, presentableWorkshops[0].Time); Assert.AreEqual("Everest, 2nd Foor", presentableWorkshops[0].Location); Assert.AreEqual(60, presentableWorkshops[0].Duration); Assert.AreEqual("Seminar", presentableWorkshops[0].Type); Assert.AreEqual("Account Leadership - Roles & Responsibilities", response.PresentableWorkshops[1].Name); Assert.AreEqual("Rory", presentableWorkshops[1].Host); Assert.AreEqual(time2, presentableWorkshops[1].Time); Assert.AreEqual("Everest", presentableWorkshops[1].Location); Assert.AreEqual(60, presentableWorkshops[1].Duration); Assert.AreEqual("Workshop", presentableWorkshops[1].Type); }
public void SetUp() { airtable = new AirtableSimulator(); airtable.Start(); _gateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID); }