public async Task remove_area_label()
        {
            var wasRemoved = await IssueSubscription.TryRemoveLabel(Issue, AreaLabel, ToBeLabeledAt);

            var labeled = await IssueSubscription.TestLabel(Issue, AreaLabel);

            wasRemoved.Should().BeTrue();
            labeled.Should().BeFalse();
        }
        public async Task handle_outdated_remove_label()
        {
            var wasAdded = await IssueSubscription.TryRemoveLabel(Issue, Label, AlreadyLabeledAt.AddHours(-1));

            var labeled = await IssueSubscription.TestLabel(Issue, Label);

            // so we can handle situation when labeling events are received out of order
            wasAdded.Should().BeFalse();
            labeled.Should().BeTrue();
        }
        public async Task remove_non_assigned_area_label()
        {
            var wasRemoved = await IssueSubscription.TryRemoveLabel(Issue, "area-non-existing", ToBeLabeledAt);

            var labeled = await IssueSubscription.TestLabel(Issue, "area-non-existing");

            wasRemoved.Should()
            .BeTrue(
                "Removing not used label, make record that such issue has removed that label, so we can detect outdated labels");
            labeled.Should().BeFalse();
        }
        public async Task handle_set_and_remove_in_reverse_order()
        {
            // with remove time after label
            var wasRemoved = await IssueSubscription.TryRemoveLabel(Issue, AreaLabel, ToBeLabeledAt.AddHours(1));

            // with label time before remove but executed after remove
            var wasAdded = await IssueSubscription.TryAddLabel(Issue, AreaLabel, ToBeLabeledAt);

            var labeled = await IssueSubscription.TestLabel(Issue, AreaLabel);

            wasRemoved.Should().BeTrue();
            wasAdded.Should().BeFalse();
            labeled.Should().BeFalse();
        }
 public Given_issue_had_label_removed()
 {
     AlreadyRemovedAt = AlreadyLabeledAt.AddMinutes(+1);
     IssueSubscription.TryRemoveLabel(Issue, Label, AlreadyRemovedAt).Wait();
 }