Revisited the persistence layer.

Simplified schema to focus on user and node.
Now possible to have sqlite via ODBC and/or mysql support, and select using configuration file.
Updated demo example.
This commit is contained in:
2015-01-27 19:48:37 +01:00
parent db9e40cec4
commit 7d5869f3b9
71 changed files with 2665 additions and 3313 deletions

View File

@@ -3,8 +3,8 @@ note
Eiffel tests that can be executed by testing tool.
]"
author: "EiffelStudio test wizard"
date: "$Date$"
revision: "$Revision$"
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
revision: "$Revision: 96542 $"
testing:"execution/isolated"
class
@@ -30,7 +30,7 @@ feature {NONE} -- Events
-- <Precursor>
do
(create {CLEAN_DB}).clean_db(connection)
user_provider.new_user ("admin", "admin","admin@admin.com")
storage.new_user (custom_user ("admin", "admin","admin@admin.com"))
end
on_clean
@@ -44,78 +44,67 @@ feature -- Test routines
test_user_exist
-- User admin exist
do
assert ("Not void", attached user_provider.user_by_email ("admin@admin.com"))
assert ("Not void", attached user_provider.user (1))
assert ("Not void", attached user_provider.user_by_name ("admin"))
assert ("Not void", attached storage.user_by_email ("admin@admin.com"))
assert ("Not void", attached storage.user_by_id (1))
assert ("Not void", attached storage.user_by_name ("admin"))
end
test_user_not_exist
-- Uset test does not exist.
do
assert ("User by email: Void", user_provider.user_by_email ("test1@test.com") = Void)
assert ("User by id: Void", user_provider.user(5) = Void )
assert ("User by name: Void", user_provider.user_by_name ("test1") = Void)
assert ("User by email: Void", storage.user_by_email ("test1@test.com") = Void)
assert ("User by id: Void", storage.user_by_id (5) = Void )
assert ("User by name: Void", storage.user_by_name ("test1") = Void)
end
test_new_user
do
user_provider.new_user ("test", "test","test@admin.com")
assert ("Not void", attached user_provider.user_by_email ("test@admin.com"))
assert ("Not void", attached user_provider.user (2))
assert ("Not void", attached user_provider.user (2) as l_user and then l_user.id = 2 and then l_user.name ~ "test")
assert ("Not void", attached user_provider.user_by_name ("test"))
end
test_new_user_with_roles
do
user_provider.new_user ("test", "test","test@admin.com")
role_provider.new_role ("Admin")
assert ("Empty roles for given user", user_provider.user_roles (1).after)
user_provider.add_role (1, 1)
assert ("Not empty roles for given user", not user_provider.user_roles (1).after)
end
test_new_user_without_profile
do
user_provider.new_user ("test", "test","test@admin.com")
assert ("Empty", user_provider.user_profile (1).new_cursor.after)
end
test_new_user_with_profile
local
l_profile: CMS_USER_PROFILE
l_db_profile: CMS_USER_PROFILE
u: CMS_USER
do
user_provider.new_user ("test", "test","test@admin.com")
if attached {CMS_USER} user_provider.user_by_name ("test") as l_user then
assert ("Empty", user_provider.user_profile (l_user.id).new_cursor.after)
create l_profile.make
l_profile.force ("Eiffel", "language")
l_profile.force ("Argentina", "country")
l_profile.force ("GMT-3", "time zone")
user_provider.save_profile (l_user.id, l_profile)
l_db_profile := user_provider.user_profile (l_user.id)
assert ("Not Empty", not l_db_profile.new_cursor.after)
assert ("Expected language Eiffel", attached l_db_profile.item ("language") as l_language and then l_language ~ "Eiffel")
assert ("Expected time zone GMT-3", attached l_db_profile.item ("time zone") as l_language and then l_language ~ "GMT-3")
end
u := default_user
storage.new_user (u)
assert ("Not void", attached storage.user_by_email (u.email))
assert ("Not void", attached storage.user_by_id (2))
assert ("Not void", attached storage.user_by_id (2) as l_user and then l_user.id = 2 and then l_user.name ~ u.name)
assert ("Not void", attached storage.user_by_name (u.name))
end
-- test_new_user_with_roles
-- do
-- storage.new_user (default_user)
-- storage.new_role ("Admin")
-- assert ("Empty roles for given user", storage.user_roles (1).after)
-- storage.add_role (1, 1)
-- assert ("Not empty roles for given user", not storage.user_roles (1).after)
-- end
feature {NONE} -- Implementation
-- test_new_user_without_profile
-- do
-- storage.new_user ("test", "test","test@admin.com")
-- assert ("Empty", storage.user_profile (1).new_cursor.after)
-- end
user_provider: USER_DATA_PROVIDER
-- user provider.
once
create Result.make (connection)
end
-- test_new_user_with_profile
-- local
-- l_profile: CMS_USER_PROFILE
-- l_db_profile: CMS_USER_PROFILE
-- do
-- storage.new_user (default_user)
-- if attached {CMS_USER} storage.user_by_name ("test") as l_user then
-- assert ("Empty", storage.user_profile (l_user.id).new_cursor.after)
-- create l_profile.make
-- l_profile.force ("Eiffel", "language")
-- l_profile.force ("Argentina", "country")
-- l_profile.force ("GMT-3", "time zone")
-- storage.save_profile (l_user.id, l_profile)
-- l_db_profile := storage.user_profile (l_user.id)
-- assert ("Not Empty", not l_db_profile.new_cursor.after)
-- assert ("Expected language Eiffel", attached l_db_profile.item ("language") as l_language and then l_language ~ "Eiffel")
-- assert ("Expected time zone GMT-3", attached l_db_profile.item ("time zone") as l_language and then l_language ~ "GMT-3")
-- end
-- end
role_provider: ROLE_DATA_PROVIDER
-- user provider.
once
create Result.make (connection)
end
end