<surefireAggregatedReport _class='hudson.maven.reporters.SurefireAggregatedReport'><failCount>0</failCount><skipCount>0</skipCount><totalCount>128</totalCount><urlName>testReport</urlName><childReport><child _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.SurefireReport'><failCount>0</failCount><skipCount>0</skipCount><totalCount>61</totalCount><urlName>testReport</urlName></action><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-domain/135/mavenArtifacts/</url></action><action></action><artifact><displayPath>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-javadoc.jar</displayPath><fileName>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-javadoc.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-domain/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-javadoc.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-domain/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.jar</displayPath><fileName>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-domain/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.pom</displayPath><fileName>dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.pom</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-domain/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-domain-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#135</displayName><duration>9242</duration><estimatedDuration>10955</estimatedDuration><fullDisplayName>microstories-2526-teamA » Domain #135</fullDisplayName><id>135</id><keepLog>false</keepLog><number>135</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1765013527783</timestamp><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-domain/135/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>service/src/test/resources/beans.xml</affectedPath><affectedPath>tests/src/main/java/es/uvigo/esei/dgss/teama/microstories/service/util/security/CreatorRoleCaller.java</affectedPath><affectedPath>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</affectedPath><affectedPath>domain/src/main/java/es/uvigo/esei/microstories/domain/entities/Story.java</affectedPath><affectedPath>tests/src/main/resources/datasets/stories.xml</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/mappers/StoryMapper.java</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/services/UserService.java</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</affectedPath><affectedPath>additional-material/db/microstories-mysql.creation.sql</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/dtos/StoryCreateDto.java</affectedPath><affectedPath>additional-material/db/microstories-mysql.full.sql</affectedPath><affectedPath>domain/src/test/java/es/uvigo/esei/microstories/domain/entities/StoryTest.java</affectedPath><commitId>9c9f284f27e50c1133da185222a2aedf319ce900</commitId><timestamp>1765013307000</timestamp><author><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></author><authorEmail>devpablogg@gmail.com</authorEmail><comment>tsk59: Implements story creation and update in service layer
This commit adds full support for creating and updating stories. It
introduces
`StoryCreateDto`, implements creation and update flows in
`StoryService`, and applies permission checks using the security role
caller for CREATOR actions. A new `UserService` is added to resolve the
current user. The `Story` entity now supports relaxed nullability for
drafts, immutability after publication, theme and text validations, and
a new `isComplete` method. The database schema is updated to match these
rules. The `StoryMapper` is adjusted for the updated entity constructor.
Comprehensive unit and integration tests verify creation, updating,
validation behavior, and authorization handling.
</comment><date>2025-12-06 10:28:27 +0100</date><id>9c9f284f27e50c1133da185222a2aedf319ce900</id><msg>tsk59: Implements story creation and update in service layer</msg><path><editType>edit</editType><file>service/src/test/resources/beans.xml</file></path><path><editType>edit</editType><file>additional-material/db/microstories-mysql.full.sql</file></path><path><editType>edit</editType><file>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</file></path><path><editType>edit</editType><file>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</file></path><path><editType>edit</editType><file>additional-material/db/microstories-mysql.creation.sql</file></path><path><editType>edit</editType><file>domain/src/test/java/es/uvigo/esei/microstories/domain/entities/StoryTest.java</file></path><path><editType>add</editType><file>service/src/main/java/es/uvigo/esei/microstories/dtos/StoryCreateDto.java</file></path><path><editType>edit</editType><file>service/src/main/java/es/uvigo/esei/microstories/mappers/StoryMapper.java</file></path><path><editType>edit</editType><file>tests/src/main/resources/datasets/stories.xml</file></path><path><editType>add</editType><file>tests/src/main/java/es/uvigo/esei/dgss/teama/microstories/service/util/security/CreatorRoleCaller.java</file></path><path><editType>edit</editType><file>domain/src/main/java/es/uvigo/esei/microstories/domain/entities/Story.java</file></path><path><editType>add</editType><file>service/src/main/java/es/uvigo/esei/microstories/services/UserService.java</file></path></item></changeSet><culprit><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></culprit><mavenArtifacts><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-domain/135/mavenArtifacts/</url></mavenArtifacts></child><result _class='hudson.tasks.junit.TestResult'><duration>0.508</duration><empty>false</empty><failCount>0</failCount><passCount>61</passCount><skipCount>0</skipCount><suite><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.008</duration><failedSince>0</failedSince><name>testSetTitlePublishedStory</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.013</duration><failedSince>0</failedSince><name>testIsPublishedFalse</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testRemoveThemeWithOnlyOne</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.044</duration><failedSince>0</failedSince><name>testAddMultipleViews</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testRemoveThemePublished</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.003</duration><failedSince>0</failedSince><name>testSetThemesNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetThemesZero</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testAddThemeMethod</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetThemesExceedLimit</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetId</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetContentPublished</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetContent</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetGenreNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testRemoveTheme</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.029</duration><failedSince>0</failedSince><name>testSetContentExactlyLimit</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testAddThemePublished</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetContentExceedsLimitForPoetryGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testAddViewNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsCompleteFalse_MissingContent</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetPublishedAt</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsCompleteFalse_MissingGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsCompleteFalse_MissingTitle</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsPublishedTrue</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetContentNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testGetViewsUnmodifiable</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetTitleNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetAuthor</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetAuthorNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testAddThemeNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetIdNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetThemes</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetContentExceedsLimitForShortStoryGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsCompleteFalse_MissingThemes</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetGenrePublishedStory</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetContentExceedsLimitForTaleGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testIsCompleteTrue</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetTitleTooLong</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testRemoveThemeNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.StoryTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetTitle</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.006</duration><failedSince>0</failedSince><name>testUsernameTooShort</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.116</duration><failedSince>0</failedSince><name>testConstructorWithStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetPassword</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testAddStoryNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testChangePasswordNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetStoriesNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetPasswordNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetId</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetUsernameNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testUsernameTooLong</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testAddStory</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testChangePassword</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testChangePasswordTooShort</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testChangePasswordTooLong</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testUsernameInvalidPattern</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetPasswordNoMD5</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetIdNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetRoleNull</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testSetUsername</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.001</duration><failedSince>0</failedSince><name>testSetRole</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.domain.entities.UserTest</className><duration>0.0</duration><failedSince>0</failedSince><name>testAddStoryWithDifferentAuthor</name><skipped>false</skipped><status>PASSED</status></case><duration>0.508</duration><name>es.uvigo.esei.microstories.domain.entities.DomainUnitTestSuite</name></suite></result></childReport><childReport><child _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.SurefireReport'><failCount>0</failCount><skipCount>0</skipCount><totalCount>31</totalCount><urlName>testReport</urlName></action><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-rest/135/mavenArtifacts/</url></action><action></action><artifact><displayPath>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-javadoc.jar</displayPath><fileName>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-javadoc.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-rest/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-javadoc.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-rest/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.pom</displayPath><fileName>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.pom</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-rest/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.pom</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.war</displayPath><fileName>dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.war</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-rest/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-rest-0.1.0-SNAPSHOT.war</relativePath></artifact><building>false</building><displayName>#135</displayName><duration>51539</duration><estimatedDuration>70905</estimatedDuration><fullDisplayName>microstories-2526-teamA » REST #135</fullDisplayName><id>135</id><keepLog>false</keepLog><number>135</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1765013527785</timestamp><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-rest/135/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'></changeSet><mavenArtifacts><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-rest/135/mavenArtifacts/</url></mavenArtifacts></child><result _class='hudson.tasks.junit.TestResult'><duration>39.872</duration><empty>false</empty><failCount>0</failCount><passCount>31</passCount><skipCount>0</skipCount><suite><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>3.362</duration><failedSince>0</failedSince><name>beforeListRecentStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>7.28</duration><failedSince>0</failedSince><name>listRecentStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.325</duration><failedSince>0</failedSince><name>afterListRecentStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.115</duration><failedSince>0</failedSince><name>beforeGetStoryById</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.104</duration><failedSince>0</failedSince><name>testGetStoryById_Success</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.077</duration><failedSince>0</failedSince><name>afterGetStoryById</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.136</duration><failedSince>0</failedSince><name>beforeGetNonExistentStory</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.05</duration><failedSince>0</failedSince><name>testGetStoryById_NotFound</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.157</duration><failedSince>0</failedSince><name>afterGetNonExistentStory</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.116</duration><failedSince>0</failedSince><name>beforeSearchStoriesContainsText</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.101</duration><failedSince>0</failedSince><name>testSearchStories_ReturnsResults</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.1</duration><failedSince>0</failedSince><name>afterSearchStoriesContainsText</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.116</duration><failedSince>0</failedSince><name>beforeSearchStoriesInvalidText</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.036</duration><failedSince>0</failedSince><name>testSearchStories_InvalidText_ReturnsBadRequest</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.082</duration><failedSince>0</failedSince><name>beforeFilterStoriesByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.093</duration><failedSince>0</failedSince><name>listFilteredStoriesByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.126</duration><failedSince>0</failedSince><name>afterFilterStoriesByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.091</duration><failedSince>0</failedSince><name>beforeFilterStoriesByTheme</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.107</duration><failedSince>0</failedSince><name>listFilteredStoriesByTheme</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.12</duration><failedSince>0</failedSince><name>afterFilterStoriesByTheme</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.083</duration><failedSince>0</failedSince><name>beforeFilterStoriesByPublicationDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.128</duration><failedSince>0</failedSince><name>listFilteredStoriesByPublication</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.147</duration><failedSince>0</failedSince><name>afterFilterStoriesByPublicationDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.092</duration><failedSince>0</failedSince><name>beforeFilterStoriesByGenreThemeAndPublication</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.068</duration><failedSince>0</failedSince><name>listFilteredStoriesByGenreThemeAndPublication</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.093</duration><failedSince>0</failedSince><name>afterFilterStoriesByGenreThemeAndPublication</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.063</duration><failedSince>0</failedSince><name>beforeGetTop2ReadStoriesLastMonthByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.121</duration><failedSince>0</failedSince><name>getTop2ReadStoriesLastMonthByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.082</duration><failedSince>0</failedSince><name>afterGetTop2ReadStoriesLastMonthByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.064</duration><failedSince>0</failedSince><name>beforeGetTop2ReadStoriesLastMonthByGenre_empty</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.rest.StoryResourceRestTest</className><duration>0.048</duration><failedSince>0</failedSince><name>getTop2ReadStoriesLastMonthByGenre_empty</name><skipped>false</skipped><status>PASSED</status></case><duration>39.872</duration><name>es.uvigo.esei.microstories.rest.ResourceUnitTestSuite</name></suite></result></childReport><childReport><child _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.SurefireReport'><failCount>0</failCount><skipCount>0</skipCount><totalCount>36</totalCount><urlName>testReport</urlName></action><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-service/135/mavenArtifacts/</url></action><action></action><artifact><displayPath>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-javadoc.jar</displayPath><fileName>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-javadoc.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-service/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-javadoc.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-service/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-tests.jar</displayPath><fileName>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-tests.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-service/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT-tests.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.jar</displayPath><fileName>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.jar</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-service/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.pom</displayPath><fileName>dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.pom</fileName><relativePath>es.uvigo.esei.dgss.teamA.microstories/dgss2526-teamA-microstories-service/0.1.0-SNAPSHOT/dgss2526-teamA-microstories-service-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#135</displayName><duration>45550</duration><estimatedDuration>63778</estimatedDuration><fullDisplayName>microstories-2526-teamA » Service #135</fullDisplayName><id>135</id><keepLog>false</keepLog><number>135</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1765013527784</timestamp><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-service/135/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>jsf/src/main/webapp/story/explore.xhtml</affectedPath><affectedPath>jsf/src/main/java/es/uvigo/esei/microstories/jsf/ExploreBean.java</affectedPath><affectedPath>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</affectedPath><affectedPath>jsf/src/main/java/es/uvigo/esei/microstories/jsf/pagination/Paginated.java</affectedPath><commitId>f76f401fdca79bf9e149ab2b66869d1a759dc6f2</commitId><timestamp>1765013289000</timestamp><author><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></author><authorEmail>devpablogg@gmail.com</authorEmail><comment>tsk43: Refactors story exploration to integrate reusable pagination
logic
Replaces custom pagination with a shared `Paginated` class to centralize 
functionality. Updates `ExploreBean` and `Explore.xhtml` to streamline 
navigation, enhance maintainability, and correct typographical errors in
`availableGenres` and `availableThemes`. Creates method in service to 
count the number of filtered stories and adds tests to it.
</comment><date>2025-12-06 10:28:09 +0100</date><id>f76f401fdca79bf9e149ab2b66869d1a759dc6f2</id><msg>tsk43: Refactors story exploration to integrate reusable pagination</msg><path><editType>edit</editType><file>jsf/src/main/java/es/uvigo/esei/microstories/jsf/pagination/Paginated.java</file></path><path><editType>edit</editType><file>jsf/src/main/webapp/story/explore.xhtml</file></path><path><editType>edit</editType><file>jsf/src/main/java/es/uvigo/esei/microstories/jsf/ExploreBean.java</file></path><path><editType>edit</editType><file>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>service/src/test/resources/beans.xml</affectedPath><affectedPath>tests/src/main/java/es/uvigo/esei/dgss/teama/microstories/service/util/security/CreatorRoleCaller.java</affectedPath><affectedPath>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</affectedPath><affectedPath>domain/src/main/java/es/uvigo/esei/microstories/domain/entities/Story.java</affectedPath><affectedPath>tests/src/main/resources/datasets/stories.xml</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/mappers/StoryMapper.java</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/services/UserService.java</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</affectedPath><affectedPath>additional-material/db/microstories-mysql.creation.sql</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/dtos/StoryCreateDto.java</affectedPath><affectedPath>additional-material/db/microstories-mysql.full.sql</affectedPath><affectedPath>domain/src/test/java/es/uvigo/esei/microstories/domain/entities/StoryTest.java</affectedPath><commitId>9c9f284f27e50c1133da185222a2aedf319ce900</commitId><timestamp>1765013307000</timestamp><author><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></author><authorEmail>devpablogg@gmail.com</authorEmail><comment>tsk59: Implements story creation and update in service layer
This commit adds full support for creating and updating stories. It
introduces
`StoryCreateDto`, implements creation and update flows in
`StoryService`, and applies permission checks using the security role
caller for CREATOR actions. A new `UserService` is added to resolve the
current user. The `Story` entity now supports relaxed nullability for
drafts, immutability after publication, theme and text validations, and
a new `isComplete` method. The database schema is updated to match these
rules. The `StoryMapper` is adjusted for the updated entity constructor.
Comprehensive unit and integration tests verify creation, updating,
validation behavior, and authorization handling.
</comment><date>2025-12-06 10:28:27 +0100</date><id>9c9f284f27e50c1133da185222a2aedf319ce900</id><msg>tsk59: Implements story creation and update in service layer</msg><path><editType>edit</editType><file>service/src/test/resources/beans.xml</file></path><path><editType>edit</editType><file>additional-material/db/microstories-mysql.full.sql</file></path><path><editType>edit</editType><file>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</file></path><path><editType>edit</editType><file>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</file></path><path><editType>edit</editType><file>additional-material/db/microstories-mysql.creation.sql</file></path><path><editType>edit</editType><file>domain/src/test/java/es/uvigo/esei/microstories/domain/entities/StoryTest.java</file></path><path><editType>add</editType><file>service/src/main/java/es/uvigo/esei/microstories/dtos/StoryCreateDto.java</file></path><path><editType>edit</editType><file>service/src/main/java/es/uvigo/esei/microstories/mappers/StoryMapper.java</file></path><path><editType>edit</editType><file>tests/src/main/resources/datasets/stories.xml</file></path><path><editType>add</editType><file>tests/src/main/java/es/uvigo/esei/dgss/teama/microstories/service/util/security/CreatorRoleCaller.java</file></path><path><editType>edit</editType><file>domain/src/main/java/es/uvigo/esei/microstories/domain/entities/Story.java</file></path><path><editType>add</editType><file>service/src/main/java/es/uvigo/esei/microstories/services/UserService.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>jsf/src/main/java/es/uvigo/esei/microstories/jsf/StoryManagedBean.java</affectedPath><affectedPath>jsf/src/main/webapp/story/search.xhtml</affectedPath><affectedPath>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</affectedPath><affectedPath>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</affectedPath><commitId>f6ca7fae65d71ac87798a6aaa92945a2ff199580</commitId><timestamp>1765013308000</timestamp><author><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></author><authorEmail>devpablogg@gmail.com</authorEmail><comment>tsk39: Integrates advanced pagination and search improvements for
stories
Refactors `StoryManagedBean` to use a reusable `Paginated` class, 
centralizing pagination logic. Enhances `search.xhtml` with dynamic page 
size, navigation controls, and updated search result display. Updates
`StoryService` to add counts for published and filtered stories,
alongside improved query logic. Adds and updates related tests.
</comment><date>2025-12-06 10:28:28 +0100</date><id>f6ca7fae65d71ac87798a6aaa92945a2ff199580</id><msg>tsk39: Integrates advanced pagination and search improvements for</msg><path><editType>edit</editType><file>jsf/src/main/java/es/uvigo/esei/microstories/jsf/StoryManagedBean.java</file></path><path><editType>edit</editType><file>service/src/main/java/es/uvigo/esei/microstories/services/StoryService.java</file></path><path><editType>edit</editType><file>jsf/src/main/webapp/story/search.xhtml</file></path><path><editType>edit</editType><file>service/src/test/java/es/uvigo/esei/microstories/services/StoryServiceIntegrationTest.java</file></path></item></changeSet><culprit><absoluteUrl>http://sing.ei.uvigo.es/dt/jenkins/user/devpablogg</absoluteUrl><fullName>devpablogg</fullName></culprit><mavenArtifacts><url>http://sing.ei.uvigo.es/dt/jenkins/job/microstories-2526-teamA/es.uvigo.esei.dgss.teamA.microstories$dgss2526-teamA-microstories-service/135/mavenArtifacts/</url></mavenArtifacts></child><result _class='hudson.tasks.junit.TestResult'><duration>33.58</duration><empty>false</empty><failCount>0</failCount><passCount>36</passCount><skipCount>0</skipCount><suite><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>1.338</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_GenreAndDateFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.325</duration><failedSince>0</failedSince><name>testCreateStory_Success</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.153</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_GenreFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.283</duration><failedSince>0</failedSince><name>testCountStoriesByText_NoText</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.198</duration><failedSince>0</failedSince><name>testCountStoriesByText_ExistingText</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.287</duration><failedSince>0</failedSince><name>testGetStoryById</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.155</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_NoFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.247</duration><failedSince>0</failedSince><name>testUpdateStory_Published</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.143</duration><failedSince>0</failedSince><name>testAddReadingLogEntryForA_Story_aux</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.183</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_GenreAndThemeFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.105</duration><failedSince>0</failedSince><name>testGetStoriesByUser_InvalidPage</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.125</duration><failedSince>0</failedSince><name>testGetStoriesByUser_InvalidSize</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.114</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_ThemeFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.087</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_ThemeAndDateFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.13</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_DateRangeFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.228</duration><failedSince>0</failedSince><name>testGetStoriesByUser_WithPagination</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.206</duration><failedSince>0</failedSince><name>testGetTop2ReadStoriesLastMonthByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.284</duration><failedSince>0</failedSince><name>testSearchStories_InvalidPage</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.134</duration><failedSince>0</failedSince><name>testSearchStories_InvalidSize</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.118</duration><failedSince>0</failedSince><name>testGetStoryById_NotFound</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.124</duration><failedSince>0</failedSince><name>getFilteredStoriesByDateWithInitialDateAfterFinalDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.125</duration><failedSince>0</failedSince><name>getFilteredStoriesByDateWithOnlyInitialDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.203</duration><failedSince>0</failedSince><name>testSearchStories_EmptyText_ShoulReturnAllStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.181</duration><failedSince>0</failedSince><name>getFilteredStoriesByDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.114</duration><failedSince>0</failedSince><name>testCountStoriesByFilter_DateFilter</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.082</duration><failedSince>0</failedSince><name>testGetTop2ReadStoriesLastMonthByGenre_NoStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.09</duration><failedSince>0</failedSince><name>getFilteredStoriesByDateWithOnlyFinalDate</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.128</duration><failedSince>0</failedSince><name>testUpdateStory_Success</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.099</duration><failedSince>0</failedSince><name>testUpdateStory_NotFound</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.136</duration><failedSince>0</failedSince><name>testSearchStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.112</duration><failedSince>0</failedSince><name>testCreateStory_Unauthorized_WrongRole</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.114</duration><failedSince>0</failedSince><name>testUpdateStory_Unauthorized_NotAuthor</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.144</duration><failedSince>0</failedSince><name>getFilteredStoriesByGenre</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.136</duration><failedSince>0</failedSince><name>getFilteredStoriesByTheme</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.321</duration><failedSince>0</failedSince><name>testGetRecentStories</name><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>es.uvigo.esei.microstories.services.StoryServiceIntegrationTest</className><duration>0.149</duration><failedSince>0</failedSince><name>testCreateStory_Unauthorized_NoUser</name><skipped>false</skipped><status>PASSED</status></case><duration>33.58</duration><name>es.uvigo.esei.microstories.services.ServiceIntegrationTestSuite</name></suite></result></childReport></surefireAggregatedReport>