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')

Reply via email to