Tests for PersonCSVImportView

Now we'll try a text import.  Note that the description is not required

    >>> from zope.testbrowser.testing import Browser
    >>> browser = Browser()
    >>> browser.addHeader('Authorization', 'Basic manager:schooltool')
    >>> browser.open('http://localhost/persons/@@person-csvimport.html')
    >>> csvtext = "aperson, A Person, secret\nanother, A Nother Person With No Password"
    >>> browser.getControl(name='csvtext').value = csvtext
    >>> browser.getControl(name='charset').value = ['UTF-8']
    >>> browser.getControl(name='UPDATE_SUBMIT').click()

    >>> root = getRootFolder()
    >>> container = root['persons']
    >>> sorted([person for person in container])
    [u'another', u'aperson', u'manager']

If no data is provided, we naturally get an error

    >>> browser.open('http://localhost/persons/@@person-csvimport.html')
    >>> browser.getControl(name='charset').value = ['UTF-8']
    >>> browser.getControl(name='UPDATE_SUBMIT').click()
    >>> 'No data provided' in browser.contents
    True

We also get an error if a line starts with a comma (no title)

    >>> browser.open('http://localhost/persons/@@person-csvimport.html')
    >>> csvtext = ", No username provided here, secret"
    >>> browser.getControl(name='csvtext').value = csvtext
    >>> browser.getControl(name='charset').value = ['UTF-8']
    >>> browser.getControl(name='UPDATE_SUBMIT').click()
    >>> 'Failed to import CSV text' in browser.contents
    True
    >>> 'username may not be empty' in browser.contents
    True


Duplicate usernames are not imported, the error is noted to the user.

    >>> browser.open('http://localhost/persons/@@person-csvimport.html')
    >>> csvtext = "student1, Student 1, secret\nstudent2, Student 2, secret\nstudent1, Student 100"
    >>> browser.getControl(name='csvtext').value = csvtext
    >>> browser.getControl(name='charset').value = ['UTF-8']
    >>> browser.getControl(name='UPDATE_SUBMIT').click()

    >>> sorted([person for person in container])
    [u'another', u'aperson', u'manager', u'student1', u'student2']
    >>> 'Failed to import CSV text' in browser.contents
    True
    >>> 'Duplicate username: student1' in browser.contents
    True
