Skip to content

Commit 0e4cb80

Browse files
committed
We now have a model where we can save data
1 parent e7de493 commit 0e4cb80

File tree

8 files changed

+99
-3
lines changed

8 files changed

+99
-3
lines changed

PROCESS.md

+12
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,15 @@ Now we are done with coding the send_sms page with form.
143143
Let's go to the view function for send_sms, it's time for unit test.
144144

145145
Added the test and mocking for send_sms view
146+
147+
148+
5 Saving user input
149+
150+
Lets create the table where the data would be viewed.
151+
152+
Now we create a database called Messages
153+
154+
Then create a unit test to create that model
155+
156+
157+

functional_test.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -81,18 +81,21 @@ def test_can_view_the_page(self):
8181

8282
# He still didn't see any reply.
8383
table_replies = self.browser.find_element_by_id("id_table_replies")
84-
rows = table_replies.find_element_by_tag_name("tr")
84+
rows = table_replies.find_elements_by_tag_name("tr")
8585
self.assertTrue(
8686
any(row.text == "" for row in rows)
8787
)
8888

8989
# He got a notification from his phone, check and recieve the message
9090
# that he sent earlier. He immediately replied:
9191
# Elpedio Adoptante
92+
self.assertEqual(self.reply_from_chikka().status_code, 200)
93+
94+
time.sleep(2)
9295

9396
# He tries to refresh the page and saw the message like this.
9497
# Number Name
95-
# 09152087801 JayR
98+
# 09152087801 Elpedio Adoptante
9699
self.browser.refresh()
97100
table_replies = self.browser.find_element_by_id("id_table_replies")
98101
rows = table_replies.find_element_by_tag_name("tr")
@@ -102,6 +105,15 @@ def test_can_view_the_page(self):
102105

103106

104107
# He is now happy and closes the browser.
108+
109+
110+
def reply_from_chikka(self):
111+
import requests
112+
return requests.post("http://localhost:8000/chikka_receiver/", data={
113+
"mobile_number": "0945983495439",
114+
"message": "Elpedio Adoptante"
115+
})
116+
105117

106118

107119
if __name__ == '__main__':
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.10.5 on 2017-02-24 15:45
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Messages',
18+
fields=[
19+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('mobile_number', models.CharField(max_length=20)),
21+
('message', models.TextField()),
22+
],
23+
),
24+
]

sms_survey/engagement/models.py

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
from django.db import models
22

33
# Create your models here.
4+
5+
class Messages(models.Model):
6+
mobile_number = models.CharField(max_length=20)
7+
message = models.TextField()

sms_survey/engagement/templates/index.html

+5
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,10 @@
33
<body>
44
<header>Surveyor</header>
55
<a href="/send_sms/" id="id_send_sms_page">Want to send SMS, click here!</a>
6+
7+
<table id="id_table_replies">
8+
<tr></tr>
9+
</table>
10+
611
</body>
712
</html>

sms_survey/engagement/tests.py

+32
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.test import TestCase
44
from django.http import HttpRequest
55
from .views import index
6+
from .models import Messages
67

78

89
class HomePageTest(TestCase):
@@ -40,3 +41,34 @@ def test_chikka_api_is_called(self, mock_post):
4041

4142
# send chikka
4243
mock_post.assert_called()
44+
45+
class MessageModelTest(TestCase):
46+
47+
def setUp(self):
48+
Messages.objects.create(
49+
id=1,
50+
mobile_number="9847543895",
51+
message="This is a message",
52+
)
53+
54+
def test_can_save_data(self):
55+
# We can save data
56+
m = Messages.objects.all()
57+
self.assertTrue(len(m) > 0)
58+
59+
def test_can_retreive_data(self):
60+
# Retreive data
61+
m = Messages.objects.get(pk=1)
62+
self.assertEqual(m.mobile_number, "9847543895")
63+
64+
class ChikkaReceiverTest(TestCase):
65+
66+
def test_should_return_200(self):
67+
# it should return 200
68+
response = self.client.post("/chikka_receiver/", data={
69+
"mobile_number": "0945983495439",
70+
"message": "Elpedio Adoptante"
71+
})
72+
self.assertEqual(response.status_code, 200)
73+
74+

sms_survey/engagement/views.py

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import requests
22
from django.shortcuts import render, redirect
3+
# from .models import Messages
34

45
# Create your views here.
56
def index(request):
@@ -17,6 +18,11 @@ def send_sms(request):
1718
return render(request, 'send_sms.html')
1819

1920

21+
def chikka_receiver(request):
22+
from django.http import HttpResponse
23+
return HttpResponse({"message": "Success"})
24+
25+
2026
def chikka_proxy(request):
2127
from django.http import HttpResponse
2228
return HttpResponse({"message": "Success"})

sms_survey/sms_survey/urls.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
"""
1616
from django.conf.urls import url
1717

18-
from engagement.views import index, send_sms, chikka_proxy
18+
from engagement.views import index, send_sms, chikka_proxy, chikka_receiver
1919

2020
urlpatterns = [
2121
url(r'^$', index, name='index'),
2222
url(r'^send_sms/$', send_sms, name='send_sms'),
23+
url(r'^chikka_receiver/$', chikka_receiver, name='chikka_receiver'),
2324

2425

2526
# This is only need for testing locally

0 commit comments

Comments
 (0)