Skip to content
This repository has been archived by the owner on Jun 12, 2018. It is now read-only.

Commit

Permalink
Add API URL config option for Wikipedia app.
Browse files Browse the repository at this point in the history
  • Loading branch information
jerith committed Feb 24, 2014
1 parent 8c15079 commit 02d8639
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 3 deletions.
26 changes: 25 additions & 1 deletion go/apps/wikipedia/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def test_new_conversation(self):
self.assertEqual(conversation.description, '')
self.assertEqual(conversation.config, {})
self.assertEqual(list(conversation.extra_endpoints), [u'sms_content'])
self.assertRedirects(response, conv_helper.get_view_url('show'))
self.assertRedirects(response, conv_helper.get_view_url('edit'))

def test_show_stopped(self):
conv_helper = self.app_helper.create_conversation_helper(
Expand All @@ -45,3 +45,27 @@ def test_show_running(self):
name=u"myconv", started=True)
response = self.client.get(conv_helper.get_view_url('show'))
self.assertContains(response, u"<h1>myconv</h1>")

def test_edit_set_api_url(self):
conv_helper = self.app_helper.create_conversation_helper()
conversation = conv_helper.get_conversation()
self.assertEqual(conversation.config, {})
response = self.client.post(conv_helper.get_view_url('edit'), {
'api_url': 'http://wikipedia/api.php',
}, follow=True)
self.assertRedirects(response, conv_helper.get_view_url('show'))
reloaded_conv = conv_helper.get_conversation()
self.assertEqual(reloaded_conv.config, {
'api_url': 'http://wikipedia/api.php',
})

def test_edit_no_api_url(self):
conv_helper = self.app_helper.create_conversation_helper()
conversation = conv_helper.get_conversation()
self.assertEqual(conversation.config, {})
response = self.client.post(conv_helper.get_view_url('edit'), {
'wikipedia-api_url': '',
}, follow=True)
self.assertRedirects(response, conv_helper.get_view_url('show'))
reloaded_conv = conv_helper.get_conversation()
self.assertEqual(reloaded_conv.config, {})
7 changes: 7 additions & 0 deletions go/apps/wikipedia/tests/test_vumi_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,10 @@ def test_happy_flow(self):
ConversationMetric.make_name(self.conv, name) for name in [
'wikipedia_search_call', 'wikipedia_extract_call',
'wikipedia_extract_call']])

@inlineCallbacks
def test_api_url_config(self):
yield self.setup_conv({'api_url': 'http://wikipedia/api.php'})
msg = self.app_helper.make_inbound(None, conv=self.conv)
config = yield self.app.get_config(msg)
self.assertEqual(config.api_url.geturl(), 'http://wikipedia/api.php')
31 changes: 29 additions & 2 deletions go/apps/wikipedia/view_definition.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
from go.conversation.view_definition import ConversationViewDefinitionBase
from django import forms

from go.conversation.view_definition import (
ConversationViewDefinitionBase, EditConversationView)


class ConfigForm(forms.Form):
api_url = forms.CharField(
help_text='The mediawiki API URL to use.', required=False)

@staticmethod
def initial_from_config(data):
return {
'api_url': data.get('api_url', None),
}

def to_config(self):
data = self.cleaned_data
config_dict = {}
if data['api_url']:
config_dict['api_url'] = data['api_url']
return config_dict


class EditWikipediaView(EditConversationView):
edit_forms = (
(None, ConfigForm),
)


class ConversationViewDefinition(ConversationViewDefinitionBase):
pass
edit_view = EditWikipediaView

0 comments on commit 02d8639

Please sign in to comment.