public Given_no_issue_labeled() { UserLabelRepository = Substitute.For <InMemoryLabelSubscriptionRepository>(); IssueSubscriber = Substitute.For <IIssueSubscriber>(); IssueQuery = Substitute.For <IIssueQuery>(); IssueSubscription = new IssueSubscription(new InMemoryIssueLabelRepository(), UserLabelRepository, IssueSubscriber); LabelSubscription = new LabelSubscription(UserLabelRepository, IssueSubscriber, IssueQuery); }
public async Task subscribe_already_subscribed_user() { await LabelSubscription.SetUserSubscription(RepositoryOwner, RepositoryName, "userX", Label); IssueSubscriber.ClearReceivedCalls(); await IssueSubscription.TryAddLabel(Issue, Label, ToBeLabeledAt); //assert await IssueSubscriber.ReceivedWithAnyArgs().SubscribeToIssue(default !, default !);
public async Task change_area_label() { var wasAdded = await IssueSubscription.TryAddLabel(Issue, "area-another", ToBeLabeledAt); var labeled = await IssueSubscription.TestLabel(Issue, "area-another"); wasAdded.Should().BeTrue(); labeled.Should().BeTrue(); }
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 set_to_same_label() { var wasAdded = await IssueSubscription.TryAddLabel(Issue, Label, ToBeLabeledAt); var labeled = await IssueSubscription.TestLabel(Issue, Label); wasAdded.Should().BeFalse(); labeled.Should().BeTrue(); }
public async Task set_another_label() { var wasAdded = await IssueSubscription.TryAddLabel(Issue, "another-label", ToBeLabeledAt); var labeled = await IssueSubscription.TestLabel(Issue, "another-label"); wasAdded.Should().BeTrue(); labeled.Should().BeTrue(); }
public async Task handle_idempotent_label() { var wasAdded = await IssueSubscription.TryAddLabel(Issue, Label, AlreadyLabeledAt); var labeled = await IssueSubscription.TestLabel(Issue, Label); wasAdded.Should().BeFalse(); labeled.Should().BeTrue(); }
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_idempotent_label() { var wasAdded = await IssueSubscription.TryAddLabel(Issue, AreaLabel, AlreadyLabeledAt); var labeled = await IssueSubscription.TestLabel(Issue, AreaLabel); wasAdded.Should().BeFalse(); labeled.Should().BeTrue(); // TODO: verify no comments was created or updated }
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(); }
public Given_issue_area_label() { IssueSubscription.TryAddLabel(Issue, AreaLabel, AlreadyLabeledAt).Wait(); }