Skip to content

Commit 3da4dd6

Browse files
Persist series on database
1 parent e5a4349 commit 3da4dd6

File tree

5 files changed

+38
-15
lines changed

5 files changed

+38
-15
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,6 @@ ENV/
8888

8989
# Rope project settings
9090
.ropeproject
91+
92+
# Database
93+
*.sqlite3

tvseries/core.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import os
2+
23
from random import choice
34
from flask import Flask, render_template, request, redirect, url_for
45
from flask_sqlalchemy import SQLAlchemy
56

67
app = Flask(__name__)
78
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tvseries.sqlite3'
89
db = SQLAlchemy(app)
9-
series = []
1010

1111

1212
@app.route('/')
@@ -15,14 +15,22 @@ def home(name=None):
1515
image_filenames = os.listdir(image_directory)
1616
image = os.path.join('img', choice(image_filenames))
1717
img_url = url_for('static', filename=image)
18+
series = TVSerie.query.all()
1819
return render_template('home.html', series=series, image=img_url)
1920

2021

2122
@app.route('/add', methods=['GET', 'POST'])
2223
def add():
2324
if request.method == 'POST':
24-
serie_name = request.form.to_dict().get('serie-name')
25-
series.append(serie_name)
25+
name = request.form.to_dict().get('serie-name')
26+
description = request.form.to_dict().get('serie-description')
27+
author = request.form.to_dict().get('serie-author')
28+
episodies_number = request.form.to_dict().get('serie-episodes_number')
29+
30+
serie = TVSerie(name=name, description=description, author=author,
31+
episodies_number=episodies_number)
32+
db.session.add(serie)
33+
db.session.commit()
2634
return redirect('/')
2735

2836
return render_template('add.html')

tvseries/templates/add.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</div>
2121
<div class="form-group">
2222
<label>Número de episódios:</label>
23-
<input type="text" name="serie-episodes_number" id="id_serie-episodes_number">
23+
<input type="text" name="serie-episodies_number" id="id_serie-episodies_number">
2424
</div>
2525
</div>
2626
</div>

tvseries/templates/home.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<div class="panel-heading">Minhas series:</div>
1111
<ul class="list-group">
1212
{% for serie in series %}
13-
<li class="list-group-item">{{ serie }}</li>
13+
<li class="list-group-item">{{ serie.name }}</li>
1414
{% endfor %}
1515
</ul>
1616
</div>

tvseries/tests/test_core.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,36 @@ def app(self):
1111
from tvseries.core import app
1212
return app
1313

14-
def test_get_home(self):
14+
def test_get_home(self, db):
1515
response = self.client.get("/")
1616
assert '<div class="banner">' in response.data.decode('utf-8')
1717
assert response.status_code == 200
1818

19-
def test_get_add(self):
19+
def test_get_add_status_code(self):
2020
response = self.client.get("/add")
21-
assert ('<input type="text" name="serie-name" id="id_serie-name">' in
22-
response.data.decode('utf-8'))
2321
assert response.status_code == 200
2422

25-
def test_post_add(self):
26-
response = self.client.post("/add", data={"serie-name": "Teste"})
27-
from tvseries.core import series
28-
assert series == ['Teste']
29-
assert response.status_code == 302
23+
def test_get_add_content(self):
24+
response = self.client.get("/add")
25+
expected = (
26+
'name="serie-name" id="id_serie-name"',
27+
'name="serie-description" id="id_serie-description"',
28+
'name="serie-author" id="id_serie-author"',
29+
'name="serie-episodies_number" id="id_serie-episodies_number"',
30+
)
31+
for field in expected:
32+
assert field in response.data.decode('utf-8')
33+
34+
def test_post_add(self, db):
35+
response = self.client.post("/add", data={
36+
"serie-name": "Game of Thrones",
37+
"serie-author": "George R.R. Martin",
38+
"serie-description": "Teste",
39+
})
40+
result = TVSerie.query.filter(TVSerie.name == 'Game of Thrones')
41+
assert response.status_code == 302 and result.count() == 1
3042

31-
def test_navbar(self):
43+
def test_navbar(self, db):
3244
response = self.client.get("/")
3345
assert ('<nav class="navbar navbar-default"' in
3446
response.data.decode('utf-8'))

0 commit comments

Comments
 (0)