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);
        }
Beispiel #9
0
 public void SetUp()
 {
     airtable = new AirtableSimulator();
     airtable.Start();
     _gateway = new AirtableGateway(AIRTABLE_URL, AIRTABLE_API_KEY, TABLE_ID);
 }