def test_create_emails(subhandler, session): user1 = UserFactory(active=True) user2 = UserFactory(active=True) users = [user1, user2] author1 = AuthorFactory() author2 = AuthorFactory() authors = {author1.id: author1, author2.id: author2} entry = EntryFactory() author1.temp_entries = [] author1.temp_entries.append(entry) sub1 = SubscriptionFactory(user=user1, author=author1, active=True) sub2 = SubscriptionFactory(user=user2, author=author2, active=True) subs = [sub1, sub2] db.session.commit() period = Period.query.filter_by(name=PERIOD.IMMEDIATE).first() emails = subhandler.create_emails(users, subs, authors, period) assert len(emails) == 2 assert emails[user1.id].user == user1 assert emails[user2.id].user == user2 assert emails[user1.id].authors[0] == author1 assert emails[user1.id].entries[0] == entry
def test_get_authors_for_entries(subhandler, session): authors = AuthorFactory.create_batch(10) entries = EntryFactory.create_batch(30) FakeDataFactory(db).add_authors_to_entries(authors, entries) db.session.add_all(authors) db.session.add_all(entries) db.session.commit() result = subhandler.get_authors_for_entries(entries) assert result[0][0].familyname <= result[10][0].familyname assert result[0][1].published >= result[1][1].published assert result[0][0] in result[0][1].authors
def test_organise_entry_authors(subhandler, session): authors = AuthorFactory.create_batch(10) entries = EntryFactory.create_batch(30) FakeDataFactory(db).add_authors_to_entries(authors, entries) db.session.add_all(authors) db.session.add_all(entries) db.session.commit() a = subhandler.organise_entry_authors(entries) assert len(a) > 2 for k, v in six.iteritems(a): assert len(v.temp_entries) > 0 if len(v.temp_entries) > 1: assert v.temp_entries[0].published > v.temp_entries[-1].published assert v in v.temp_entries[0].authors
def test_sort_author_entries(subhandler, session): authors = AuthorFactory.create_batch(10) entries = EntryFactory.create_batch(20) FakeDataFactory(db).add_authors_to_entries(authors, entries) db.session.add_all(authors) db.session.add_all(entries) db.session.commit() q = db.session.query(Author, Entry).join("entries").filter( Entry.id.in_(e.id for e in entries)).order_by(Entry.published.desc( )) results = q.all() a = subhandler.sort_author_entries(results) assert len(a) > 2 for k, v in six.iteritems(a): assert len(v.temp_entries) > 0 if len(v.temp_entries) > 2: assert v.temp_entries[0].published > v.temp_entries[1].published assert v.temp_entries[1].published > v.temp_entries[2].published assert v in v.temp_entries[0].authors