public void RemovesUserFromAirtableTable() { 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>() { "Maria", "Kat" }) .Build(); airtable.SetUpFind(TABLE_ID, AIRTABLE_API_KEY, expectedResponse.Records[0], "ID000"); airtable.SetUpSave(TABLE_ID, AIRTABLE_API_KEY); ToggleWorkshopAttendance attend = new ToggleWorkshopAttendance(_gateway, _gateway); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "ID000"; attend.Execute(payload); var requests = airtable.simulator.ReceivedRequests; var sentUser = requests[1].BodyAs <AirtableRequest>(); Fields fields = sentUser.Records[0].Fields; fields.Attendees.Should().NotContain("Maria"); }
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 string Execute(ToggleWorkshopAttendanceRequest request) { Workshop workshop = Finder.Find(request.WorkshopId); if (workshop.attendees.Contains(request.User)) { workshop.attendees.Remove(request.User); } else { workshop.attendees.Add(request.User); } Updater.Update(workshop); return("Confirmed"); }
public void SaveNewAttendeeToWorkshopWithNoExistingAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() }; ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(_spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "idNum3029"; var response = toggleAttendance.Execute(payload); _spy.lastSavedWorkshop.attendees[0].Should().Be("Bogdan"); findSpyStub.lastWorkShopId.Should().Be("idNum3029"); response.Should().Be("Confirmed"); }
public void SaveNewAttendeeToWorkshopWithNoExistingAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() }; SpyGateway spy = new SpyGateway(); ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "Seaweed on holiday"; var response = toggleAttendance.Execute(payload); Assert.AreEqual("Seaweed", spy.lastSavedWorkshop.attendees[0]); Assert.AreEqual("Confirmed", response); Assert.AreEqual("Seaweed on holiday", findSpyStub.lastWorkShopId); }
public void RemovesAttendeeIfAlreadyInWorkshopAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() { "Cait", "Maria" } }; ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(_spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "16"; toggleAttendance.Execute(payload); _spy.lastSavedWorkshop.attendees.Should().NotContain("Maria"); findSpyStub.lastWorkShopId.Should().Be("16"); }
public void RemovesAttendeeIfAlreadyInWorkshopAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() { "Cait", "Maria" } }; SpyGateway spy = new SpyGateway(); ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "16"; toggleAttendance.Execute(payload); Assert.IsFalse(spy.lastSavedWorkshop.attendees.Contains("Maria")); Assert.AreEqual("16", findSpyStub.lastWorkShopId); }
public void SaveNewAttendeeToWorkshopWithExistingAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() { "Cait" } }; SpyGateway spy = new SpyGateway(); ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "16"; toggleAttendance.Execute(payload); Assert.AreEqual("Seaweed", spy.lastSavedWorkshop.attendees[1]); Assert.AreEqual("Cait", spy.lastSavedWorkshop.attendees[0]); Assert.AreEqual("16", findSpyStub.lastWorkShopId); }
private void ToggleAttendance(HttpListenerContext context) { var payload = new StreamReader(context.Request.InputStream).ReadToEnd(); var firstString = HttpUtility.UrlDecode(payload); var payloadString = HttpUtility.ParseQueryString(firstString); Dictionary <string, string> dictionary = payloadString .Keys .Cast <string>() .ToDictionary(k => k, k => payloadString[k]); SlackButtonPayload deserialisedPayload = JsonConvert.DeserializeObject <SlackButtonPayload>(dictionary["payload"]); //Console.WriteLine(deserialisedPayload.Actions[0].Value); ToggleWorkshopAttendanceRequest toggleWorkshopAttendanceRequest = new ToggleWorkshopAttendanceRequest() { User = deserialisedPayload.User.Name, WorkshopId = deserialisedPayload.Actions[0].Value }; string response_url = deserialisedPayload.ResponseURL; _toggleWorkshopAttendance.Execute(toggleWorkshopAttendanceRequest); GetWorkshopsResponse workshops = _getWorkshops.Execute(); var slackMessage = ToSlackMessage(workshops, toggleWorkshopAttendanceRequest.User); string jsonForSlack = JsonConvert.SerializeObject(slackMessage); WebClient webClient = new WebClient(); webClient.Headers.Add("Content-type", "application/json"); webClient.UploadString(response_url, "POST", jsonForSlack); }
public void SaveNewAttendeeToWorkshopWithExistingAttendees() { FindSpyStub findSpyStub = new FindSpyStub(); findSpyStub.existingWorkshop = new Workshop() { attendees = new List <string>() { "Cait" } }; ToggleWorkshopAttendance toggleAttendance = new ToggleWorkshopAttendance(_spy, findSpyStub); ToggleWorkshopAttendanceRequest payload = new ToggleWorkshopAttendanceRequest(); payload.User = "******"; payload.WorkshopId = "id16"; toggleAttendance.Execute(payload); var workshopAttendees = _spy.lastSavedWorkshop.attendees; workshopAttendees[0].Should().Be("Cait"); workshopAttendees[1].Should().Be("Bogdan"); findSpyStub.lastWorkShopId.Should().Be("id16"); }
public string Execute(ToggleWorkshopAttendanceRequest request) { _called = request; return(""); }