mirror of https://github.com/halo-dev/halo
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
parent
3fda9e6db4
commit
749c80cb96
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue