mark announcments before user signs up as read

This commit is contained in:
Henry Oswald 2017-02-14 12:29:48 +00:00
parent 61ef158f76
commit 27caf4d555
2 changed files with 25 additions and 5 deletions

View file

@ -19,6 +19,9 @@ module.exports = AnnouncementsHandler =
if !user? and !user._id? if !user? and !user._id?
return callback("user not supplied") return callback("user not supplied")
timestamp = user._id.toString().substring(0,8)
userSignupDate = new Date( parseInt( timestamp, 16 ) * 1000 )
async.parallel { async.parallel {
lastEvent: (cb)-> lastEvent: (cb)->
AnalyticsManager.getLastOccurance user._id, "announcement-alert-dismissed", cb AnalyticsManager.getLastOccurance user._id, "announcement-alert-dismissed", cb
@ -48,7 +51,9 @@ module.exports = AnnouncementsHandler =
announcement.id == lastSeenBlogId announcement.id == lastSeenBlogId
announcements = _.map announcements, (announcement, index)-> announcements = _.map announcements, (announcement, index)->
if announcementIndex == -1 if announcement.date < userSignupDate
read = true
else if announcementIndex == -1
read = false read = false
else if index >= announcementIndex else if index >= announcementIndex
read = true read = true

View file

@ -11,7 +11,7 @@ describe 'AnnouncementsHandler', ->
beforeEach -> beforeEach ->
@user = @user =
_id:"some_id" _id:"3c6afe000000000000000000" #2002-02-14T00:00:00.000Z
email: "someone@gmail.com" email: "someone@gmail.com"
@AnalyticsManager = @AnalyticsManager =
getLastOccurance: sinon.stub() getLastOccurance: sinon.stub()
@ -36,10 +36,10 @@ describe 'AnnouncementsHandler', ->
id: '/2013/08/02/thesis-series-pt1' id: '/2013/08/02/thesis-series-pt1'
}, { }, {
date: new Date(1108369600000), date: new Date(1108369600000),
id: '/2011/08/04/somethingelse' id: '/2005/08/04/somethingelse'
}, { }, {
date: new Date(1208369600000), date: new Date(1208369600000),
id: '/2014/04/12/title-date-irrelivant' id: '/2008/04/12/title-date-irrelivant'
} }
] ]
@BlogHandler.getLatestAnnouncements.callsArgWith(0, null, @stubbedAnnouncements) @BlogHandler.getLatestAnnouncements.callsArgWith(0, null, @stubbedAnnouncements)
@ -64,7 +64,7 @@ describe 'AnnouncementsHandler', ->
done() done()
it "should return older ones marked as read as well", (done)-> it "should return older ones marked as read as well", (done)->
@AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2014/04/12/title-date-irrelivant"}}) @AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2008/04/12/title-date-irrelivant"}})
@handler.getUnreadAnnouncements @user, (err, announcements)=> @handler.getUnreadAnnouncements @user, (err, announcements)=>
announcements[0].id.should.equal @stubbedAnnouncements[0].id announcements[0].id.should.equal @stubbedAnnouncements[0].id
announcements[0].read.should.equal false announcements[0].read.should.equal false
@ -89,6 +89,21 @@ describe 'AnnouncementsHandler', ->
announcements[3].read.should.equal true announcements[3].read.should.equal true
done() done()
it "should return posts older than signup date as read", (done)->
@stubbedAnnouncements.push({
date: new Date(978836800000),
id: '/2001/04/12/title-date-irrelivant'
})
@AnalyticsManager.getLastOccurance.callsArgWith(2, null, [])
@handler.getUnreadAnnouncements @user, (err, announcements)=>
announcements[0].read.should.equal false
announcements[1].read.should.equal false
announcements[2].read.should.equal false
announcements[3].read.should.equal false
announcements[4].read.should.equal true
announcements[4].id.should.equal '/2001/04/12/title-date-irrelivant'
done()
describe "with custom domain announcements", -> describe "with custom domain announcements", ->
beforeEach -> beforeEach ->