mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-24 13:44:33 +00:00
[AB-103] adding triggers to update created and updating attributes on tables
fixing error handling in installer merging change sets to larger operations adding check constraints fixing suggestion id handling applying naming conventions to various columns adding indices to tables adding user in server and user locking
This commit is contained in:
@@ -18,12 +18,11 @@ public interface StarboardPostReactionRepository extends JpaRepository<Starboard
|
||||
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||
void deleteByStarboardPost(StarboardPost post);
|
||||
|
||||
@Query(value = "SELECT r.reactor_id as userId, COUNT(*) AS starCount \n" +
|
||||
@Query(value = "SELECT r.reactor_user_in_server_id as userId, COUNT(*) AS starCount \n" +
|
||||
"FROM starboard_post_reaction r \n" +
|
||||
"INNER JOIN starboard_post p ON p.id = r.post_id\n" +
|
||||
"INNER JOIN channel c ON c.id = p.channel_id\n" +
|
||||
"WHERE c.server_id = :serverId\n" +
|
||||
"GROUP BY r.reactor_id \n" +
|
||||
"WHERE p.server_id = :serverId\n" +
|
||||
"GROUP BY r.reactor_user_in_server_id \n" +
|
||||
"ORDER BY starCount DESC \n" +
|
||||
"LIMIT :count", nativeQuery = true)
|
||||
List<StarStatsUserResult> findTopStarGiverInServer(Long serverId, Integer count);
|
||||
@@ -31,17 +30,15 @@ public interface StarboardPostReactionRepository extends JpaRepository<Starboard
|
||||
@Query(value = "SELECT COUNT(*) \n" +
|
||||
"FROM starboard_post_reaction r \n" +
|
||||
"INNER JOIN starboard_post p ON p.id = r.post_id\n" +
|
||||
"INNER JOIN channel c ON c.id = p.channel_id\n" +
|
||||
"WHERE c.server_id = :serverId\n"
|
||||
"WHERE p.server_id = :serverId\n"
|
||||
, nativeQuery = true)
|
||||
Integer getReactionCountByServer(Long serverId);
|
||||
|
||||
@Query(value = "SELECT p.poster as userId, COUNT(*) AS starCount \n" +
|
||||
@Query(value = "SELECT p.author_user_in_server_id as userId, COUNT(*) AS starCount \n" +
|
||||
"FROM starboard_post_reaction r \n" +
|
||||
"INNER JOIN starboard_post p ON p.id = r.post_id\n" +
|
||||
"INNER JOIN channel c ON c.id = p.channel_id\n" +
|
||||
"WHERE c.server_id = :serverId\n" +
|
||||
"GROUP BY p.poster \n" +
|
||||
"WHERE p.server_id = :serverId\n" +
|
||||
"GROUP BY p.author_user_in_server_id \n" +
|
||||
"ORDER BY starCount DESC \n" +
|
||||
"LIMIT :count", nativeQuery = true)
|
||||
List<StarStatsUserResult> retrieveTopStarReceiverInServer(Long serverId, Integer count);
|
||||
|
||||
@@ -21,6 +21,6 @@ public interface StarboardPostRepository extends JpaRepository<StarboardPost, Lo
|
||||
boolean existsByStarboardMessageId(Long messageId);
|
||||
|
||||
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||
List<StarboardPost> findByStarboardChannelServerId(Long serverId);
|
||||
List<StarboardPost> findByServer(Long serverId);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.utility.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ServerSpecificId;
|
||||
import dev.sheldan.abstracto.utility.models.database.Suggestion;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
@@ -11,9 +12,9 @@ import javax.persistence.QueryHint;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface SuggestionRepository extends JpaRepository<Suggestion, Long> {
|
||||
public interface SuggestionRepository extends JpaRepository<Suggestion, ServerSpecificId> {
|
||||
@NotNull
|
||||
@Override
|
||||
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||
Optional<Suggestion> findById(@NonNull Long aLong);
|
||||
Optional<Suggestion> findById(@NonNull ServerSpecificId aLong);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> acceptSuggestion(Long suggestionId, String text, SuggestionLog suggestionLog) {
|
||||
Suggestion suggestion = suggestionManagementService.getSuggestion(suggestionId).orElseThrow(() -> new SuggestionNotFoundException(suggestionId));
|
||||
Suggestion suggestion = suggestionManagementService.getSuggestion(suggestionId, suggestionLog.getGuild().getIdLong()).orElseThrow(() -> new SuggestionNotFoundException(suggestionId));
|
||||
suggestionManagementService.setSuggestionState(suggestion, SuggestionState.ACCEPTED);
|
||||
log.info("Accepting suggestion {} in server {}.", suggestionId, suggestion.getServer().getId());
|
||||
return updateSuggestion(text, suggestionLog, suggestion);
|
||||
@@ -155,7 +155,7 @@ public class SuggestionServiceBean implements SuggestionService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> rejectSuggestion(Long suggestionId, String text, SuggestionLog suggestionLog) {
|
||||
Suggestion suggestion = suggestionManagementService.getSuggestion(suggestionId).orElseThrow(() -> new SuggestionNotFoundException(suggestionId));
|
||||
Suggestion suggestion = suggestionManagementService.getSuggestion(suggestionId, suggestionLog.getGuild().getIdLong()).orElseThrow(() -> new SuggestionNotFoundException(suggestionId));
|
||||
suggestionManagementService.setSuggestionState(suggestion, SuggestionState.REJECTED);
|
||||
log.info("Rejecting suggestion {} in server {}.", suggestionId, suggestion.getServer().getId());
|
||||
return updateSuggestion(text, suggestionLog, suggestion);
|
||||
|
||||
@@ -36,6 +36,7 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
||||
.postMessageId(starredMessage.getMessageId())
|
||||
.sourceChanel(build)
|
||||
.ignored(false)
|
||||
.server(starboardPost.getServer())
|
||||
.starboardMessageId(starboardPost.getMessageId())
|
||||
.starboardChannel(starboardPost.getChannel())
|
||||
.starredDate(Instant.now())
|
||||
@@ -64,7 +65,7 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
||||
|
||||
@Override
|
||||
public List<StarboardPost> retrieveAllPosts(Long serverId) {
|
||||
return repository.findByStarboardChannelServerId(serverId);
|
||||
return repository.findByServer(serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,5 +101,4 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
||||
repository.delete(starboardPost);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -61,8 +61,8 @@ public class SuggestionManagementServiceBean implements SuggestionManagementServ
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Suggestion> getSuggestion(Long suggestionId) {
|
||||
return suggestionRepository.findById(suggestionId);
|
||||
public Optional<Suggestion> getSuggestion(Long suggestionId, Long serverId) {
|
||||
return suggestionRepository.findById(new ServerSpecificId(serverId, suggestionId));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,15 +11,20 @@
|
||||
<column name="embedding_message_id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="embedded_message_pkey"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="embedded_message_id" type="BIGINT"/>
|
||||
<column name="original_channel" type="BIGINT">
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="embedded_message_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="embedded_channel_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="original_server" type="BIGINT">
|
||||
<column name="embedded_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="embedded_user" type="BIGINT">
|
||||
<column name="embedded_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="embedding_channel" type="BIGINT">
|
||||
@@ -28,27 +33,24 @@
|
||||
<column name="embedding_server" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="embedding_user" type="BIGINT">
|
||||
<column name="embedding_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_embed_channel">
|
||||
<addForeignKeyConstraint baseColumnNames="embedding_channel" baseTableName="embedded_message" constraintName="fk_embed_channel_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_original_channel">
|
||||
<addForeignKeyConstraint baseColumnNames="original_channel" baseTableName="embedded_message" constraintName="fk_embed_original_channel_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_embedded_user">
|
||||
<addForeignKeyConstraint baseColumnNames="embedding_user" baseTableName="embedded_message" constraintName="fk_embedded_user_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_embedding_user">
|
||||
<addForeignKeyConstraint baseColumnNames="embedded_user" baseTableName="embedded_message" constraintName="fk_embedding_user_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_embedding_server">
|
||||
<addForeignKeyConstraint baseColumnNames="embedded_channel_id" baseTableName="embedded_message" constraintName="fk_embed_embedded_channel_id_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="embedding_user_in_server_id" baseTableName="embedded_message" constraintName="fk_embedded_user_in_server_id_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="embedded_user_in_server_id" baseTableName="embedded_message" constraintName="fk_embedding_user_in_server_id_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="embedding_server" baseTableName="embedded_message" constraintName="fk_embedding_server_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="embedded_server_id" baseTableName="embedded_message" constraintName="fk_embed_embedded_server_id_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS embedded_message_update_trigger ON embedded_message;
|
||||
CREATE TRIGGER embedded_message_update_trigger BEFORE UPDATE ON embedded_message FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS embedded_message_insert_trigger ON embedded_message;
|
||||
CREATE TRIGGER embedded_message_insert_trigger BEFORE INSERT ON embedded_message FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="embedded_message-fk_original_server">
|
||||
<addForeignKeyConstraint baseColumnNames="original_server" baseTableName="embedded_message" constraintName="fk_embed_original_server_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -8,9 +8,13 @@
|
||||
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
|
||||
<changeSet author="Sheldan" id="posted_image-table">
|
||||
<createTable tableName="posted_image">
|
||||
<column name="message_id" type="BIGINT" />
|
||||
<column name="position" type="INTEGER" />
|
||||
<column name="posting_user_id" type="BIGINT">
|
||||
<column name="message_id" type="BIGINT" >
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="position" type="INTEGER" >
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="author_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="posted_channel_id" type="BIGINT">
|
||||
@@ -22,25 +26,33 @@
|
||||
<column name="image_hash" type="VARCHAR(512)">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
</createTable>
|
||||
<createIndex indexName="idx_posted_image_hash_server" tableName="posted_image">
|
||||
<column name="image_hash"/>
|
||||
<column name="server_id"/>
|
||||
</createIndex>
|
||||
<addPrimaryKey columnNames="message_id, position" tableName="posted_image" constraintName="pk_posted_image" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="posted_image-fk_posted_image_user">
|
||||
<addForeignKeyConstraint baseColumnNames="posting_user_id" baseTableName="posted_image" constraintName="fk_posted_image_user"
|
||||
<addForeignKeyConstraint baseColumnNames="author_user_in_server_id" baseTableName="posted_image" constraintName="fk_posted_image_user"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION"
|
||||
referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="posted_image-fk_posted_image_channel">
|
||||
<addForeignKeyConstraint baseColumnNames="posted_channel_id" baseTableName="posted_image" constraintName="fk_posted_image_channel"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
|
||||
referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="posted_image-fk_posted_image_server">
|
||||
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="posted_image" constraintName="fk_posted_image_server"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
|
||||
referencedTableName="server" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS posted_image_update_trigger ON posted_image;
|
||||
CREATE TRIGGER posted_image_update_trigger BEFORE UPDATE ON posted_image FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS posted_image_insert_trigger ON posted_image;
|
||||
CREATE TRIGGER posted_image_insert_trigger BEFORE INSERT ON posted_image FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -12,32 +12,46 @@
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="reminder_pkey"/>
|
||||
</column>
|
||||
<column name="job_trigger_key" type="VARCHAR(255)"/>
|
||||
<column name="message_id" type="BIGINT"/>
|
||||
<column name="message_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="reminded" type="BOOLEAN">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="target_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="text" type="VARCHAR(255)"/>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="target_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="text" type="VARCHAR(255)">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="channel_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="reminded_user" type="BIGINT">
|
||||
<column name="user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="reminder-fk_reminder_channel">
|
||||
<createIndex indexName="idx_reminder_user_reminded" tableName="reminder">
|
||||
<column name="user_in_server_id"/>
|
||||
<column name="reminded"/>
|
||||
</createIndex>
|
||||
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="reminder" constraintName="fk_reminder_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="reminder-fk_reminded_user">
|
||||
<addForeignKeyConstraint baseColumnNames="reminded_user" baseTableName="reminder" constraintName="fk_reminder_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="reminder-fk_reminder_server">
|
||||
<addForeignKeyConstraint baseColumnNames="user_in_server_id" baseTableName="reminder" constraintName="fk_reminder_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="reminder" constraintName="fk_reminder_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS reminder_update_trigger ON reminder;
|
||||
CREATE TRIGGER reminder_update_trigger BEFORE UPDATE ON reminder FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS reminder_insert_trigger ON reminder;
|
||||
CREATE TRIGGER reminder_insert_trigger BEFORE INSERT ON reminder FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
@@ -8,8 +8,12 @@
|
||||
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
|
||||
<changeSet author="Sheldan" id="repost-table">
|
||||
<createTable tableName="repost">
|
||||
<column name="message_id" type="BIGINT" />
|
||||
<column name="position" type="INTEGER" />
|
||||
<column name="message_id" type="BIGINT" >
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="position" type="INTEGER" >
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
@@ -19,26 +23,29 @@
|
||||
<column name="count" type="INTEGER">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
</createTable>
|
||||
<addPrimaryKey columnNames="message_id, position, user_in_server_id" tableName="repost" constraintName="pk_repost" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="repost-fk_repost_server">
|
||||
<addForeignKeyConstraint baseColumnNames="user_in_server_id" baseTableName="repost" constraintName="fk_repost_server"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION"
|
||||
referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="repost-fk_repost_posted_image">
|
||||
<addForeignKeyConstraint baseColumnNames="message_id, position" baseTableName="repost" constraintName="fk_repost_posted_image"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="message_id, position"
|
||||
referencedTableName="posted_image" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="repost-fk_repost_user_in_server">
|
||||
<addForeignKeyConstraint baseColumnNames="user_in_server_id" baseTableName="repost" constraintName="fk_repost_user_in_server"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id"
|
||||
referencedTableName="user_in_server" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS repost_update_trigger ON repost;
|
||||
CREATE TRIGGER repost_update_trigger BEFORE UPDATE ON repost FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS repost_insert_trigger ON repost;
|
||||
CREATE TRIGGER repost_insert_trigger BEFORE INSERT ON repost FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -8,16 +8,28 @@
|
||||
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
|
||||
<changeSet author="Sheldan" id="repost_check_channel_group-table">
|
||||
<createTable tableName="repost_check_channel_group">
|
||||
<column name="id" type="BIGINT" />
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="enabled" type="BOOLEAN"/>
|
||||
<column name="enabled" type="BOOLEAN">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="repost_check_channel_group-fk_repost_check_channel_group_group">
|
||||
<addForeignKeyConstraint baseColumnNames="id" baseTableName="repost_check_channel_group" constraintName="fk_repost_check_channel_group_group"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
|
||||
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS repost_check_channel_group_update_trigger ON repost_check_channel_group;
|
||||
CREATE TRIGGER repost_check_channel_group_update_trigger BEFORE UPDATE ON repost_check_channel_group FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS repost_check_channel_group_insert_trigger ON repost_check_channel_group;
|
||||
CREATE TRIGGER repost_check_channel_group_insert_trigger BEFORE INSERT ON repost_check_channel_group FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -11,13 +11,23 @@
|
||||
<column autoIncrement="true" name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="starboard_post_pkey"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="ignored" type="BOOLEAN"/>
|
||||
<column name="post_message_id" type="BIGINT"/>
|
||||
<column name="starboard_message_id" type="BIGINT"/>
|
||||
<column name="starred_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="ignored" type="BOOLEAN">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="post_message_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="starboard_message_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="starred_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="poster" type="BIGINT">
|
||||
<column name="author_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="source_channel_id" type="BIGINT">
|
||||
@@ -26,17 +36,34 @@
|
||||
<column name="channel_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="starboard-fk_starboard_post_poster">
|
||||
<addForeignKeyConstraint baseColumnNames="poster" baseTableName="starboard_post" constraintName="fk_starboard_post_poster" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="starboard-fk_starboard_post_channel">
|
||||
<createIndex indexName="idx_starboard_post_message" tableName="starboard_post">
|
||||
<column name="post_message_id"/>
|
||||
</createIndex>
|
||||
<createIndex indexName="idx_starboard_starboard_message" tableName="starboard_post">
|
||||
<column name="starboard_message_id"/>
|
||||
</createIndex>
|
||||
<createIndex indexName="idx_starboard_server" tableName="starboard_post">
|
||||
<column name="server_id"/>
|
||||
</createIndex>
|
||||
<addForeignKeyConstraint baseColumnNames="author_user_in_server_id" baseTableName="starboard_post" constraintName="fk_starboard_post_author_user_in_server_id" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="starboard_post" constraintName="fk_starboard_post_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="starboard-fk_starboard_post_source_channel">
|
||||
<addForeignKeyConstraint baseColumnNames="source_channel_id" baseTableName="starboard_post" constraintName="fk_starboard_post_source_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="starboard_post" constraintName="fk_starboard_post_server"
|
||||
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
|
||||
referencedTableName="server" validate="true"/>
|
||||
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS starboard_post_update_trigger ON starboard_post;
|
||||
CREATE TRIGGER starboard_post_update_trigger BEFORE UPDATE ON starboard_post FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS starboard_insert_trigger ON starboard_post;
|
||||
CREATE TRIGGER starboard_post_insert_trigger BEFORE INSERT ON starboard_post FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -11,18 +11,28 @@
|
||||
<column autoIncrement="true" name="id" type="BIGINT">
|
||||
<constraints nullable="false" primaryKey="true" primaryKeyName="starboard_post_reaction_pkey"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="reactor_id" type="BIGINT">
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="reactor_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="post_id" type="BIGINT"/>
|
||||
<column name="post_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="starboard_post_reaction-fk_starboard_post_reaction_reactor">
|
||||
<addForeignKeyConstraint baseColumnNames="reactor_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_reactor" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="starboard_post_reaction-fk_starboard_post_reaction_post">
|
||||
<addForeignKeyConstraint baseColumnNames="reactor_user_in_server_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_reactor" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="post_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_post" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="starboard_post" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS starboard_post_reaction_update_trigger ON starboard_post_reaction;
|
||||
CREATE TRIGGER starboard_post_reaction_update_trigger BEFORE UPDATE ON starboard_post_reaction FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS starboard_post_reaction_insert_trigger ON starboard_post_reaction;
|
||||
CREATE TRIGGER starboard_post_reaction_insert_trigger BEFORE INSERT ON starboard_post_reaction FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -8,27 +8,46 @@
|
||||
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
|
||||
<changeSet author="Sheldan" id="suggestion-table">
|
||||
<createTable tableName="suggestion">
|
||||
<column autoIncrement="true" name="id" type="BIGINT"/>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="message_id" type="BIGINT"/>
|
||||
<column name="state" type="VARCHAR(255)"/>
|
||||
<column name="suggestion_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="message_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="state" type="VARCHAR(255)">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="suggestion_date" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="channel_id" type="BIGINT"/>
|
||||
<column name="server_id" type="BIGINT"/>
|
||||
<column name="suggester_id" type="BIGINT">
|
||||
<column name="channel_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="server_id" type="BIGINT">
|
||||
<constraints nullable="true"/>
|
||||
</column>
|
||||
<column name="suggester_user_in_server_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</createTable>
|
||||
<addPrimaryKey columnNames="server_id, id" tableName="suggestion" constraintName="pk_suggestion" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="suggestion-fk_suggestion_channel">
|
||||
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="suggestion" constraintName="fk_suggestion_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="suggestion-fk_suggestion_suggester">
|
||||
<addForeignKeyConstraint baseColumnNames="suggester_id" baseTableName="suggestion" constraintName="fk_suggestion_suggester" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
</changeSet>
|
||||
<changeSet author="Sheldan" id="suggestion-fk_suggestion_server">
|
||||
<addForeignKeyConstraint baseColumnNames="suggester_user_in_server_id" baseTableName="suggestion" constraintName="fk_suggestion_suggester" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
|
||||
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="suggestion" constraintName="fk_suggestion_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS suggestion_update_trigger ON suggestion;
|
||||
CREATE TRIGGER suggestion_update_trigger BEFORE UPDATE ON suggestion FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
DROP TRIGGER IF EXISTS suggestion_insert_trigger ON suggestion;
|
||||
CREATE TRIGGER suggestion_insert_trigger BEFORE INSERT ON suggestion FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
|
||||
</sql>
|
||||
<sql>
|
||||
ALTER TABLE suggestion ADD CONSTRAINT check_suggestion_state CHECK (state IN ('NEW','ACCEPTED', 'REJECTED'));
|
||||
</sql>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
@@ -139,8 +139,11 @@ public class SuggestionServiceBeanTest {
|
||||
|
||||
@Test(expected = SuggestionNotFoundException.class)
|
||||
public void testAcceptNotExistingSuggestion() {
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID)).thenReturn(Optional.empty());
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, SuggestionLog.builder().build());
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID, SERVER_ID)).thenReturn(Optional.empty());
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -151,7 +154,10 @@ public class SuggestionServiceBeanTest {
|
||||
@Test(expected = ChannelNotInGuildException.class)
|
||||
public void testAcceptSuggestionInNoTextChannel() {
|
||||
setupForNoTextChannel();
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, SuggestionLog.builder().build());
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
}
|
||||
|
||||
private void setupForNoTextChannel() {
|
||||
@@ -167,7 +173,7 @@ public class SuggestionServiceBeanTest {
|
||||
when(server.getId()).thenReturn(SERVER_ID);
|
||||
when(channel.getId()).thenReturn(CHANNEL_ID);
|
||||
when(channelService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenThrow(new ChannelNotInGuildException(CHANNEL_ID));
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID)).thenReturn(Optional.of(suggestionToAccept));
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID, SERVER_ID)).thenReturn(Optional.of(suggestionToAccept));
|
||||
}
|
||||
|
||||
@Test(expected = SuggestionUpdateException.class)
|
||||
@@ -200,8 +206,11 @@ public class SuggestionServiceBeanTest {
|
||||
|
||||
@Test(expected = SuggestionNotFoundException.class)
|
||||
public void testRejectNotExistingSuggestion() {
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID)).thenReturn(Optional.empty());
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, SuggestionLog.builder().build());
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID, SERVER_ID)).thenReturn(Optional.empty());
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -212,28 +221,35 @@ public class SuggestionServiceBeanTest {
|
||||
@Test(expected = ChannelNotInGuildException.class)
|
||||
public void testRejectSuggestionInNoTextChannel() {
|
||||
setupForNoTextChannel();
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, SuggestionLog.builder().build());
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
}
|
||||
|
||||
private void executeAcceptWithMember(Member actualMember) {
|
||||
Long messageId = 7L;
|
||||
SuggestionLog logParameter = SuggestionLog.builder().build();
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
Suggestion suggestionToAccept = setupClosing(messageId);
|
||||
Message suggestionMessage = Mockito.mock(Message.class);
|
||||
when(channelService.retrieveMessageInChannel(textChannel, messageId)).thenReturn(CompletableFuture.completedFuture(suggestionMessage));
|
||||
when(memberService.getMemberInServerAsync(SERVER_ID, SUGGESTER_ID)).thenReturn(CompletableFuture.completedFuture(actualMember));
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, logParameter);
|
||||
testUnit.acceptSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
verify(suggestionManagementService, times(1)).setSuggestionState(suggestionToAccept, SuggestionState.ACCEPTED);
|
||||
}
|
||||
|
||||
private void executeRejectWithMember(Member actualMember) {
|
||||
Long messageId = 7L;
|
||||
SuggestionLog logParameter = SuggestionLog.builder().build();
|
||||
SuggestionLog log = Mockito.mock(SuggestionLog.class);
|
||||
when(log.getGuild()).thenReturn(guild);
|
||||
when(guild.getIdLong()).thenReturn(SERVER_ID);
|
||||
Suggestion suggestionToAccept = setupClosing(messageId);
|
||||
Message suggestionMessage = Mockito.mock(Message.class);
|
||||
when(channelService.retrieveMessageInChannel(textChannel, messageId)).thenReturn(CompletableFuture.completedFuture(suggestionMessage));
|
||||
when(memberService.getMemberInServerAsync(SERVER_ID, SUGGESTER_ID)).thenReturn(CompletableFuture.completedFuture(actualMember));
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, logParameter);
|
||||
testUnit.rejectSuggestion(SUGGESTION_ID, CLOSING_TEXT, log);
|
||||
verify(suggestionManagementService, times(1)).setSuggestionState(suggestionToAccept, SuggestionState.REJECTED);
|
||||
}
|
||||
|
||||
@@ -250,7 +266,7 @@ public class SuggestionServiceBeanTest {
|
||||
when(channel.getId()).thenReturn(CHANNEL_ID);
|
||||
when(suggester.getUserReference()).thenReturn(suggesterUser);
|
||||
when(suggesterUser.getId()).thenReturn(SUGGESTER_ID);
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID)).thenReturn(Optional.of(suggestionToAccept));
|
||||
when(suggestionManagementService.getSuggestion(SUGGESTION_ID, SERVER_ID)).thenReturn(Optional.of(suggestionToAccept));
|
||||
when(channelService.getTextChannelFromServer(SERVER_ID, CHANNEL_ID)).thenReturn(textChannel);
|
||||
return suggestionToAccept;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public class StarboardPostManagementServiceBeanTest {
|
||||
StarboardPost starboardPost2 = StarboardPost.builder().reactions(Arrays.asList(reaction)).build();
|
||||
StarboardPost starboardPost3 = StarboardPost.builder().reactions(new ArrayList<>()).build();
|
||||
List<StarboardPost> posts = Arrays.asList(starboardPost1, starboardPost2, starboardPost3);
|
||||
when(repository.findByStarboardChannelServerId(server.getId())).thenReturn(posts);
|
||||
when(repository.findByServer(server.getId())).thenReturn(posts);
|
||||
List<StarboardPost> topPosts = testUnit.retrieveTopPosts(server.getId(), count);
|
||||
Assert.assertEquals(count.intValue(), topPosts.size());
|
||||
StarboardPost topMostPost = topPosts.get(0);
|
||||
@@ -107,7 +107,7 @@ public class StarboardPostManagementServiceBeanTest {
|
||||
StarboardPost starboardPost2 = StarboardPost.builder().reactions(Arrays.asList(reaction)).build();
|
||||
StarboardPost starboardPost3 = StarboardPost.builder().reactions(new ArrayList<>()).build();
|
||||
List<StarboardPost> posts = Arrays.asList(starboardPost1, starboardPost2, starboardPost3);
|
||||
when(repository.findByStarboardChannelServerId(server.getId())).thenReturn(posts);
|
||||
when(repository.findByServer(server.getId())).thenReturn(posts);
|
||||
List<StarboardPost> topPosts = testUnit.retrieveTopPosts(server.getId(), count);
|
||||
StarboardPost topMostPost = topPosts.get(0);
|
||||
StarboardPost secondTop = topPosts.get(1);
|
||||
@@ -190,7 +190,7 @@ public class StarboardPostManagementServiceBeanTest {
|
||||
StarboardPost starboardPost1 = StarboardPost.builder().build();
|
||||
StarboardPost starboardPost2 = StarboardPost.builder().build();
|
||||
List<StarboardPost> posts = Arrays.asList(starboardPost1, starboardPost2);
|
||||
when(repository.findByStarboardChannelServerId(server.getId())).thenReturn(posts);
|
||||
when(repository.findByServer(server.getId())).thenReturn(posts);
|
||||
Integer retrievedPostCount = testUnit.getPostCount(server.getId());
|
||||
Assert.assertEquals(posts.size(), retrievedPostCount.intValue());
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import static org.mockito.Mockito.*;
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class SuggestionManagementServiceBeanTest {
|
||||
|
||||
public static final long CHANNEL_ID = 6L;
|
||||
@InjectMocks
|
||||
private SuggestionManagementServiceBean testUnit;
|
||||
|
||||
@@ -45,6 +44,10 @@ public class SuggestionManagementServiceBeanTest {
|
||||
@Mock
|
||||
private ServerManagementService serverManagementService;
|
||||
|
||||
public static final long CHANNEL_ID = 6L;
|
||||
public static final long SERVER_ID = 6L;
|
||||
public static final long SUGGESTION_ID = 6L;
|
||||
|
||||
@Test
|
||||
public void testCreateSuggestionViaUser() {
|
||||
AServer server = MockUtils.getServer();
|
||||
@@ -89,28 +92,36 @@ public class SuggestionManagementServiceBeanTest {
|
||||
|
||||
@Test
|
||||
public void testGetSuggestion() {
|
||||
Long suggestionId = 5L;
|
||||
Suggestion foundSuggestion = Suggestion.builder().suggestionId(new ServerSpecificId(0L, suggestionId)).build();
|
||||
when(suggestionRepository.findById(suggestionId)).thenReturn(Optional.of(foundSuggestion));
|
||||
Optional<Suggestion> suggestionOptional = testUnit.getSuggestion(suggestionId);
|
||||
Suggestion foundSuggestion = buildSuggestion();
|
||||
when(suggestionRepository.findById(new ServerSpecificId(SERVER_ID, SUGGESTION_ID))).thenReturn(Optional.of(foundSuggestion));
|
||||
Optional<Suggestion> suggestionOptional = testUnit.getSuggestion(SUGGESTION_ID, SERVER_ID);
|
||||
Assert.assertTrue(suggestionOptional.isPresent());
|
||||
suggestionOptional.ifPresent(suggestion -> Assert.assertEquals(suggestionId, suggestion.getSuggestionId().getId()));
|
||||
suggestionOptional.ifPresent(suggestion -> Assert.assertEquals(SUGGESTION_ID, suggestion.getSuggestionId().getId().longValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSuggestionNotFound() {
|
||||
Long suggestionId = 5L;
|
||||
when(suggestionRepository.findById(suggestionId)).thenReturn(Optional.empty());
|
||||
Optional<Suggestion> suggestionOptional = testUnit.getSuggestion(suggestionId);
|
||||
when(suggestionRepository.findById(new ServerSpecificId(SERVER_ID, SUGGESTION_ID))).thenReturn(Optional.empty());
|
||||
Optional<Suggestion> suggestionOptional = testUnit.getSuggestion(SUGGESTION_ID, SERVER_ID);
|
||||
Assert.assertFalse(suggestionOptional.isPresent());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void setSuggestionState() {
|
||||
Suggestion suggestion = Suggestion.builder().suggestionId(new ServerSpecificId(0L, 4L)).build();
|
||||
Suggestion suggestion = buildSuggestion();
|
||||
testUnit.setSuggestionState(suggestion, SuggestionState.ACCEPTED);
|
||||
Assert.assertEquals(suggestion.getState(), SuggestionState.ACCEPTED);
|
||||
verify(suggestion, times(1)).setState(SuggestionState.ACCEPTED);
|
||||
verify(suggestionRepository, times(1)).save(suggestion);
|
||||
}
|
||||
|
||||
|
||||
private Suggestion buildSuggestion() {
|
||||
Suggestion foundSuggestion = Mockito.mock(Suggestion.class);
|
||||
ServerSpecificId suggestionId = Mockito.mock(ServerSpecificId.class);
|
||||
when(suggestionId.getId()).thenReturn(SUGGESTION_ID);
|
||||
when(suggestionId.getServerId()).thenReturn(SERVER_ID);
|
||||
when(foundSuggestion.getSuggestionId()).thenReturn(suggestionId);
|
||||
return foundSuggestion;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user