示例#1
0
    def test_add_page_when_logged(self):
        #Create categories
        test_utils.create_categories()

        # Access login page
        self.browser.get(self.live_server_url + reverse('login'))

        # Log in
        test_utils.login(self)

        # Click category
        self.browser.find_element_by_partial_link_text('Category').click()

        # Click add page
        self.browser.find_element_by_partial_link_text("Add a Page").click()

        # Types new page name
        username_field = self.browser.find_element_by_name('title')
        username_field.send_keys('New Page')

        # Types url for the page
        username_field = self.browser.find_element_by_name('url')
        username_field.send_keys('http://www.newpage.com')

        # Click on Create Page
        self.browser.find_element_by_css_selector(
            "input[type='submit']"
        ).click()

        body = self.browser.find_element_by_tag_name('body')

        # Check if New Page appears in the category page
        self.assertIn('New Page', body.text)
    def test_category_page_using_template(self):
        #Create categories in database
        test_utils.create_categories()

        # Access category page
        response = self.client.get(
            reverse('show_category', args=['category-1']))

        # check was used the right template
        self.assertTemplateUsed(response, 'rango/category.html')
    def test_index_displays_five_most_liked_categories(self):
        #Create categories
        test_utils.create_categories()

        # Access index
        response = self.client.get(reverse('index'))

        # Check if the 5 pages with most likes are displayed
        for i in xrange(10, 5, -1):
            self.assertIn("Category " + str(i), response.content)
示例#4
0
    def test_url_reference_in_category_page(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        test_utils.create_categories()

        # Check for add_page in category page
        response = self.client.get(reverse('category', args=['category-1']))
        self.assertIn(reverse('add_page', args=['category-1']), response.content)
    def test_url_reference_in_category_page(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        test_utils.create_categories()

        # Check for add_page in category page
        response = self.client.get(reverse('show_category', args=['category-1']))
        self.assertIn(reverse('add_page', args=['category-1']), response.content)
示例#6
0
    def test_template_uses_sidebar(self):
        # Create some categories
        test_utils.create_categories()

        #Access index
        response = self.client.get(reverse('index'))

        #Check for sidebar class
        self.assertContains(response, 'class="col-sm-3 col-md-2 sidebar"')

        # Check it uses sidebar class when there are some categories
        self.assertContains(response, 'class="nav nav-sidebar"')
示例#7
0
    def test_add_page_is_bootstrapped(self):
        # Create user and login
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        test_utils.create_categories()

        # Access add category page
        response = self.client.get(reverse('add_page', args=['category-1']))

        #Check it uses bootstrap classes
        self.assertIn('<h2 class="form-signin-heading">', response.content)
        self.assertIn('<button class="btn btn-primary"', response.content)
示例#8
0
    def test_add_page_form_is_displayed_correctly(self):
        # Create categories
        categories = test_utils.create_categories()

        for category in categories:
            # Access add category page
            try:
                response = self.client.get(reverse('index'))
                response = self.client.get(reverse('add_page', args=[category.slug]))
            except:
                try:
                    response = self.client.get(reverse('rango:index'))
                    response = self.client.get(reverse('rango:add_page', args=[category.slug]))
                except:
                    return False

            # Check form in response context is instance of CategoryForm
            self.assertTrue(isinstance(response.context['form'], PageForm))

            # Check form is displayed correctly

            # Label 1
            self.assertIn('Please enter the title of the page.'.lower(), response.content.lower())

            # Label 2
            self.assertIn('Please enter the URL of the page.'.lower(), response.content.lower())

            # Text input 1
            self.assertIn('id="id_title" maxlength="128" name="title" type="text"'.lower(), response.content.lower())

            # Text input 2
            self.assertIn('id="id_url" maxlength="200" name="url" type="url"'.lower(), response.content.lower())

            # Button
            self.assertIn('type="submit" name="submit" value="Add Page"'.lower(), response.content.lower())
示例#9
0
    def test_pages_using_templates(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()
        # Create a list of pages to access
        pages = [
            reverse('index'),
            reverse('about'),
            reverse('add_category'),
            reverse('register'),
            reverse('login'),
            reverse('show_category', args=[categories[0].slug]),
            reverse('add_page', args=[categories[0].slug])
        ]  #, reverse('restricted')]

        # Create a list of pages to access
        templates = [
            'rango/index.html', 'rango/about.html', 'rango/add_category.html',
            'rango/register.html', 'rango/login.html', 'rango/category.html',
            'rango/add_page.html'
        ]  #, 'rango/restricted.html']

        # For each page in the page list, check if it extends from base template
        for template, page in zip(templates, pages):
            response = self.client.get(page)
            self.assertTemplateUsed(response, template)
示例#10
0
    def test_add_page_form_is_displayed_correctly(self):
        # Create categories
        categories = test_utils.create_categories()

        for category in categories:
            # Access add category page
            response = self.client.get(reverse('add_page', args=[category.slug]))

            # Check form in response context is instance of CategoryForm
            self.assertTrue(isinstance(response.context['form'], PageForm))

            # Check form is displayed correctly

            # Label 1
            self.assertIn('Please enter the title of the page.', response.content)

            # Label 2
            self.assertIn('Please enter the URL of the page.', response.content)

            # Text input 1
            self.assertIn('id="id_title" maxlength="128" name="title" type="text"', response.content)

            # Text input 2
            self.assertIn('id="id_url" maxlength="200" name="url" type="url"', response.content)

            # Button
            self.assertIn('type="submit" name="submit" value="Create Page"', response.content)
示例#11
0
    def test_form_is_saving_new_page(self):
        #Create categories and pages
        categories = test_utils.create_categories()
        i = 0

        for category in categories:
            i = i + 1
            # Access link to add page for the category
            self.browser.get(self.live_server_url + reverse('add_page', args=[category.slug]))

            # Types new page name
            username_field = self.browser.find_element_by_name('title')
            username_field.send_keys('New Page ' + str(i))

            # Types url for the page
            username_field = self.browser.find_element_by_name('url')
            username_field.send_keys('http://www.newpage1.com')

            # Click on Create Page
            self.browser.find_element_by_css_selector(
                "input[type='submit']"
            ).click()

            body = self.browser.find_element_by_tag_name('body')

            # Check if New Page appears in the category page
            self.assertIn('New Page', body.text)
示例#12
0
    def test_category_contains_link_to_add_page(self):
        # Crete categories
        categories = test_utils.create_categories()

        # For each category in the database check if contains link to add page
        for category in categories:
            response = self.client.get(reverse('category', args=[category.slug]))
            self.assertIn(reverse('add_page', args=[category.slug]), response.content)
示例#13
0
    def test_active_category_is_highlighted(self):
        # Create some categories
        categories = test_utils.create_categories()

        #Access each category and check whether it is the active category
        for category in categories:
            response = self.client.get(reverse('category', args=[category.slug]))
            self.assertContains(response, ' <li  class="active" > <a href="'
                                + reverse('category', args=[category.slug]) + '">'
                                + category.name + '</a></li>', count=1, html=True)
示例#14
0
    def test_list_item_in_index_are_presented_using_list_group(self):
        #Create categories and pages
        categories = test_utils.create_categories()
        test_utils.create_pages(categories)

        #Access index page
        response = self.client.get(reverse('index'))

        #Check for usage of list-group
        self.assertIn('<ul class="list-group">', response.content)
        self.assertIn('<li class="list-group-item">', response.content)
示例#15
0
    def test_category_page_displays_empty_message(self):
        #Create categories in database
        categories = test_utils.create_categories()

        # For each category, access its page and check there are no pages associated with it
        for category in categories:
            # Access category page
            response = self.client.get(
                reverse('show_category', args=[category.slug]))
            self.assertIn("No pages currently in category.".lower(),
                          response.content.lower())
示例#16
0
    def test_category_context(self):
        #Create categories and pages for categories
        categories = test_utils.create_categories()
        pages = test_utils.create_pages(categories)

        # For each category check the context dictionary passed via render() function
        for category in categories:
            response = self.client.get(
                reverse('show_category', args=[category.slug]))
            pages = Page.objects.filter(category=category)
            self.assertItemsEqual(response.context['pages'], pages)
            self.assertEquals(response.context['category'], category)
示例#17
0
    def test_template_tags(self):
        #Create categories
        categories = test_utils.create_categories()

        #Create template and context
        template = Template('{% load rango_extras %} {% get_category_list category %}')
        context = Context({'category': Category.objects.get(pk=1)})
        rendered = template.render(context)

        # If template tags are working, then it is possible to see all categories
        for category in categories:
            self.assertIn(category.slug, rendered)
            self.assertIn(category.name, rendered)
示例#18
0
    def test_index_displays_five_most_viewed_pages(self):
        #Create categories
        categories = test_utils.create_categories()

        #Create pages for categories
        test_utils.create_pages(categories)

        # Access index
        response = self.client.get(reverse('index'))

        # Check if the 5 pages with most views are displayed
        for i in xrange(20, 15, -1):
            self.assertIn("Page " + str(i), response.content)
示例#19
0
    def test_index_contains_link_to_categories(self):
        #Create categories
        categories = test_utils.create_categories()

        # Access index
        response = self.client.get(reverse('index'))

        # Check if the 5 pages with most likes are displayed
        for i in xrange(10, 5, -1):
            category = categories[i - 1]
            self.assertIn(
                reverse('show_category', args=[category.slug])[:-1],
                response.content)
示例#20
0
    def test_category_contains_link_to_add_page(self):
        # Crete categories
        categories = test_utils.create_categories()

        # For each category in the database check if contains link to add page
        for category in categories:
            try:
                response = self.client.get(reverse('show_category', args=[category.slug]))
                self.assertIn(reverse('add_page', args=[category.slug]), response.content)
            except:
                try:
                    response = self.client.get(reverse('rango:show_category', args=[category.slug]))
                    self.assertIn(reverse('rango:add_page', args=[category.slug]), response.content)
                except:
                    return False
示例#21
0
    def test_add_page_when_not_logged(self):
        #Create categories
        test_utils.create_categories()

        # Access index
        self.browser.get(self.live_server_url + reverse('index'))

        # Click category
        self.browser.find_element_by_partial_link_text('Category').click()

        # Check it does not have a link to add page
        body = self.browser.find_element_by_tag_name('body')
        self.assertNotIn('Add a Page', body.text)

        # Access add page directly
        category = Category.objects.all()[0]
        self.browser.get(self.live_server_url + reverse('add_page', args=[category.slug]))

        # Check login form is displayed
        # username
        self.browser.find_element_by_name('username')

        # password
        self.browser.find_element_by_name('password')
示例#22
0
    def test_all_templates_contain_a_page_header(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()

        # Create a list of pages to access
        pages = [reverse('index'), reverse('about'), reverse('add_category'), reverse('registration_register'), reverse('auth_login'),
                 reverse('category', args=[categories[0].slug]), reverse('add_page', args=[categories[0].slug]),
                 reverse('restricted')]

        # For each page in the page list, check if it has a page header
        for page in pages:
            response = self.client.get(page)
            self.assertIn('<div class="page-header">', response.content)
示例#23
0
    def test_templates_inherits_from_base_template(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()

        # Create a list of pages to access
        pages = [reverse('index'), reverse('about'), reverse('add_category'), reverse('register'), reverse('login'),
                 reverse('category', args=[categories[0].slug]), reverse('add_page', args=[categories[0].slug]),
                 reverse('restricted')]

        # For each page in the page list, check if it extends from base template
        for page in pages:
            response = self.client.get(page)
            base_html = loader.get_template('base.html')
            self.assertTrue(any(base_html.name == template.name for template in response.templates))
示例#24
0
    def test_titles_displayed(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()

        # Access index and check the title displayed
        response = self.client.get(reverse('index'))
        self.assertIn('Rango -'.lower(), response.content.lower())

        # Access category page and check the title displayed
        response = self.client.get(
            reverse('show_category', args=[categories[0].slug]))
        self.assertIn(categories[0].name.lower(), response.content.lower())

        # Access about page and check the title displayed
        response = self.client.get(reverse('about'))
        self.assertIn('About'.lower(), response.content.lower())

        # Access login page and check the title displayed
        response = self.client.get(reverse('login'))
        self.assertIn('Login'.lower(), response.content.lower())

        # Access register page and check the title displayed
        response = self.client.get(reverse('register'))
        self.assertIn('Register'.lower(), response.content.lower())

        # Access restricted page and check the title displayed
        response = self.client.get(reverse('restricted'))
        self.assertIn("Since you're logged in".lower(),
                      response.content.lower())

        # Access add page and check the title displayed
        response = self.client.get(
            reverse('add_page', args=[categories[0].slug]))
        self.assertIn('Add Page'.lower(), response.content.lower())

        # Access add new category page and check the title displayed
        response = self.client.get(reverse('add_category'))
        self.assertIn('Add Category'.lower(), response.content.lower())
示例#25
0
    def test_pages_using_templates(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()
        # Create a list of pages to access
        pages = [reverse('index'), reverse('about'), reverse('add_category'), reverse('register'), reverse('login'),
                 reverse('category', args=[categories[0].slug]), reverse('add_page', args=[categories[0].slug]),
                 reverse('restricted')]

        # Create a list of pages to access
        templates = ['rango/index.html', 'rango/about.html', 'rango/add_category.html', 'rango/register.html',
                     'rango/login.html','rango/category.html', 'rango/add_page.html', 'rango/restricted.html']

        # For each page in the page list, check if it extends from base template
        for template, page in zip(templates, pages):
            response = self.client.get(page)
            self.assertTemplateUsed(response, template)
示例#26
0
    def test_category_page_displays_pages(self):
        #Create categories in database
        categories = test_utils.create_categories()

        # Create pages for categories
        test_utils.create_pages(categories)

        # For each category, access its page and check for the pages associated with it
        for category in categories:
            # Access category page
            response = self.client.get(
                reverse('show_category', args=[category.slug]))

            # Retrieve pages for that category
            pages = Page.objects.filter(category=category)

            # Check pages are displayed and they have a link
            for page in pages:
                self.assertIn(page.title, response.content)
                self.assertIn(page.url, response.content)
示例#27
0
    def test_index_context(self):
        # Access index with empty database
        response = self.client.get(reverse('index'))

        # Context dictionary is then empty
        self.assertItemsEqual(response.context['categories'], [])
        self.assertItemsEqual(response.context['pages'], [])

        categories = test_utils.create_categories()
        test_utils.create_pages(categories)

        #Access index with database filled
        response = self.client.get(reverse('index'))

        #Retrieve categories and pages from database
        categories = Category.objects.order_by('-likes')[:5]
        pages = Page.objects.order_by('-views')[:5]

        # Check context dictionary filled
        self.assertItemsEqual(response.context['categories'], categories)
        self.assertItemsEqual(response.context['pages'], pages)
示例#28
0
    def test_titles_displayed(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create categories
        categories = test_utils.create_categories()

        # Access index and check the title displayed
        response = self.client.get(reverse('index'))
        self.assertIn('<title>Rango - How to Tango with Django!</title>', response.content)

        # Access category page and check the title displayed
        response = self.client.get(reverse('category', args=[categories[0].slug]))
        self.assertIn('<title>Rango - ' + categories[0].name + '</title>', response.content)

        # Access about page and check the title displayed
        response = self.client.get(reverse('about'))
        self.assertIn('<title>Rango - About</title>', response.content)

        # Access login page and check the title displayed
        response = self.client.get(reverse('login'))
        self.assertIn('<title>Rango - Login</title>', response.content)

        # Access register page and check the title displayed
        response = self.client.get(reverse('register'))
        self.assertIn('<title>Rango - Register</title>', response.content)

        # Access restricted page and check the title displayed
        response = self.client.get(reverse('restricted'))
        self.assertIn('<title>Rango - Restricted Page</title>', response.content)

        # Access add page and check the title displayed
        response = self.client.get(reverse('add_page', args=[categories[0].slug]))
        self.assertIn('<title>Rango - Add Page</title>', response.content)

        # Access add new category page and check the title displayed
        response = self.client.get(reverse('add_category'))
        self.assertIn('<title>Rango - Add Category</title>', response.content)