Added node collaborators, author.
Added test cases.
This commit is contained in:
@@ -197,6 +197,80 @@ feature -- Basic operations
|
|||||||
post_execution
|
post_execution
|
||||||
end
|
end
|
||||||
|
|
||||||
|
feature -- Basic Operations: User_Nodes
|
||||||
|
|
||||||
|
add_author (a_user_id: INTEGER_64; a_node_id: INTEGER_64)
|
||||||
|
-- Add author `a_user_id' to node `a_node_id'
|
||||||
|
local
|
||||||
|
l_parameters: STRING_TABLE [detachable ANY]
|
||||||
|
do
|
||||||
|
log.write_information (generator + ".add_author")
|
||||||
|
create l_parameters.make (2)
|
||||||
|
l_parameters.put (a_user_id,"user_id")
|
||||||
|
l_parameters.put (a_node_id,"id")
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (Sql_update_node_author, l_parameters))
|
||||||
|
db_handler.execute_change
|
||||||
|
post_execution
|
||||||
|
end
|
||||||
|
|
||||||
|
add_collaborator (a_user_id: INTEGER_64; a_node_id: INTEGER_64)
|
||||||
|
-- Add collaborator `a_user_id' to node `a_node_id'
|
||||||
|
local
|
||||||
|
l_parameters: STRING_TABLE [detachable ANY]
|
||||||
|
do
|
||||||
|
log.write_information (generator + ".add_collaborator")
|
||||||
|
create l_parameters.make (2)
|
||||||
|
l_parameters.put (a_user_id,"users_id")
|
||||||
|
l_parameters.put (a_node_id,"nodes_id")
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (Sql_insert_users_nodes, l_parameters))
|
||||||
|
db_handler.execute_change
|
||||||
|
post_execution
|
||||||
|
end
|
||||||
|
|
||||||
|
user_nodes (a_id:INTEGER_64): DATABASE_ITERATION_CURSOR [CMS_NODE]
|
||||||
|
-- List of Nodes for the given user `a_id'. (the user is the author of the node)
|
||||||
|
local
|
||||||
|
l_parameters: STRING_TABLE [ANY]
|
||||||
|
do
|
||||||
|
log.write_information (generator + ".user_nodes")
|
||||||
|
create l_parameters.make (1)
|
||||||
|
l_parameters.put (a_id, "user_id")
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (Select_user_author, l_parameters))
|
||||||
|
db_handler.execute_query
|
||||||
|
create Result.make (db_handler, agent fetch_node)
|
||||||
|
post_execution
|
||||||
|
end
|
||||||
|
|
||||||
|
node_author (a_id: INTEGER_64): detachable CMS_USER
|
||||||
|
-- Node's author for the given node id.
|
||||||
|
local
|
||||||
|
l_parameters: STRING_TABLE [ANY]
|
||||||
|
do
|
||||||
|
log.write_information (generator + ".node_author")
|
||||||
|
create l_parameters.make (1)
|
||||||
|
l_parameters.put (a_id, "node_id")
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_node_author, l_parameters))
|
||||||
|
db_handler.execute_query
|
||||||
|
if not db_handler.after then
|
||||||
|
Result := fetch_user
|
||||||
|
end
|
||||||
|
post_execution
|
||||||
|
end
|
||||||
|
|
||||||
|
node_collaborators (a_id: INTEGER_64): DATABASE_ITERATION_CURSOR [CMS_USER]
|
||||||
|
-- List of possible node's collaborator.
|
||||||
|
local
|
||||||
|
l_parameters: STRING_TABLE [ANY]
|
||||||
|
do
|
||||||
|
log.write_information (generator + ".node_collaborators")
|
||||||
|
create l_parameters.make (1)
|
||||||
|
l_parameters.put (a_id, "node_id")
|
||||||
|
db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_node_collaborators, l_parameters))
|
||||||
|
db_handler.execute_query
|
||||||
|
create Result.make (db_handler, agent fetch_user)
|
||||||
|
post_execution
|
||||||
|
end
|
||||||
|
|
||||||
feature -- Connection
|
feature -- Connection
|
||||||
|
|
||||||
connect
|
connect
|
||||||
@@ -243,6 +317,20 @@ feature {NONE} -- Queries
|
|||||||
|
|
||||||
SQL_Delete_node: STRING = "delete from nodes where id=:id;"
|
SQL_Delete_node: STRING = "delete from nodes where id=:id;"
|
||||||
|
|
||||||
|
Sql_update_node_author: STRING = "update nodes SET author_id=:user_id where id=:id;"
|
||||||
|
|
||||||
|
feature {NONE} -- Sql Queries: USER_ROLES collaborators, author
|
||||||
|
|
||||||
|
Sql_insert_users_nodes: STRING = "insert into users_nodes (users_id, nodes_id) values (:users_id, :nodes_id);"
|
||||||
|
|
||||||
|
select_node_collaborators: STRING = "SELECT * FROM Users INNER JOIN users_nodes ON users.id=users_nodes.users_id and users_nodes.nodes_id = :nodes_id;"
|
||||||
|
|
||||||
|
Select_user_author: STRING = "SELECT * FROM Nodes INNER JOIN users ON nodes.author_id=users.id and users.id = :user_id;"
|
||||||
|
|
||||||
|
Select_node_author: STRING = "SELECT * FROM User INNER JOIN nodes ON nodes.author_id=users.id and node_id =:node_id;"
|
||||||
|
|
||||||
|
feature --
|
||||||
|
|
||||||
|
|
||||||
feature -- New Object
|
feature -- New Object
|
||||||
|
|
||||||
@@ -272,6 +360,23 @@ feature -- New Object
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fetch_user: CMS_USER
|
||||||
|
do
|
||||||
|
create Result.make ("")
|
||||||
|
if attached db_handler.read_integer_32 (1) as l_id then
|
||||||
|
Result.set_id (l_id)
|
||||||
|
end
|
||||||
|
if attached db_handler.read_string (2) as l_u then
|
||||||
|
Result.set_name (l_u)
|
||||||
|
end
|
||||||
|
if attached db_handler.read_string (3) as l_p then
|
||||||
|
Result.set_password (l_p)
|
||||||
|
end
|
||||||
|
if attached db_handler.read_string (5) as l_e then
|
||||||
|
Result.set_email (l_e)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
feature {NONE} -- Implementation
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
post_execution
|
post_execution
|
||||||
|
|||||||
@@ -20,36 +20,68 @@ feature {NONE} -- Initialization
|
|||||||
user: USER_DATA_PROVIDER
|
user: USER_DATA_PROVIDER
|
||||||
node: NODE_DATA_PROVIDER
|
node: NODE_DATA_PROVIDER
|
||||||
l_security: SECURITY_PROVIDER
|
l_security: SECURITY_PROVIDER
|
||||||
|
l_profile, l_db_profile: CMS_USER_PROFILE
|
||||||
|
l_cursor: TABLE_ITERATION_CURSOR [READABLE_STRING_8, READABLE_STRING_8]
|
||||||
|
l_list: LIST[CMS_NODE]
|
||||||
do
|
do
|
||||||
create connection.login_with_schema ("cms", "root", "")
|
create connection.login_with_schema ("cms_dev", "root", "")
|
||||||
-- create user.make (connection)
|
create user.make (connection)
|
||||||
---- user.new_user ("jv", "test","test@test.com")
|
|
||||||
|
|
||||||
-- if attached user.user (3) as l_user then
|
|
||||||
-- if attached user.user_salt ("jv") as l_salt then
|
|
||||||
-- create l_security
|
|
||||||
-- if attached l_user.password as l_password then
|
|
||||||
-- print (l_password)
|
|
||||||
-- io.put_new_line
|
|
||||||
-- print (l_security.password_hash ("test", l_salt))
|
|
||||||
|
|
||||||
-- check same_string: l_security.password_hash ("test", l_salt).is_case_insensitive_equal (l_password) end
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- if attached user.user_by_name ("jv") as l_user then
|
|
||||||
-- check l_user.id = 3 end
|
|
||||||
-- end
|
|
||||||
|
|
||||||
create node.make (connection)
|
create node.make (connection)
|
||||||
across node.recent_nodes (0, 5) as c loop
|
(create {CLEAN_DB}).clean_db(connection)
|
||||||
print (c.item)
|
|
||||||
|
user.new_user ("test", "test","test@admin.com")
|
||||||
|
if attached {CMS_USER} user.user_by_name ("test") as l_user then
|
||||||
|
create l_profile.make
|
||||||
|
l_profile.force ("Eiffel", "language")
|
||||||
|
l_profile.force ("Argentina", "country")
|
||||||
|
l_profile.force ("GMT-3", "time zone")
|
||||||
|
user.save_profile (l_user.id, l_profile)
|
||||||
|
l_db_profile := user.user_profile (l_user.id)
|
||||||
|
from
|
||||||
|
l_cursor := l_db_profile.new_cursor
|
||||||
|
until
|
||||||
|
l_cursor.after
|
||||||
|
loop
|
||||||
|
print (l_cursor.item + " - " + l_cursor.key + "%N")
|
||||||
|
l_cursor.forth
|
||||||
|
end
|
||||||
|
|
||||||
|
create {ARRAYED_LIST[CMS_NODE]} l_list.make (0)
|
||||||
|
node.new_node (default_node)
|
||||||
|
node.new_node (custom_node ("content1", "summary1", "title1"))
|
||||||
|
node.new_node (custom_node ("content2", "summary2", "title2"))
|
||||||
|
node.new_node (custom_node ("content3", "summary3", "title3"))
|
||||||
|
user.new_user ("u1", "u1", "email")
|
||||||
|
if attached user.user_by_name ("u1") as ll_user then
|
||||||
|
node.add_collaborator (l_user.id, 1)
|
||||||
|
node.add_collaborator (l_user.id, 2)
|
||||||
|
node.add_collaborator (l_user.id, 3)
|
||||||
|
node.add_collaborator (l_user.id, 4)
|
||||||
|
|
||||||
|
across node.node_collaborators (1) as c loop
|
||||||
|
print (c.item.name)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
connection: DATABASE_CONNECTION_MYSQL
|
connection: DATABASE_CONNECTION_MYSQL
|
||||||
|
|
||||||
|
|
||||||
|
default_node: CMS_NODE
|
||||||
|
do
|
||||||
|
Result := custom_node ("Default content", "default summary", "Default")
|
||||||
|
end
|
||||||
|
|
||||||
|
custom_node (a_content, a_summary, a_title: READABLE_STRING_32): CMS_NODE
|
||||||
|
do
|
||||||
|
create Result.make (a_content, a_summary, a_title)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ note
|
|||||||
author: "EiffelStudio test wizard"
|
author: "EiffelStudio test wizard"
|
||||||
date: "$Date$"
|
date: "$Date$"
|
||||||
revision: "$Revision$"
|
revision: "$Revision$"
|
||||||
testing: "type/manual"
|
testing:"execution/isolated"
|
||||||
|
|
||||||
class
|
class
|
||||||
NODE_TEST_SET
|
NODE_TEST_SET
|
||||||
@@ -195,9 +195,49 @@ feature -- Test routines
|
|||||||
|
|
||||||
-- Scenrario 10..10 empty
|
-- Scenrario 10..10 empty
|
||||||
assert ("Empty", node_provider.recent_nodes (10, 10).after)
|
assert ("Empty", node_provider.recent_nodes (10, 10).after)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
test_new_node_without_user
|
||||||
|
do
|
||||||
|
node_provider.new_node (default_node)
|
||||||
|
user_provider.new_user ("u1", "u1", "email")
|
||||||
|
if attached user_provider.user_by_name ("u1") as l_user then
|
||||||
|
assert ("Empty nodes", node_provider.user_nodes (l_user.id).after)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
test_new_node_add_author
|
||||||
|
do
|
||||||
|
node_provider.new_node (default_node)
|
||||||
|
user_provider.new_user ("u1", "u1", "email")
|
||||||
|
if attached user_provider.user_by_name ("u1") as l_user then
|
||||||
|
node_provider.add_collaborator (l_user.id, 1)
|
||||||
|
assert ("Not Empty nodes", not node_provider.node_collaborators (1).after)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test_multiple_nodes_add_author
|
||||||
|
local
|
||||||
|
l_list: LIST[CMS_NODE]
|
||||||
|
do
|
||||||
|
create {ARRAYED_LIST[CMS_NODE]} l_list.make (0)
|
||||||
|
node_provider.new_node (default_node)
|
||||||
|
node_provider.new_node (custom_node ("content1", "summary1", "title1"))
|
||||||
|
node_provider.new_node (custom_node ("content2", "summary2", "title2"))
|
||||||
|
node_provider.new_node (custom_node ("content3", "summary3", "title3"))
|
||||||
|
user_provider.new_user ("u1", "u1", "email")
|
||||||
|
if attached user_provider.user_by_name ("u1") as l_user then
|
||||||
|
node_provider.add_collaborator (l_user.id, 1)
|
||||||
|
node_provider.add_collaborator (l_user.id, 2)
|
||||||
|
node_provider.add_collaborator (l_user.id, 3)
|
||||||
|
node_provider.add_collaborator (l_user.id, 4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
feature {NONE} -- Implementation
|
feature {NONE} -- Implementation
|
||||||
|
|
||||||
node_provider: NODE_DATA_PROVIDER
|
node_provider: NODE_DATA_PROVIDER
|
||||||
@@ -206,6 +246,12 @@ feature {NONE} -- Implementation
|
|||||||
create Result.make (connection)
|
create Result.make (connection)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
user_provider: USER_DATA_PROVIDER
|
||||||
|
-- user provider.
|
||||||
|
once
|
||||||
|
create Result.make (connection)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
feature {NONE} -- Implementation Fixture Factories
|
feature {NONE} -- Implementation Fixture Factories
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ note
|
|||||||
author: "EiffelStudio test wizard"
|
author: "EiffelStudio test wizard"
|
||||||
date: "$Date$"
|
date: "$Date$"
|
||||||
revision: "$Revision$"
|
revision: "$Revision$"
|
||||||
testing:"execution/serial"
|
testing:"execution/isolated"
|
||||||
|
|
||||||
class
|
class
|
||||||
USER_TEST_SET
|
USER_TEST_SET
|
||||||
|
|||||||
@@ -33,6 +33,12 @@ feature
|
|||||||
db_handler(a_connection).set_query (create {DATABASE_QUERY}.data_reader (Sql_delete_permissions, l_parameters))
|
db_handler(a_connection).set_query (create {DATABASE_QUERY}.data_reader (Sql_delete_permissions, l_parameters))
|
||||||
db_handler(a_connection).execute_change
|
db_handler(a_connection).execute_change
|
||||||
|
|
||||||
|
|
||||||
|
-- Clean Users Nodes
|
||||||
|
db_handler(a_connection).set_query (create {DATABASE_QUERY}.data_reader (Sql_delete_users_nodes, l_parameters))
|
||||||
|
db_handler(a_connection).execute_change
|
||||||
|
|
||||||
|
|
||||||
-- Clean Users Roles
|
-- Clean Users Roles
|
||||||
db_handler(a_connection).set_query (create {DATABASE_QUERY}.data_reader (Sql_delete_users_roles, l_parameters))
|
db_handler(a_connection).set_query (create {DATABASE_QUERY}.data_reader (Sql_delete_users_roles, l_parameters))
|
||||||
db_handler(a_connection).execute_change
|
db_handler(a_connection).execute_change
|
||||||
@@ -99,6 +105,8 @@ feature -- Sql delete queries
|
|||||||
Sql_delete_user_profiles: STRING = "delete from profiles"
|
Sql_delete_user_profiles: STRING = "delete from profiles"
|
||||||
-- Clean profiles.
|
-- Clean profiles.
|
||||||
|
|
||||||
|
Sql_delete_users_nodes: STRING = "delete from users_nodes"
|
||||||
|
|
||||||
Rest_users_autoincrement: STRING = "ALTER TABLE Users AUTO_INCREMENT = 1"
|
Rest_users_autoincrement: STRING = "ALTER TABLE Users AUTO_INCREMENT = 1"
|
||||||
-- reset autoincrement
|
-- reset autoincrement
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user