Fakultas Ilmu Komputer UI

tests.py 3.56 KB
Newer Older
1
2
from django.test import TestCase, Client
from django.urls import resolve
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from .views import DaftarKatalog, listMateri
from .models import Materi
from django.core import serializers
import json


class DaftarKatalogTest(TestCase):
    def test_daftar_katalog_url_exist(self):
        url = "/"
        response = Client().get(f'{url}')
        self.assertEqual(response.status_code,200)

    def test_daftar_katalog_using_daftar_katalog_template(self):
        response = Client().get('/')
        self.assertTemplateUsed(response, 'app/katalog_materi.html')
    
    def test_daftar_katalog_using_daftar_katalog_func(self):
        found = resolve('/')
        self.assertEqual(found.func.__name__, DaftarKatalog.as_view().__name__)

    def test_fields(self):
        materi = Materi()
        materi.title = 'tes'
        materi.cover = 'https://cache.umusic.com/_sites/billieeilish/v2/images/pic-red.jpg'
        materi.author = 'input'
        materi.save()

        resp = Materi.objects.get(id = materi.id)
        self.assertEqual(resp,materi)
    
    
    def test_resolution(self):
        resolver = resolve('/list-materi/')
        self.assertEqual(resolver.func, listMateri)


    def test_fungsi_get(self):
        self.materi = Materi()
        self.materi.title = 'Wahyu'
        self.materi.cover = 'https://cache.umusic.com/_sites/billieeilish/v2/images/pic-red.jpg'
        self.materi.author = 'Saul Andre Lumban Gaol'
        self.materi.save()
        client = Client()
        
        queryset = client.get('/list-materi/')
        
        expected_output = json.dumps({"pk": self.materi.pk, "model": "app.materi", "fields": {"cover": "https://cache.umusic.com/_sites/billieeilish/v2/images/pic-red.jpg", "title": "Wahyu", "author": "Saul Andre Lumban Gaol"}})
50
        unexpected_output = json.dumps({"pk": self.materi.pk, "model": "app.materi", "fields": {"cover": "", "title": "", "author": ""}})
51
        self.assertJSONEqual(queryset.json()[1:-1], expected_output)
52
53
54
55
56
57
58
59
        self.assertJSONNotEqual(queryset.json()[1:-1], unexpected_output)

class DetailMateriTest(TestCase):
    def test_detail_materi_url_exist(self):
        url = "/detail-materi"
        response = Client().get(f'{url}')
        self.assertEqual(response.status_code,200)
        self.assertNotEqual(response.status_code, 404)
Samuel Dimas's avatar
Samuel Dimas committed
60

61
62
63
64
65
66
67
    def test_detail_materi_using_daftar_katalog_template(self):
        response = Client().get('/')
        self.assertTemplateUsed(response, 'app/detail_materi.html')
    
    def test_detail_materi_using_detail_materi_func(self):
        found = resolve('/')
        self.assertEqual(found.func.__name__, detail_materi.as_view().__name__)
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

class TemplateLoaderTest(TestCase):
    def test_template_loader_url_exist(self):
        url = "/test-page.html"
        response = Client().get(url)
        self.assertEqual(response.status_code, 200)

    def test_template_loader_using_template_loader_template(self):
        url = "/test-page.html"
        response = Client().get(url)
        expected_template_name = "test-page.html"
        self.assertTemplateUsed(response, expected_template_name)

    def test_template_loader_using_template_loader_func(self):
        url = "/test-page.html"
        found = resolve(url)
        expected_view_name = "pages"
        self.assertEqual(found.func.__name__, expected_view_name)

    def test_template_loader_handle_non_existent_html(self):
        url = "/test.html"
        expected_template_name = "error-404.html"
        response = Client().get(url)
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, expected_template_name)