Revision: 2631
Author: janne.t.harkonen
Date: Mon Mar 15 13:37:29 2010
Log: User is really an employee in disguise
http://code.google.com/p/robotframework/source/detail?r=2631
Modified:
/trunk/proto/atdd_example/VacalcLibrary.py
/trunk/proto/atdd_example/atest/add_employee.txt
/trunk/proto/atdd_example/vacalc.py
=======================================
--- /trunk/proto/atdd_example/VacalcLibrary.py Mon Mar 15 13:15:50 2010
+++ /trunk/proto/atdd_example/VacalcLibrary.py Mon Mar 15 13:37:29 2010
@@ -2,7 +2,7 @@
import sys
import subprocess
-from vacalc import User, UserStore
+from vacalc import Employee, EmployeeStore
class VacalcLibrary(object):
@@ -11,17 +11,17 @@
self._db_file = db_file
def count_vacation(self, startdate, year):
- return User('Foo', startdate).count_vacation(year)
+ return Employee('Foo', startdate).count_vacation(year)
def clear_database(self):
if os.path.isfile(self._db_file):
os.remove(self._db_file)
- def add_user(self, name, startdate):
- self._run('add_user', name, startdate)
-
- def get_user(self, name):
- self._run('get_user', name)
+ def add_employee(self, name, startdate):
+ self._run('add_employee', name, startdate)
+
+ def get_employee(self, name):
+ self._run('get_employee', name)
def _run(self, command, *args):
cmd = [sys.executable, 'vacalc.py', command] + list(args)
=======================================
--- /trunk/proto/atdd_example/atest/add_employee.txt Mon Mar 15 13:26:37
2010
+++ /trunk/proto/atdd_example/atest/add_employee.txt Mon Mar 15 13:37:29
2010
@@ -3,7 +3,7 @@
Add employee
Given no users exist in the system
When employee Janne H is added with start date 2010-1-1
- Then message "Successfully added user 'Janne H'." is shown
+ Then message "Successfully added employee 'Janne H'." is shown
Added Employee is done persistently
Given no users exist in the system
@@ -22,13 +22,13 @@
Clear Database
Employee ${name} is added with start date ${date}
- Add User ${name} ${date}
+ Add Employee ${name} ${date}
Then message "${msg}" is shown
Status Should Be ${msg}
User queries info about ${name}
- Get User ${name}
+ Get Employee ${name}
Then error message "${msg}" is shown
Status Should Be ${msg}
=======================================
--- /trunk/proto/atdd_example/vacalc.py Mon Mar 15 13:26:42 2010
+++ /trunk/proto/atdd_example/vacalc.py Mon Mar 15 13:37:29 2010
@@ -8,61 +8,61 @@
class VacalcError(Exception): pass
-class UserStore(object):
+class EmployeeStore(object):
def __init__(self, db_file='db.csv'):
self._db_file = db_file
if db_file and os.path.isfile(db_file):
- self._users = self._read_users(db_file)
+ self._employees = self._read_employees(db_file)
else:
- self._users = {}
-
- def _read_users(self, path):
- users = {}
+ self._employees = {}
+
+ def _read_employees(self, path):
+ employees = {}
with open(path) as db:
for row in csv.reader(db):
- user = User(row[0], row[1])
- users[user.name] = user
- return users
-
- def get_user(self, name):
+ employee = Employee(row[0], row[1])
+ employees[employee.name] = employee
+ return employees
+
+ def get_employee(self, name):
for row in csv.reader(open(self._db_file)):
if row[0] == name:
- return User(row[0], row[1])
-
- def add_user(self, name, startdate):
- if name in self._users:
+ return Employee(row[0], row[1])
+
+ def add_employee(self, name, startdate):
+ if name in self._employees:
raise VacalcError("Employee '%s' already exists in the
system" % name)
- user = User(name, startdate)
- self._users[user.name] = user
- self._serialize(user)
- return user
-
- def _serialize(self, user):
+ employee = Employee(name, startdate)
+ self._employees[employee.name] = employee
+ self._serialize(employee)
+ return employee
+
+ def _serialize(self, employee):
with open(self._db_file, 'a') as db:
writer = csv.writer(db, lineterminator='\n')
- writer.writerow([user.name, user.startdate.isoformat()])
+ writer.writerow([employee.name,
employee.startdate.isoformat()])
class VacationCalculator(object):
- def __init__(self, userstore):
- self._userstore = userstore
+ def __init__(self, employeestore):
+ self._employeestore = employeestore
def vacation(self, name, year):
- user = self._userstore.get_user(name, year)
- return user.count_vacation(year)
-
- def add_user(self, name, startdate):
- user = self._userstore.add_user(name, startdate)
- return "Successfully added user '%s'." % user.name
-
- def get_user(self, name):
- user = self._userstore.get_user(name)
- return '%s: start date %s' % (user.name,
user.startdate.isoformat())
+ employee = self._employeestore.get_employee(name, year)
+ return employee.count_vacation(year)
+
+ def add_employee(self, name, startdate):
+ employee = self._employeestore.add_employee(name, startdate)
+ return "Successfully added employee '%s'." % employee.name
+
+ def get_employee(self, name):
+ employee = self._employeestore.get_employee(name)
+ return '%s: start date %s' % (employee.name,
employee.startdate.isoformat())
-class User(object):
+class Employee(object):
def __init__(self, name, startdate):
self.name = name
@@ -78,7 +78,7 @@
def main(args):
try:
- return getattr(VacationCalculator(UserStore()), args[0])(*args[1:])
+ return getattr(VacationCalculator(EmployeeStore()),
args[0])(*args[1:])
except (AttributeError, TypeError):
raise VacalcError('invalid command or arguments')