aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Metaireau <alexis@notmyidea.org>2011-08-21 20:54:20 +0200
committerAlexis Metaireau <alexis@notmyidea.org>2011-08-21 20:54:20 +0200
commit35ea308a2692365001dc88212999df9a041bdaf7 (patch)
treec519797a3d7added2421840e78f56e488096b856
parent63a64910018cbc029e34ccf93370649a517c96d8 (diff)
downloadihatemoney-mirror-35ea308a2692365001dc88212999df9a041bdaf7.zip
ihatemoney-mirror-35ea308a2692365001dc88212999df9a041bdaf7.tar.gz
ihatemoney-mirror-35ea308a2692365001dc88212999df9a041bdaf7.tar.bz2
Fix a weird behavior with tests and databases.
Now all the database during the tests is in memory, created for each test and cleared at the end of the test.
-rw-r--r--budget/static/main.css19
-rw-r--r--budget/templates/forms.html15
-rw-r--r--budget/templates/home.html20
-rw-r--r--budget/tests.py25
-rw-r--r--budget/web.py22
5 files changed, 71 insertions, 30 deletions
diff --git a/budget/static/main.css b/budget/static/main.css
index 5d8b268..8445aa5 100644
--- a/budget/static/main.css
+++ b/budget/static/main.css
@@ -54,6 +54,25 @@ div.topbar ul.secondary-nav { padding-right: 75px; }
display: inline;
}
+#header .additional-content{
+ font-family: 'Comfortaa', arial, serif;
+ float: right;
+ position: relative;
+ top: -150px;
+ margin-right: 200px;
+ margin-bottom: -100px;
+
+}
+
+.home form button{
+ float: right;
+ margin-right: 100px;
+}
+.home .create h3{
+ text-align: right;
+ margin-right: 100px;
+}
+
.footer{
position: absolute;
bottom: 0px;
diff --git a/budget/templates/forms.html b/budget/templates/forms.html
index 4e62f58..690f59d 100644
--- a/budget/templates/forms.html
+++ b/budget/templates/forms.html
@@ -26,17 +26,19 @@
</div>
{% endmacro %}
-{% macro authenticate(form) %}
+{% macro authenticate(form, home=False) %}
{% include "display_errors.html" %}
{{ form.hidden_tag() }}
{{ input(form.id) }}
{{ input(form.password) }}
+ {% if not home %}
{{ submit(form.submit) }}
+ {% endif %}
{% endmacro %}
-{% macro create_project(form) %}
+{% macro create_project(form, home=False) %}
{% include "display_errors.html" %}
{{ form.hidden_tag() }}
@@ -44,7 +46,9 @@
{{ input(form.id) }}
{{ input(form.password) }}
{{ input(form.contact_email) }}
+ {% if not home %}
{{ submit(form.submit) }}
+ {% endif %}
{% endmacro %}
@@ -70,10 +74,3 @@
<button class="btn">Add a new user</button>
{% endmacro %}
-
-{% macro authenticate(form) %}
- {{ form.hidden_tag() }}
- {{ input(form.id) }}
- {{ input(form.password) }}
- {{ submit(form.submit) }}
-{% endmacro %}
diff --git a/budget/templates/home.html b/budget/templates/home.html
index eb795ba..1b77cbd 100644
--- a/budget/templates/home.html
+++ b/budget/templates/home.html
@@ -6,29 +6,33 @@
{% block header %}
<div id="header">
<div class="slide">
- <h1><span>Manage your shared <br>expenses easily</span></h1>
+ <h1><span>Manage your shared <br>expenses, easily</span></h1>
<a href="{{ url_for("demo") }}" class="about_link">Try out the demo</a>
</div>
+ <div class="additional-content">
+ <p>You're sharing a house?<br /> Going on holidays with friends?<br /> Simply sharing money with others? <br /><strong>We can help!</strong></p>
+ </div>
+
</div>
{% endblock %}
{% block container %}
<div class="container-fluid" style="margin-top: 20px">
- <div class="content">
+ <div class="content home">
- <h2>Welcome on your budget manager</h2>
- <p>You're sharing a house? Going on holidays with friends? Simply sharing money with others? We can help!</p>
- <div class="row">
+ <div class="row">
<div class="span8 columns">
<form action="{{ url_for('authenticate') }}" method="post">
<h3>Log to an existing project...</h3>
- {{ forms.authenticate(auth_form) }}
+ {{ forms.authenticate(auth_form, home=True) }}
+ <button class="btn">log in</button>
</form>
</div>
<div class="span8 columns">
- <form action="{{ url_for('create_project') }}" method="post">
+ <form class="create" action="{{ url_for('create_project') }}" method="post">
<h3>...or create a new one</h3>
- {{ forms.create_project(project_form) }}</div>
+ {{ forms.create_project(project_form, home=True) }}
+ <button class="btn">let's get started</button>
</form>
</div>
</div>
diff --git a/budget/tests.py b/budget/tests.py
index 595d1a1..f16a1e1 100644
--- a/budget/tests.py
+++ b/budget/tests.py
@@ -13,8 +13,7 @@ class TestCase(unittest.TestCase):
def setUp(self):
web.app.config['TESTING'] = True
- self.fd, self.fp = tempfile.mkstemp()
- web.app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///%s" % self.fp
+ web.app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///memory"
web.app.config['CSRF_ENABLED'] = False # simplify the tests
self.app = web.app.test_client()
@@ -26,8 +25,8 @@ class TestCase(unittest.TestCase):
def tearDown(self):
# clean after testing
- os.close(self.fd)
- os.unlink(self.fp)
+ models.db.session.remove()
+ models.db.drop_all()
def login(self, project, password=None, test_client=None):
password = password or project
@@ -177,6 +176,24 @@ class BudgetTestCase(TestCase):
result = self.app.get("/raclette/add")
self.assertNotIn("fred", result.data)
+ def test_demo(self):
+ # Test that it is possible to connect automatically by going onto /demo
+ with web.app.test_client() as c:
+ models.db.session.add(models.Project(id="demo", name=u"demonstration",
+ password="demo", contact_email="demo@notmyidea.org"))
+ models.db.session.commit()
+ c.get("/demo")
+
+ # session is updated
+ self.assertEqual(session['demo'], 'demo')
+
+ def test_demo(self):
+ # test that a demo project is created if none is defined
+ with web.app.test_client() as c:
+ self.assertEqual([], models.Project.query.all())
+ c.get("/demo")
+ self.assertTrue(models.Project.query.get("demo") is not None)
+
if __name__ == "__main__":
unittest.main()
diff --git a/budget/web.py b/budget/web.py
index 4e2b33f..59d7f30 100644
--- a/budget/web.py
+++ b/budget/web.py
@@ -14,15 +14,6 @@ app = Flask(__name__)
app.config.from_object("default_settings")
mail = Mail()
-# db
-db.init_app(app)
-db.app = app
-db.create_all()
-
-# mail
-mail.init_app(app)
-
-
@app.url_defaults
def add_project_id(endpoint, values):
if 'project_id' in values or not hasattr(g, 'project'):
@@ -126,6 +117,11 @@ def exit():
@app.route("/demo")
def demo():
project = Project.query.get("demo")
+ if not project:
+ project = Project(id="demo", name=u"demonstration", password="demo",
+ contact_email="demo@notmyidea.org")
+ db.session.add(project)
+ db.session.commit()
session[project.id] = project.password
return redirect(url_for("list_bills", project_id=project.id))
@@ -247,6 +243,14 @@ def reset_bills():
def main():
+ # db
+ db.init_app(app)
+ db.app = app
+ db.create_all()
+
+ # mail
+ mail.init_app(app)
+
app.run(host="0.0.0.0", debug=True)
if __name__ == '__main__':