def test_formdata_to_model_ignores_arxiv_pdf():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'url': 'https://arxiv.org/pdf/1511.04200.pdf'
    }

    formdata_to_model(obj, formdata)

    assert 'submission_pdf' not in obj.extra_data
def test_formdata_to_model_ignores_arxiv_pdf():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'url': 'https://arxiv.org/pdf/1511.04200.pdf'
    }

    formdata_to_model(obj, formdata)

    assert 'submission_pdf' not in obj.extra_data
Ejemplo n.º 3
0
def test_formdata_to_model_only_pdf():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'url': 'https://ora.ox.ac.uk/content01.pdf'
    }

    formdata_to_model(obj, formdata)

    expected = {'submission_pdf': 'https://ora.ox.ac.uk/content01.pdf'}

    assert expected == obj.extra_data
def test_formdata_to_model_only_chapter(mock_validate_record):
    schema = load_schema('hep')
    book_series_subschema = schema['properties']['book_series']
    publication_info_subschema = schema['properties']['publication_info']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'end_page': '1200',
        'parent_book': 'http://localhost:5000/api/literature/1373790',
        'series_title': 'Astrophysics',
        'start_page': '150',
        'type_of_doc': 'chapter',
    }

    expected_book_series = [
        {'title': 'Astrophysics'},
    ]
    expected_publication_info = [
        {
            'page_end': '1200',
            'page_start': '150',
            'parent_record': {
                '$ref': 'http://localhost:5000/api/literature/1373790',
            },
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert validate(result['book_series'], book_series_subschema) is None
    assert expected_book_series == result['book_series']

    assert validate(result['publication_info'], publication_info_subschema) is None
    assert expected_publication_info == result['publication_info']
def test_formdata_to_model_only_chapter(mock_validate_record):
    schema = load_schema('hep')
    book_series_subschema = schema['properties']['book_series']
    publication_info_subschema = schema['properties']['publication_info']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'end_page': '1200',
        'parent_book': 'http://localhost:5000/api/literature/1373790',
        'series_title': 'Astrophysics',
        'start_page': '150',
        'type_of_doc': 'chapter',
    }

    expected_book_series = [
        {'title': 'Astrophysics'},
    ]
    expected_publication_info = [
        {
            'page_end': '1200',
            'page_start': '150',
            'parent_record': {
                '$ref': 'http://localhost:5000/api/literature/1373790',
            },
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert validate(result['book_series'], book_series_subschema) is None
    assert expected_book_series == result['book_series']

    assert validate(result['publication_info'], publication_info_subschema) is None
    assert expected_publication_info == result['publication_info']
def test_formdata_to_model_populates_submission_data_references(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'references': [
            'baz',
        ],
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'references': [
                'baz',
            ],
        },
    }
def test_formdata_to_model_populates_hidden_notes_from_extra_comments(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'extra_comments': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'submitter',
            'value': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['hidden_notes']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'extra_comments': 'baz',
        },
    }
Ejemplo n.º 8
0
def test_formdata_to_model_populates_hidden_notes_from_extra_comments(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'extra_comments': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'submitter',
            'value': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['hidden_notes']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'extra_comments': 'baz',
        },
    }
Ejemplo n.º 9
0
def test_formdata_to_model_populates_titles_from_title_crossref(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'title_crossref': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'submitter',
            'title': 'bar',
        },
        {
            'source': 'CrossRef',
            'title': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['titles']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 10
0
def test_formdata_to_model_populates_collections_and_hidden_notes_from_conf_name(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'conf_name': 'baz',
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert result['collections'] == [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'ConferencePaper',
        },
    ]
    assert result['hidden_notes'] == [
        {
            'value': 'baz',
        },
    ]
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 11
0
def test_formdata_to_model_populates_submission_data_pdf_from_pdf(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'url': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'value': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['urls']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'pdf': 'baz',
        },
    }
Ejemplo n.º 12
0
def test_formdata_to_model_populates_collections_from_field_categories_if_arxiv(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'categories': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'arXiv',
        },
        {
            'primary': 'Citeable',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 13
0
def test_formdata_to_model_populates_external_system_numbers_from_arxiv_id(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'arxiv_id': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'value': 'oai:arXiv.org:baz',
            'institute': 'arXiv',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['external_system_numbers']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_external_system_numbers_from_arxiv_id(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'arxiv_id': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'value': 'oai:arXiv.org:baz',
            'institute': 'arXiv',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['external_system_numbers']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_only_thesis(mock_validate_record):
    schema = load_schema('hep')
    subschema = schema['properties']['thesis_info']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'defense_date': '2010-03-03',
        'degree_type': 'phd',
        'institution': 'Harvard',
        'thesis_date': '2011-05-03',
        'type_of_doc': 'thesis',
    }

    expected = {
        'date': '2011-05-03',
        'defense_date': '2010-03-03',
        'degree_type': 'phd',
        'institutions': [
            {'name': 'Harvard'},
        ],
    }
    result = formdata_to_model(obj, formdata)

    assert validate(result['thesis_info'], subschema) is None
    assert expected == result['thesis_info']
def test_formdata_to_model_populates_collections_from_field_categories_if_arxiv(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'categories': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'arXiv',
        },
        {
            'primary': 'Citeable',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_abstracts_from_abstracts_if_arxiv(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'categories': 'baz',
        'abstract': ' qux ',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'arXiv',
            'value': 'qux',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['abstracts']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 18
0
def test_formdata_to_model_populates_languages_from_languages_and_other_language(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'language': 'oth',
        'other_language': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        'baz',
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['languages']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_only_thesis(mock_validate_record):
    schema = load_schema('hep')
    subschema = schema['properties']['thesis_info']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'defense_date': '2010-03-03',
        'degree_type': 'phd',
        'institution': 'Harvard',
        'thesis_date': '2011-05-03',
        'type_of_doc': 'thesis',
    }

    expected = {
        'date': '2011-05-03',
        'defense_date': '2010-03-03',
        'degree_type': 'phd',
        'institutions': [
            {'name': 'Harvard'},
        ],
    }
    result = formdata_to_model(obj, formdata)

    assert validate(result['thesis_info'], subschema) is None
    assert expected == result['thesis_info']
Ejemplo n.º 20
0
def test_formdata_to_model_populates_collections_from_type_of_doc_thesis(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'thesis',
        'title': [
            'foo',
        ],
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'THESIS',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 21
0
def test_formdata_to_model_populates_collections_from_complete_publication_info(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'issue': 'baz',
        'volume': 'qux',
        'year': 'quux',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'Published',
        },
        {
            'primary': 'Citeable',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_collections_from_complete_publication_info(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'issue': 'baz',
        'volume': 'qux',
        'year': 'quux',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'Published',
        },
        {
            'primary': 'Citeable',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_submission_data_pdf_from_pdf(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'url': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'value': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['urls']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'pdf': 'baz',
        },
    }
def test_formdata_to_model_populates_titles_from_title_crossref(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'title_crossref': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'submitter',
            'title': 'bar',
        },
        {
            'source': 'CrossRef',
            'title': 'baz',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['titles']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_collections_from_type_of_doc_thesis(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'thesis',
        'title': [
            'foo',
        ],
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'THESIS',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['collections']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_collections_and_hidden_notes_from_conf_name(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'conf_name': 'baz',
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert result['collections'] == [
        {
            'primary': 'HEP',
        },
        {
            'primary': 'ConferencePaper',
        },
    ]
    assert result['hidden_notes'] == [
        {
            'value': 'baz',
        },
    ]
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 27
0
def test_formdata_to_model_populates_abstracts_from_abstracts_if_arxiv(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'categories': 'baz',
        'abstract': ' qux ',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'source': 'arXiv',
            'value': 'qux',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['abstracts']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
Ejemplo n.º 28
0
def test_formdata_to_model_populates_submission_data_references(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'references': [
            'baz',
        ],
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {
            'references': [
                'baz',
            ],
        },
    }
def test_formdata_to_model_only_pdf():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'url': 'https://ora.ox.ac.uk/content01.pdf'
    }

    formdata_to_model(obj, formdata)

    expected = {
        'submission_pdf': 'https://ora.ox.ac.uk/content01.pdf'
    }

    assert expected == obj.extra_data
def test_formdata_to_model_ignores_arxiv_additional_url():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'additional_url': 'https://arxiv.org/abs/1511.04200'
    }

    record = formdata_to_model(obj, formdata)

    assert 'urls' not in record
def test_formdata_to_model_ignores_arxiv_additional_url():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'additional_url': 'https://arxiv.org/abs/1511.04200'
    }

    record = formdata_to_model(obj, formdata)

    assert 'urls' not in record
Ejemplo n.º 32
0
def test_formdata_to_model_only_additional_url():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'additional_url': 'https://ora.ox.ac.uk/splash_page.html'
    }

    record = formdata_to_model(obj, formdata)

    expected_urls = [{'value': 'https://ora.ox.ac.uk/splash_page.html'}]

    assert expected_urls == record['urls']
    assert 'submission_pdf' not in obj.extra_data
def test_formdata_to_model_populates_schema(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
    }

    obj = StubObj(data, extra_data)

    expected = 'https://localhost:5000/schemas/records/hep.json'
    result = formdata_to_model(obj, formdata)

    assert expected == result['$schema']
    assert obj.data == {}
def test_formdata_to_model_no_page_nr_when_invalid_page_range_article_id(
        u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'page_range_article_id': 'baz-qux',
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert 'page_nr' not in result
    assert obj.data == {}
def test_formdata_to_model_only_additional_url():
    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'type_of_doc': 'article',
        'title': 'Test title',
        'additional_url': 'https://ora.ox.ac.uk/splash_page.html'
    }

    record = formdata_to_model(obj, formdata)

    expected_urls = [{
        'value': 'https://ora.ox.ac.uk/splash_page.html'
    }]

    assert expected_urls == record['urls']
    assert 'submission_pdf' not in obj.extra_data
def test_formdata_to_model_populates_page_nr_from_page_range_article_id(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'page_range_article_id': '1-10',
    }

    obj = StubObj(data, extra_data)

    expected = 10
    result = formdata_to_model(obj, formdata)

    assert expected == result['page_nr']
    assert obj.data == {}
def test_formdata_to_model_populates_languages_from_languages(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'language': 'fre'
    }

    obj = StubObj(data, extra_data)

    expected = [
        'French',
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['languages']
    assert obj.data == {}
def test_formdata_to_model_no_page_nr_when_invalid_page_range_article_id(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'page_range_article_id': 'baz-qux',
    }

    obj = StubObj(data, extra_data)

    result = formdata_to_model(obj, formdata)

    assert 'page_nr' not in result
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_schema(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
    }

    obj = StubObj(data, extra_data)

    expected = 'https://localhost:5000/schemas/records/hep.json'
    result = formdata_to_model(obj, formdata)

    assert expected == result['$schema']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_populates_page_nr_from_page_range_article_id(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'page_range_article_id': '1-10',
    }

    obj = StubObj(data, extra_data)

    expected = 10
    result = formdata_to_model(obj, formdata)

    assert expected == result['page_nr']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }
def test_formdata_to_model_normalizes_journal_title(e, ui, u):
    e.return_value = Response({
        'hits': {
            'hits': [
                {
                    '_index': 'records-hep',
                    '_type': 'hep',
                    '_id': '42',
                    '_source': {
                        'short_titles': [
                            {
                                'title': 'quux'
                            },
                        ],
                    },
                },
            ],
        },
    })

    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'journal_title': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        {
            'journal_title': 'quux'
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['publication_info']
def test_formdata_to_model_only_book(mock_validate_record):
    schema = load_schema('hep')
    subschema = schema['properties']['book_series']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'series_title': 'Astrophysics No2',
        'series_volume': 'Universe',
        'type_of_doc': 'book',
    }

    expected = [
        {
            'title': 'Astrophysics No2',
            'volume': 'Universe',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert validate(result['book_series'], subschema) is None
    assert expected == result['book_series']
def test_formdata_to_model_only_book(mock_validate_record):
    schema = load_schema('hep')
    subschema = schema['properties']['book_series']

    data = {}
    extra_data = {}
    obj = MockObj(data, extra_data)
    formdata = {
        'series_title': 'Astrophysics No2',
        'series_volume': 'Universe',
        'type_of_doc': 'book',
    }

    expected = [
        {
            'title': 'Astrophysics No2',
            'volume': 'Universe',
        },
    ]
    result = formdata_to_model(obj, formdata)

    assert validate(result['book_series'], subschema) is None
    assert expected == result['book_series']
def test_formdata_to_model_populates_languages_from_languages_and_other_language(u, ui):
    data = {}
    extra_data = {}
    formdata = {
        'type_of_doc': 'foo',
        'title': [
            'bar',
        ],
        'language': 'oth',
        'other_language': 'baz',
    }

    obj = StubObj(data, extra_data)

    expected = [
        'baz',
    ]
    result = formdata_to_model(obj, formdata)

    assert expected == result['languages']
    assert obj.data == {}
    assert obj.extra_data == {
        'submission_data': {},
    }