chore: cleanup subscription integration test (#6671)

#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
删除 SubscriptionServiceIntegrationTest 类。因为当前测试类不经常性出错,暂时无法排查原因。

#### Does this PR introduce a user-facing change?
```release-note
None
```
pull/6679/head
guqing 2024-09-18 12:18:49 +08:00 committed by GitHub
parent 3fda9e6db4
commit 749c80cb96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 0 additions and 171 deletions

View File

@ -1,171 +0,0 @@
package run.halo.app.notification;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.verify;
import static run.halo.app.extension.index.query.QueryFactory.isNull;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.annotation.DirtiesContext;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import run.halo.app.core.extension.notification.Subscription;
import run.halo.app.extension.Extension;
import run.halo.app.extension.ExtensionStoreUtil;
import run.halo.app.extension.ListOptions;
import run.halo.app.extension.PageRequestImpl;
import run.halo.app.extension.ReactiveExtensionClient;
import run.halo.app.extension.SchemeManager;
import run.halo.app.extension.index.IndexerFactory;
import run.halo.app.extension.router.selector.FieldSelector;
import run.halo.app.extension.store.ReactiveExtensionStoreClient;
import run.halo.app.infra.utils.JsonUtils;
/**
* Integration tests for {@link SubscriptionService}.
*
* @author guqing
* @since 2.15.0
*/
@DirtiesContext
@SpringBootTest
class SubscriptionServiceIntegrationTest {
@Autowired
private SchemeManager schemeManager;
@SpyBean
private ReactiveExtensionClient client;
@Autowired
private ReactiveExtensionStoreClient storeClient;
@Autowired
private IndexerFactory indexerFactory;
Mono<Extension> deleteImmediately(Extension extension) {
var name = extension.getMetadata().getName();
var scheme = schemeManager.get(extension.getClass());
// un-index
var indexer = indexerFactory.getIndexer(extension.groupVersionKind());
indexer.unIndexRecord(extension.getMetadata().getName());
// delete from db
var storeName = ExtensionStoreUtil.buildStoreName(scheme, name);
return storeClient.delete(storeName, extension.getMetadata().getVersion())
.thenReturn(extension);
}
@Nested
class RemoveInitialBatchTest {
static int size = 310;
private final List<Subscription> storedSubscriptions = subscriptionsForStore();
@Autowired
private SubscriptionService subscriptionService;
@BeforeEach
void setUp() {
Flux.fromIterable(storedSubscriptions)
.flatMap(comment -> client.create(comment))
.as(StepVerifier::create)
.expectNextCount(storedSubscriptions.size())
.verifyComplete();
}
@AfterEach
void tearDown() {
Flux.fromIterable(storedSubscriptions)
.flatMap(SubscriptionServiceIntegrationTest.this::deleteImmediately)
.as(StepVerifier::create)
.expectNextCount(storedSubscriptions.size())
.verifyComplete();
}
private List<Subscription> subscriptionsForStore() {
List<Subscription> subscriptions = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
var subscription = createSubscription();
subscription.getMetadata().setName("subscription-" + i);
subscriptions.add(subscription);
}
return subscriptions;
}
@Test
void removeTest() {
var subscriber = new Subscription.Subscriber();
subscriber.setName("admin");
var interestReason = new Subscription.InterestReason();
interestReason.setReasonType("new-comment-on-post");
var subject = new Subscription.ReasonSubject();
subject.setApiVersion("content.halo.run/v1alpha1");
subject.setKind("Post");
interestReason.setSubject(subject);
subscriptionService.remove(subscriber, interestReason).block();
verify(client, atLeast(size)).delete(any(Subscription.class));
assertCleanedUp();
}
@Test
void removeBySubscriberTest() {
var subscriber = new Subscription.Subscriber();
subscriber.setName("admin");
subscriptionService.remove(subscriber).block();
verify(client, atLeast(size)).delete(any(Subscription.class));
assertCleanedUp();
}
private void assertCleanedUp() {
var listOptions = new ListOptions();
listOptions.setFieldSelector(FieldSelector.of(isNull("metadata.deletionTimestamp")));
client.listBy(Subscription.class, listOptions, PageRequestImpl.ofSize(1))
.as(StepVerifier::create)
.consumeNextWith(result -> {
assertThat(result.getTotal()).isEqualTo(0);
assertThat(result.getItems()).isEmpty();
})
.verifyComplete();
}
}
Subscription createSubscription() {
return JsonUtils.jsonToObject("""
{
"spec": {
"subscriber": {
"name": "admin"
},
"unsubscribeToken": "423530c9-bec7-446e-b73b-dd98ac00ba2b",
"reason": {
"reasonType": "new-comment-on-post",
"subject": {
"name": "5152aea5-c2e8-4717-8bba-2263d46e19d5",
"apiVersion": "content.halo.run/v1alpha1",
"kind": "Post"
}
},
"disabled": false
},
"apiVersion": "notification.halo.run/v1alpha1",
"kind": "Subscription",
"metadata": {
"generateName": "subscription-"
}
}
""", Subscription.class);
}
}