Skip to content

Commit 53058a4

Browse files
authored
fix: find last newsletter publication (#329)
cause issues with missing publications detection
1 parent 9b7c1ac commit 53058a4

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

server/src/main/kotlin/fr/nicopico/n2rss/newsletter/data/PublicationRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1616
* DEALINGS IN THE SOFTWARE.
1717
*/
18-
1918
package fr.nicopico.n2rss.newsletter.data
2019

2120
import fr.nicopico.n2rss.newsletter.data.entity.PublicationEntity
@@ -28,4 +27,5 @@ interface PublicationRepository : JpaRepository<PublicationEntity, UUID> {
2827
fun findByNewsletterCode(newsletterCode: String, pageable: Pageable): Page<PublicationEntity>
2928
fun countPublicationsByNewsletterCode(newsletterCode: String): Long
3029
fun findFirstByNewsletterCodeOrderByDateAsc(newsletterCode: String): PublicationEntity?
30+
fun findFirstByNewsletterCodeOrderByDateDesc(newsletterCode: String): PublicationEntity?
3131
}

server/src/main/kotlin/fr/nicopico/n2rss/newsletter/service/PublicationService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class PublicationService(
133133

134134
private fun Newsletter.getLastPublicationDate(): LocalDate {
135135
val lastPublication = requireNotNull(
136-
publicationRepository.findByNewsletterCode(code, Pageable.ofSize(1)).first()
136+
publicationRepository.findFirstByNewsletterCodeOrderByDateDesc(code)
137137
) { "Newsletter must have at least one publication" }
138138
return lastPublication.date.toKotlinLocaleDate()
139139
}

server/src/test/kotlin/fr/nicopico/n2rss/newsletter/service/PublicationServiceTest.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,10 @@ class PublicationServiceTest {
184184
val newsletterCode = "delivering"
185185
val newsletter = createStubNewsletter(newsletterCode)
186186
every { publicationRepository.countPublicationsByNewsletterCode(any()) } returns 10L
187-
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns createStubPublicationEntity(
188-
newsletter
189-
)
187+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns
188+
createStubPublicationEntity(newsletter)
189+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateDesc(any()) } returns
190+
createStubPublicationEntity(newsletter)
190191
every { publicationRepository.findByNewsletterCode(newsletterCode, any()) } returns PageImpl(
191192
listOf(
192193
createStubPublicationEntity(newsletter),
@@ -264,9 +265,10 @@ class PublicationServiceTest {
264265

265266
// Additional stubs required by `stats` computation
266267
every { publicationRepository.countPublicationsByNewsletterCode(any()) } returns 5L
267-
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns createStubPublicationEntity(
268-
newsletter
269-
)
268+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns
269+
createStubPublicationEntity(newsletter)
270+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateDesc(any()) } returns
271+
createStubPublicationEntity(newsletter)
270272

271273
// WHEN
272274
val stats = publicationService.getNewsletterStats(newsletter)
@@ -336,9 +338,10 @@ class PublicationServiceTest {
336338

337339
// Additional stubs
338340
every { publicationRepository.countPublicationsByNewsletterCode(any()) } returns 5L
339-
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns createStubPublicationEntity(
340-
newsletter
341-
)
341+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateAsc(any()) } returns
342+
createStubPublicationEntity(newsletter)
343+
every { publicationRepository.findFirstByNewsletterCodeOrderByDateDesc(any()) } returns
344+
createStubPublicationEntity(newsletter)
342345

343346
// WHEN
344347
val stats = publicationService.getNewsletterStats(newsletter)

0 commit comments

Comments
 (0)