def testWithTwoBlogEntries(self): BlogEntry(title='entry1', text='entry1').save() BlogEntry(title='entry2', text='entry2').save() result = IndexHandler().render() self.assertIn('entry2', result) self.assertIn('entry1', result) self.assertLess(result.index('entry2'), result.index('entry1'))
def updateblog(request): # Get feed url = 'http://blog.instanssi.org/feeds/posts/default' feed = feedparser.parse(url) # Delete old entries BlogEntry.objects.filter(locked=False).delete() # Get items that have changed for item in feed['items']: locked = False try: oldentry = BlogEntry.objects.get(title=item['title']) locked = oldentry.locked except BlogEntry.DoesNotExist: pass if not locked: timestamp = datetime.fromtimestamp( time.mktime(item['published_parsed'])) + timedelta(hours=2) entry = BlogEntry() entry.title = item['title'] entry.summary = item['summary'] entry.date = timestamp entry.link = item['link'] entry.name = item['authors'][0]['name'] entry.save() # Just return "ok" return HttpResponse("ok")
def testEditBlogEntry(self): # Given there is a blog entry in the database entry = BlogEntry(title='entry1', text='entry1') entry.save() self.assertEqual(1, BlogEntry.all().count()) # And I am signed in as admin self.signInAsAdmin() # When I edit the blog entry handler = self.createEditBlogEntryHandler() handler.request.GET['id'] = entry.key().id() handler.get() result = str(handler.response.out) # And I should see an input for "title" self.assertRegexpMatches(result, r'<[^>]+ name="title"[^>]*>') self.assertRegexpMatches(result, r'<[^>]+ value="entry1"[^>]*>') # And I should see an input for "text" self.assertRegexpMatches(result, r'<[^>]+ name="text"[^>]*>') self.assertRegexpMatches(result, r'<textarea[^>]*>entry1<') # And I should see a "Save" button self.assertRegexpMatches(result, r'<button[^>]*>Save</') # And I fill out the "title" field with "new title" handler = self.createEditBlogEntryHandler() handler.request.POST['id'] = entry.key().id() handler.request.POST['title'] = 'new title' # And I fill out the "text" field with "new text" handler.request.POST['text'] = 'new text' # And I click on the "Save" button handler.post() # And I should see the blog entry with "title": "new title" self.assertEqual(1, BlogEntry.all().count()) entry = BlogEntry.all().get() self.assertEqual('new title', entry.title) # And I should see the blog entry with "text": "new text" self.assertEqual('new text', entry.text)
def post(self): # AUTHENTICATE user_id = None # AUTHENTICATE check for valid cookie user_id = auth(self.request.cookies.get('user_id')) title = self.request.get("title") body = self.request.get("body") like = 0 if user_id: if title and body: u = Users.get_by_id(int(user_id)) b = BlogEntry(title=title, body=body, author_name=u.userName, likes=like, author_id=user_id) b.put() self.redirect("/welcome") else: error = "Please provide BOTH a title and body." # must include all the parameters below to preserve user # entered data self.render_newpost(title=title, body=body, error=error) else: self.redirect("/login")
def testNoEditLinkForGuest(self): # Given there is a blog entry in the database BlogEntry(title='entry1', text='entry1').save() self.assertEqual(1, BlogEntry.all().count()) # When I visit the home page result = IndexHandler().render() # Then I should not see the "Edit" link self.assertNotRegexpMatches(result, r"<a href=[^>]+>Edit</a>")
def testRenderingBlogEntries(self): self.assertEqual(0, BlogEntry.all().count()) BlogEntry(title='asdsad', text='my text').save() self.assertEqual(1, BlogEntry.all().count()) result = IndexHandler().render() today = datetime.datetime.now().strftime('%Y-%m-%d') self.assertRegexpMatches(result, r'<[^>]+ class="title"[^>]*>asdsad</') self.assertRegexpMatches(result, r'<[^>]+ class="text"[^>]*><p>my text</p></') self.assertRegexpMatches(result, r'<[^>]+ class="date"[^>]*>%s</' % today)
def testEditLinkForAdmin(self): # Given there are no blog entries in the database self.assertEqual(0, BlogEntry.all().count()) # And I am signed in as admin self.signInAsAdmin() # And I add a new blog entry "entry1" BlogEntry(title='entry1', text='entry1').save() self.assertEqual(1, BlogEntry.all().count()) # When I visit the home page result = IndexHandler().render() # Then I should see a "Edit" link self.assertRegexpMatches(result, r"<a href=[^>]+>Edit</a>")
def post(self): title = self.request.get("subject") content = self.request.get("content") cookie = self.request.cookies.get('name') user = check_login(cookie) if title and content and user: blog_post = BlogEntry(title=title, content=content, creator=user) blog_post.put() post_id = blog_post.key.id() self.redirect("/blog/%s" % post_id) else: error = "You must include both a title and content" self.render("/newpost.html", title=title, content=content, error=error, user=user)
def testRenderingBlogEntriesWithMarkdown(self): self.assertEqual(0, BlogEntry.all().count()) BlogEntry( title='asdsad', text='Hello Markdown\n' + '==\n' + '\n' + 'This is an example post using [Markdown](http://a.b).').save() self.assertEqual(1, BlogEntry.all().count()) result = IndexHandler().render() today = datetime.datetime.now().strftime('%Y-%m-%d') self.assertRegexpMatches(result, r'<[^>]+ class="title"[^>]*>asdsad</') self.assertRegexpMatches( result, r'<[^>]+ class="text"[^>]*><h1>Hello Markdown</h1>' + '[^<]*' + '<p>This is an example post using <a href="http://a.b">Markdown</a>.</p></' ) self.assertRegexpMatches(result, r'<[^>]+ class="date"[^>]*>%s</' % today)