Ejemplo n.º 1
0
    def test_pages_using_templates(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create a test category
        category = Category(name="Category 1")
        category.save()

        # Create a test gem
        gem = Gem(category=category, name="Gem 1")
        gem.save()

        # Create a list of pages to access
        pages = [
            reverse('index'),
            reverse('show_category', args=[category.slug]),
            reverse('show_gem', args=[category.slug, gem.slug]),
            reverse('add_gem'),
            reverse('login'),
            reverse('sign_up'),
            reverse('search_results')
        ]  #, reverse('profile')

        # Create a list of pages to access
        templates = [
            'gems/index.html', 'gems/category.html', 'gems/gem.html',
            'gems/add_gem.html', 'gems/login.html', 'gems/sign_up.html',
            'gems/search_results.html'
        ]  #, 'gems/search_results.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)
Ejemplo n.º 2
0
    def test_add_gem_form_is_displayed_correctly(self):
        # Create user and log in - only logged in user can add a gem (different test)
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Access add category page
        response = self.client.get(reverse('add_gem'))

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

        # Check form is displayed correctly
        # Header
        self.assertIn('Add a new Gem!'.lower(),
                      response.content.decode('ascii').lower())

        # Input
        self.assertIn('Name:', response.content.decode('ascii'))
        self.assertIn('Address:', response.content.decode('ascii'))
        self.assertIn('Category:', response.content.decode('ascii'))
        self.assertIn('Upload image:', response.content.decode('ascii'))
        self.assertIn('Image source:', response.content.decode('ascii'))
        self.assertIn('Description:', response.content.decode('ascii'))

        # Check Add Gem button
        self.assertIn('type="submit"', response.content.decode('ascii'))
        self.assertIn('name="submit"', response.content.decode('ascii'))
        self.assertIn('value="Add Gem"', response.content.decode('ascii'))
Ejemplo n.º 3
0
    def test_url_reference_in_index_page_when_logged(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

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

        # Check links that appear only for logged in user
        self.assertIn(reverse('add_gem'), response.content.decode('ascii'))
        self.assertIn(reverse('profile'), response.content.decode('ascii'))
        self.assertIn(reverse('logout'), response.content.decode('ascii'))
Ejemplo n.º 4
0
    def test_login_redirects_to_index(self):
        # Create a user
        test_utils.create_user()

        # Access login page via POST with user data
        try:
            response = self.client.post(reverse('login'), {
                'username': '******',
                'password': '******'
            })
        except:
            try:
                response = self.client.post(reverse('gems:login'), {
                    'username': '******',
                    'password': '******'
                })
            except:
                return False

        # Check if redirected to index after login
        self.assertRedirects(response, reverse('index'))
Ejemplo n.º 5
0
    def test_user_profile_model(self):
        # Create a user
        user, user_profile = test_utils.create_user()

        # Check there is only the saved user and its profile in the database
        all_users = User.objects.all()
        self.assertEquals(len(all_users), 1)

        all_profiles = UserProfile.objects.all()
        self.assertEquals(len(all_profiles), 1)

        # Check profile fields were saved correctly
        all_profiles[0].user = user
        all_profiles[0].profile_image = user_profile.profile_image
Ejemplo n.º 6
0
    def test_adding_gem_works(self):
        # Create a user
        user, user_profile = test_utils.create_user()

        # Create a test category
        category = Category(name="Category 1")
        category.save()

        # Create a test gem
        gem = Gem(category=category,
                  name="Gem 1",
                  address="Address 1",
                  description="Description 1",
                  image_source="Image source 1",
                  latitude=50.50,
                  longitude=-4.40)
        gem.save()

        #Check there is only one gem
        gems = Gem.objects.all()
        self.assertEquals(len(gems), 1)

        #Check fields were saved correctly
        self.assertEquals(str(gem.category), "Category 1")
        self.assertEquals(gem.name, "Gem 1")
        self.assertEquals(gem.address, "Address 1")
        self.assertEquals(gem.description, "Description 1")
        self.assertFalse(gem.image)  # make more robust
        self.assertEquals(gem.image_source, "Image source 1")
        self.assertEquals(gem.latitude, 50.50)
        self.assertEquals(gem.longitude, -4.40)
        self.assertEquals(gem.likes, 0)
        self.assertEquals(gem.reported, False)
        self.assertEquals(gem.added_by, user)
        self.assertNotEquals(gem.added_on, None)
        self.assertTrue(isinstance(gem.added_on, datetime.datetime))
        self.assertEquals(gem.slug, "gem-1")
Ejemplo n.º 7
0
    def test_titles_displayed(self):
        # Create user and log in
        test_utils.create_user()
        self.client.login(username='******', password='******')

        # Create a test category
        category = Category(name="Category 1")
        category.save()

        # Create a test gem
        gem = Gem(category=category, name="Gem 1")
        gem.save()

        # Access index and check the title displayed
        response = self.client.get(reverse('index'))
        self.assertIn('Glasgow Gems - '.lower(),
                      response.content.decode('ascii').lower())
        self.assertIn('Home'.lower(), response.content.decode('ascii').lower())

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

        # Access gem page and check the title displayed
        response = self.client.get(
            reverse('show_gem', args=[category.slug, gem.slug]))
        self.assertIn('Glasgow Gems - '.lower(),
                      response.content.decode('ascii').lower())
        self.assertIn(gem.name.lower(),
                      response.content.decode('ascii').lower())

        # Access add a gem page and check the title displayed
        response = self.client.get(reverse('add_gem'))
        self.assertIn(('Glasgow Gems - ').lower(),
                      response.content.decode('ascii').lower())
        self.assertIn('Add a Gem'.lower(),
                      response.content.decode('ascii').lower())

        # Access search results page and check the title displayed
        response = self.client.get(reverse('search_results'))
        self.assertIn('Glasgow Gems - '.lower(),
                      response.content.decode('ascii').lower())
        self.assertIn('Search results'.lower(),
                      response.content.decode('ascii').lower())

        # Access log in page and check the title displayed
        response = self.client.get(reverse('login'))
        self.assertIn('Glasgow Gems - '.lower(),
                      response.content.decode('ascii').lower())
        self.assertIn('Log In'.lower(),
                      response.content.decode('ascii').lower())

        # Access sign up page and check the title displayed
        response = self.client.get(reverse('sign_up'))
        self.assertIn('Glasgow Gems - '.lower(),
                      response.content.decode('ascii').lower())
        self.assertIn('Sign Up'.lower(),
                      response.content.decode('ascii').lower())