def test_bulk_add(self): # We can upload a CSV file to create contacts & connections backend1 = self.create_backend() backend2 = self.create_backend() # Include a unicode name to make sure that works uname = u"Name 1 ḀḂḈ ᵺ" data = [ (uname, backend1.name, u"11111"), (u"Name 2", backend2.name, u"22222"), (u"Name 3", backend1.name, u"33333"), (u"Name 4", backend2.name, u"44444"), ] # Create test file testfile = u"\n".join([u",".join(parts) for parts in data]) + u"\n" testfile_data = testfile.encode("utf-8") with patch("rapidsms.contrib.registration.views.render") as render: request = Mock(method="POST", FILES={"bulk": StringIO(testfile_data)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) if not isinstance(retval, HttpResponseRedirect): context = render.call_args[0][2] self.fail(context["bulk_form"].errors + context["csv_errors"]) self.assertTrue(isinstance(retval, HttpResponseRedirect)) self.assertEqual(302, retval.status_code) contacts = Contact.objects.all() self.assertEqual(4, contacts.count()) names = [contact.name for contact in contacts] self.assertIn(uname, names)
def test_bulk_add(self): # We can upload a CSV file to create contacts & connections backend1 = self.create_backend() backend2 = self.create_backend() # Include a unicode name to make sure that works uname = u'Name 1 ḀḂḈ ᵺ' data = [ (uname, backend1.name, u'11111'), (u'Name 2', backend2.name, u'22222'), (u'Name 3', backend1.name, u'33333'), (u'Name 4', backend2.name, u'44444'), ] # Create test file testfile = u"\n".join([u",".join(parts) for parts in data]) + u"\n" testfile_data = testfile.encode('utf-8') with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile_data)}) request.__class__ = HttpRequest self.login() request.user = self.user retval = views.contact_bulk_add(request) if not isinstance(retval, HttpResponseRedirect): context = render.call_args[0][2] self.fail(context['bulk_form'].errors + context['csv_errors']) self.assertTrue(isinstance(retval, HttpResponseRedirect)) self.assertEqual(302, retval.status_code) contacts = Contact.objects.all() self.assertEqual(4, contacts.count()) names = [contact.name for contact in contacts] self.assertIn(uname, names)
def test_bulk_add(self): # We can upload a CSV file to create contacts & connections backend1 = self.create_backend() backend2 = self.create_backend() # Include a unicode name to make sure that works uname = u'Name 1 ḀḂḈ ᵺ' data = [ (uname, backend1.name, u'11111'), (u'Name 2', backend2.name, u'22222'), (u'Name 3', backend1.name, u'33333'), (u'Name 4', backend2.name, u'44444'), ] # Create test file testfile = u"\n".join([u",".join(parts) for parts in data]) + u"\n" testfile_data = testfile.encode('utf-8') with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile_data)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) if not isinstance(retval, HttpResponseRedirect): context = render.call_args[0][2] self.fail(context['bulk_form'].errors + context['csv_errors']) self.assertTrue(isinstance(retval, HttpResponseRedirect)) self.assertEqual(302, retval.status_code) contacts = Contact.objects.all() self.assertEqual(4, contacts.count()) names = [contact.name for contact in contacts] self.assertIn(uname, names)
def test_bulk_add_bad_line(self): testfile = "Field 1, field 2\n" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual('Could not unpack line 1', context['csv_errors'])
def test_bulk_add_bad_backend(self): testfile = "Field 1, no_such_backend, 123\n" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual("Could not find Backend. Line: 1", context['csv_errors'])
def test_bulk_add_no_lines(self): testfile = "" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual('No contacts found in file', context['csv_errors'])
def test_bulk_add_bad_line(self): testfile = "Field 1, field 2\n" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual('Could not unpack line 1', context['csv_errors'])
def test_bulk_add_no_lines(self): testfile = "" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual('No contacts found in file', context['csv_errors'])
def test_bulk_add_no_lines(self): testfile = "" with patch("rapidsms.contrib.registration.views.render") as render: request = Mock(method="POST", FILES={"bulk": StringIO(testfile)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn("csv_errors", context) self.assertEqual("No contacts found in file", context["csv_errors"])
def test_bulk_add_bad_backend(self): testfile = "Field 1, no_such_backend, 123\n" with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="POST", FILES={'bulk': StringIO(testfile)}) self.login() request.user = self.user retval = views.contact_bulk_add(request) self.assertFalse(isinstance(retval, HttpResponseRedirect)) context = render.call_args[0][2] self.assertIn('csv_errors', context) self.assertEqual("Could not find Backend. Line: 1", context['csv_errors'])
def test_bulk_get(self): # Just make sure the page loads with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="GET") views.contact_bulk_add(request) render.assert_called()
def test_bulk_get(self): # Just make sure the page loads with patch('rapidsms.contrib.registration.views.render') as render: request = Mock(method="GET") views.contact_bulk_add(request) render.assert_called()