| 
									
										
										
										
											2016-05-05 01:03:35 -05:00
										 |  |  | from django.test import TestCase | 
					
						
							|  |  |  | from django.core.urlresolvers import reverse | 
					
						
							|  |  |  | from django.core.urlresolvers import resolve | 
					
						
							|  |  |  | from .models import VirtualMachineType | 
					
						
							|  |  |  | from .views import DjangoHostingView, RailsHostingView, NodeJSHostingView | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ProcessVMSelectionTestMixin(object): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def url_resolve_to_view_correctly(self): | 
					
						
							|  |  |  |         found = resolve(self.url) | 
					
						
							|  |  |  |         self.assertEqual(found.func.__name__, self.view.__name__) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_get(self): | 
					
						
							|  |  |  |         response = self.client.get(self.url) | 
					
						
							|  |  |  |         self.assertEqual(response.status_code, 200) | 
					
						
							|  |  |  |         self.assertEqual(self.view.get_context_data(), self.expected_context) | 
					
						
							|  |  |  |         self.assertEqual(response.context['hosting'], self.expected_context['hosting']) | 
					
						
							|  |  |  |         self.assertTemplateUsed(response, self.expected_template) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_anonymous_post(self): | 
					
						
							|  |  |  |         response = self.client.post(self.url) | 
					
						
							|  |  |  |         self.assertRedirects(response, expected_url=reverse('hosting:login'), | 
					
						
							|  |  |  |                              status_code=302, target_status_code=200) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DjangoHostingViewTest(TestCase, ProcessVMSelectionTestMixin): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.url = reverse('django.hosting') | 
					
						
							|  |  |  |         self.view = DjangoHostingView() | 
					
						
							|  |  |  |         self.expected_template = 'hosting/django.html' | 
					
						
							|  |  |  |         self.expected_context = { | 
					
						
							|  |  |  |             'hosting': "django", | 
					
						
							|  |  |  |             'hosting_long': "Django", | 
					
						
							|  |  |  |             'domain': "django-hosting.ch", | 
					
						
							|  |  |  |             'google_analytics': "UA-62285904-6", | 
					
						
							|  |  |  |             'email': "info@django-hosting.ch", | 
					
						
							|  |  |  |             'vm_types': VirtualMachineType.get_serialized_vm_types(), | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RailsHostingViewTest(TestCase, ProcessVMSelectionTestMixin): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.url = reverse('rails.hosting') | 
					
						
							|  |  |  |         self.view = RailsHostingView() | 
					
						
							|  |  |  |         self.expected_template = 'hosting/rails.html' | 
					
						
							|  |  |  |         self.expected_context = { | 
					
						
							|  |  |  |             'hosting': "rails", | 
					
						
							|  |  |  |             'hosting_long': "Ruby On Rails", | 
					
						
							|  |  |  |             'domain': "rails-hosting.ch", | 
					
						
							|  |  |  |             'google_analytics': "UA-62285904-5", | 
					
						
							|  |  |  |             'email': "info@rails-hosting.ch", | 
					
						
							|  |  |  |             'vm_types': VirtualMachineType.get_serialized_vm_types(), | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class NodeJSHostingViewTest(TestCase, ProcessVMSelectionTestMixin): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         self.url = reverse('node.hosting') | 
					
						
							|  |  |  |         self.view = NodeJSHostingView() | 
					
						
							|  |  |  |         self.expected_template = 'hosting/nodejs.html' | 
					
						
							|  |  |  |         self.expected_context = { | 
					
						
							|  |  |  |             'hosting': "nodejs", | 
					
						
							|  |  |  |             'hosting_long': "NodeJS", | 
					
						
							|  |  |  |             'domain': "node-hosting.ch", | 
					
						
							|  |  |  |             'google_analytics': "UA-62285904-7", | 
					
						
							|  |  |  |             'email': "info@node-hosting.ch", | 
					
						
							|  |  |  |             'vm_types': VirtualMachineType.get_serialized_vm_types(), | 
					
						
							|  |  |  |         } |