예제 #1
0
        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");
        }
예제 #2
0
        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("");
 }