diff --git a/app/models/Subscription.scala b/app/models/Subscription.scala index 0cb08e7..3c1a5ab 100644 --- a/app/models/Subscription.scala +++ b/app/models/Subscription.scala @@ -109,17 +109,20 @@ object Subscription { } } - def inScheme(subscriberId: Int, schemeId: Int, page: Int) = { + def inScheme(subscriberId: Int, schemeId: Int, page: Int, active: Boolean = true) = { val offset = page * 10 DB.withConnection { implicit c => SQL( """ - select subscription.* from subscription, topic where subscription.subscriber_id = {sub_id} - and subscription.topic_id = topic.id and topic.scheme_id = {sch_id} + select subscription.* from subscription, topic + where subscription.subscriber_id = {sub_id} + and subscription.topic_id = topic.id + and topic.scheme_id = {sch_id} + and active = {active} order by created desc limit 10 offset {offset} """ - ).on('sub_id -> subscriberId, 'sch_id -> schemeId, 'offset -> offset).as(subscrip *) + ).on('sub_id -> subscriberId, 'sch_id -> schemeId, 'offset -> offset, 'active -> active).as(subscrip *) } } diff --git a/test/unit/SubscriptionSpec.scala b/test/unit/SubscriptionSpec.scala index b50fb09..5d90e70 100644 --- a/test/unit/SubscriptionSpec.scala +++ b/test/unit/SubscriptionSpec.scala @@ -190,6 +190,12 @@ class SubscriptionSpec extends Specification { inScheme.contains(s1t5) mustEqual(true) inScheme.contains(s2t1) mustEqual(false) inScheme.contains(s2t2) mustEqual(false) + // cancel a scheme - list should reflect only active + s1t5.cancel + val nowInScheme = Subscription.inScheme(sub.id, scheme.id, 0) + nowInScheme.size mustEqual(2) + val canceledInScheme = Subscription.inScheme(sub.id, scheme.id, 0, false) + canceledInScheme.size mustEqual(1) } }