Skip to content

Commit

Permalink
Update test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
chfw committed May 15, 2015
1 parent 4f5503e commit 9970184
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 32 deletions.
2 changes: 1 addition & 1 deletion pyexcel_io/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
pyexcel.io
pyexcel_io
~~~~~~~~~~~~~~~~~~~
Uniform interface for reading/writing different excel file formats
Expand Down
6 changes: 3 additions & 3 deletions pyexcel_io/base.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
"""
pyexcel.ext.io
pyexcel_io.base
~~~~~~~~~~~~~~~~~~~
The io interface to file extensions
:copyright: (c) 2014 by C. W.
:license: GPL v3
:copyright: (c) 2014-2015 by Onni Software Ltd.
:license: New BSD License, see LICENSE for more details
"""
import sys
import datetime
Expand Down
2 changes: 1 addition & 1 deletion pyexcel_io/sqlbook.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
pyexcel.io.sqlbook
pyexcel_io.sqlbook
~~~~~~~~~~~~~~~~~~~
The lower level handler for database import and export
Expand Down
22 changes: 19 additions & 3 deletions tests/test_csvz_book.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,34 @@
import os
from pyexcel_io import CSVZipBook, CSVZipWriter
from nose.tools import raises
import zipfile

class TestCVSZReading:
class TestCSVZ:
def setUp(self):
self.file = "csvz.csvz"

def test_writing(self):
data = [[1,2,3]]
file_name = 'pyexcel_sheet1.csv'
zipbook = CSVZipWriter(self.file)
sheet = zipbook.create_sheet(None)
sheet.write_array(data)
sheet.close()
zipbook.close()
zip = zipfile.ZipFile(self.file, 'r')
assert zip.namelist() == ['pyexcel_sheet.csv']
assert zip.namelist() == [file_name]
content = zip.read(file_name)
assert content.replace('\r','').strip('\n') == "1,2,3"

def test_reading(self):
data = [[1,2,3]]
zipbook = CSVZipWriter(self.file)
sheet = zipbook.create_sheet(None)
sheet.write_array(data)
sheet.close()
zipbook.close()
zipreader = CSVZipBook(self.file)
data = zipreader.sheets()
assert data['pyexcel_sheet1'] == [['1','2','3']]

def tearDown(self):
os.unlink(self.file)
33 changes: 22 additions & 11 deletions tests/test_django_book.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from pyexcel_io import get_data, save_data, DB_DJANGO, OrderedDict, DEFAULT_SHEET_NAME
from nose.tools import raises
from pyexcel_io import save_data, DB_DJANGO, OrderedDict, DEFAULT_SHEET_NAME
from pyexcel_io.djangobook import DjangoModelReader, DjangoModelWriter, DjangoBookReader, DjangoBookWriter


class Attributable:
def __init__(self, adict):
Expand Down Expand Up @@ -55,15 +56,19 @@ def setUp(self):

def test_sheet_save_to_django_model(self):
model=FakeDjangoModel()
save_data(DB_DJANGO, self.data[1:], models={DEFAULT_SHEET_NAME: [model, self.data[0], None, None]})
writer = DjangoModelWriter([model, self.data[0], None, None])
writer.write_array(self.data[1:])
writer.close()
assert model.objects.objs == self.result

def test_sheet_save_to_django_model_3(self):
model=FakeDjangoModel()
def wrapper(row):
row[0] = row[0] + 1
return row
save_data(DB_DJANGO, self.data[1:], models={DEFAULT_SHEET_NAME: [model, self.data[0], None, wrapper]})
writer = DjangoModelWriter([model, self.data[0], None, wrapper])
writer.write_array(self.data[1:])
writer.close()
assert model.objects.objs == [
{'Y': 2, 'X': 2, 'Z': 3},
{'Y': 5, 'X': 5, 'Z': 6}
Expand All @@ -74,7 +79,8 @@ def test_load_sheet_from_django_model(self):
save_data(DB_DJANGO, self.data[1:], models={DEFAULT_SHEET_NAME: [model, self.data[0], None, None]})
assert model.objects.objs == self.result
model._meta.update(["X", "Y", "Z"])
data = get_data(DB_DJANGO, models=[model])
reader = DjangoModelReader(model)
data = reader.to_array()
assert data == self.data

def test_mapping_array(self):
Expand All @@ -85,7 +91,9 @@ def test_mapping_array(self):
]
mapdict = ["X", "Y", "Z"]
model=FakeDjangoModel()
save_data(DB_DJANGO, data2[1:], models={DEFAULT_SHEET_NAME: [model, data2[0], mapdict, None]})
writer = DjangoModelWriter([model, data2[0], mapdict, None])
writer.write_array(data2[1:])
writer.close()
assert model.objects.objs == self.result

def test_mapping_dict(self):
Expand All @@ -100,7 +108,9 @@ def test_mapping_dict(self):
"B": "Y"
}
model=FakeDjangoModel()
save_data(DB_DJANGO, data2[1:], models={DEFAULT_SHEET_NAME: [model, data2[0], mapdict, None]})
writer = DjangoModelWriter([model, data2[0], mapdict, None])
writer.write_array(data2[1:])
writer.close()
assert model.objects.objs == self.result


Expand All @@ -119,10 +129,12 @@ def test_save_to_more_models(self):
"Sheet1": self.content['Sheet1'][1:],
"Sheet2": self.content['Sheet2'][1:]
}
save_data(DB_DJANGO, to_store, models={
writer = DjangoBookWriter(DB_DJANGO, {
"Sheet1": [model1, self.content['Sheet1'][0], None, None],
"Sheet2": [model2, self.content['Sheet2'][0], None, None]
})
writer.write(to_store)
writer.close()
assert model1.objects.objs == self.result1
assert model2.objects.objs == self.result2

Expand All @@ -143,7 +155,6 @@ def test_reading_from_more_models(self):
model2._meta.model_name = "Sheet2"
model1._meta.update(["X", "Y", "Z"])
model2._meta.update(["A", "B", "C"])
data = get_data(DB_DJANGO, models=[model1, model2])
reader = DjangoBookReader([model1, model2])
data = reader.sheets()
assert data == self.content


31 changes: 18 additions & 13 deletions tests/test_sql_book.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import datetime
from pyexcel_io import (
DB_SQL,
get_data,
save_data,
from_query_sets,
DEFAULT_SHEET_NAME
SQLBookReader,
SQLBookWriter,
from_query_sets
)
from pyexcel_io.sqlbook import SQLTableReader, SQLTableWriter
from sqlalchemy.orm import relationship, backref

engine=create_engine("sqlite:///tmp.db")
Expand Down Expand Up @@ -79,12 +79,14 @@ def setUp(self):

def test_sql(self):
mysession=Session()
data = get_data(DB_SQL, session=mysession, tables=[Pyexcel])
sheet = SQLTableReader(mysession, Pyexcel)
data = sheet.to_array()
content = [
['birth', 'id', 'name', 'weight'],
['2014-11-11', 0, 'Adam', 11.25],
['2014-11-12', 1, 'Smith', 12.25]
]
# 'pyexcel'' here is the table name
assert data == content
mysession.close()

Expand All @@ -106,17 +108,15 @@ def setUp(self):

def test_one_table(self):
mysession = Session()
save_data(DB_SQL,
self.data[1:],
session=mysession,
tables={ DEFAULT_SHEET_NAME: [Pyexcel,self.data[0], None, None]}
)
writer = SQLTableWriter(mysession,
[Pyexcel,self.data[0], None, None])
writer.write_array(self.data[1:])
writer.close()
query_sets=mysession.query(Pyexcel).all()
results = from_query_sets(self.data[0], query_sets)
assert results == self.results



class TestMultipleRead:
def setUp(self):
Base.metadata.drop_all(engine)
Expand Down Expand Up @@ -151,10 +151,15 @@ def post_init_func(row):
"Category": data['Category'][1:],
"Post": data['Post'][1:]
}
save_data(DB_SQL, to_store, session=self.session, tables=tables)
writer = SQLBookWriter(DB_SQL,
session=self.session,
tables=tables)
writer.write(to_store)
writer.close()

def test_read(self):
data = get_data(DB_SQL, session=self.session, tables=[Category, Post])
book = SQLBookReader(session=self.session, tables=[Category, Post])
data = book.sheets()
import json
assert json.dumps(data) == '{"category": [["id", "name"], [1, "News"], [2, "Sports"]], "post": [["body", "category_id", "id", "pub_date", "title"], ["formal", 1, 1, "2015-01-20T23:28:29", "Title A"], ["informal", 2, 2, "2015-01-20T23:28:30", "Title B"]]}'

Expand Down

0 comments on commit 9970184

Please sign in to comment.