diff --git a/persistence/implementation/mysql/src/provider/node_data_provider.e b/persistence/implementation/mysql/src/provider/node_data_provider.e index 09802ad..eef4756 100644 --- a/persistence/implementation/mysql/src/provider/node_data_provider.e +++ b/persistence/implementation/mysql/src/provider/node_data_provider.e @@ -74,7 +74,7 @@ feature -- Access local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".node") create l_parameters.make (1) l_parameters.put (a_id,"id") db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_node_by_id, l_parameters)) @@ -85,6 +85,21 @@ feature -- Access post_execution end + count: INTEGER + -- Number of items nodes. + local + l_parameters: STRING_TABLE [ANY] + do + log.write_information (generator + ".count") + create l_parameters.make (0) + db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_count, l_parameters)) + db_handler.execute_query + if db_handler.count = 1 then + Result := db_handler.read_integer_32 (1) + end + post_execution + end + feature -- Basic operations new_node (a_node: CMS_NODE) @@ -92,7 +107,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".new_node") create l_parameters.make (6) l_parameters.put (a_node.title, "title") l_parameters.put (a_node.summary, "summary") @@ -110,7 +125,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".update_node_title") create l_parameters.make (3) l_parameters.put (a_title, "title") l_parameters.put (create {DATE_TIME}.make_now_utc, "modification_date") @@ -125,7 +140,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".update_node_summary") create l_parameters.make (3) l_parameters.put (a_summary, "summary") l_parameters.put (create {DATE_TIME}.make_now_utc, "modification_date") @@ -140,7 +155,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".update_node_content") create l_parameters.make (3) l_parameters.put (a_content, "content") l_parameters.put (create {DATE_TIME}.make_now_utc, "modification_date") @@ -155,7 +170,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".update_node") create l_parameters.make (7) l_parameters.put (a_node.title, "title") l_parameters.put (a_node.summary, "summary") @@ -174,7 +189,7 @@ feature -- Basic operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".delete_node") create l_parameters.make (1) l_parameters.put (a_id, "id") db_handler.set_query (create {DATABASE_QUERY}.data_reader (sql_delete_node, l_parameters)) @@ -202,6 +217,8 @@ feature -- Connection feature {NONE} -- Queries + Select_count: STRING = "select count(*) from Nodes;" + Select_nodes: STRING = "select * from Nodes;" -- SQL Query to retrieve all nodes. diff --git a/persistence/implementation/mysql/src/provider/user_data_provider.e b/persistence/implementation/mysql/src/provider/user_data_provider.e index 81ce325..f66df25 100644 --- a/persistence/implementation/mysql/src/provider/user_data_provider.e +++ b/persistence/implementation/mysql/src/provider/user_data_provider.e @@ -66,7 +66,7 @@ feature -- Basic Operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".user") create l_parameters.make (1) l_parameters.put (a_id,"id") db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_user_by_id, l_parameters)) @@ -99,7 +99,7 @@ feature -- Basic Operations local l_parameters: STRING_TABLE [detachable ANY] do - log.write_information (generator + ".user_by_name") + log.write_information (generator + ".user_by_email") create l_parameters.make (1) l_parameters.put (a_email,"email") db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_user_by_email, l_parameters)) @@ -115,7 +115,7 @@ feature -- Basic Operations local l_parameters: STRING_TABLE [ANY] do - log.write_information (generator + ".nodes") + log.write_information (generator + ".user_salt") create l_parameters.make (1) l_parameters.put (a_username,"name") db_handler.set_query (create {DATABASE_QUERY}.data_reader (select_salt_by_username, l_parameters)) diff --git a/persistence/implementation/mysql/tests/nodes/node_test_set.e b/persistence/implementation/mysql/tests/nodes/node_test_set.e index b7146ee..3ae6665 100644 --- a/persistence/implementation/mysql/tests/nodes/node_test_set.e +++ b/persistence/implementation/mysql/tests/nodes/node_test_set.e @@ -12,15 +12,214 @@ class inherit EQA_TEST_SET + redefine + on_prepare, + on_clean + select + default_create + end + ABSTRACT_DB_TEST + rename + default_create as default_db_test + end + + +feature {NONE} -- Events + + on_prepare + -- + do + (create {CLEAN_DB}).clean_db(connection) + assert ("Empty Nodes", node_provider.nodes.after) + end + + on_clean + -- + do + end feature -- Test routines - new_test_routine - -- New test routine + test_new_node do - assert ("not_implemented", False) + assert ("Empty Nodes", node_provider.nodes.after) + node_provider.new_node (default_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached node_provider.node (1)) + -- Not exist node with id 2 + assert ("Not exist node with id 2", node_provider.node (2) = Void) + end + + + test_update_node + local + l_node: CMS_NODE + do + assert ("Empty Nodes", node_provider.nodes.after) + l_node := custom_node ("

test node udpate

", "Update node", "Test case update") + node_provider.new_node (l_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_node.content and then ll_node.summary ~ l_node.summary and then ll_node.title ~ l_node.title ) + + -- Update node (content and summary) + + if attached {CMS_NODE} node_provider.node (1) as l_un then + l_un.set_content ("

Updating test node udpate

") + l_un.set_summary ("updating summary") + node_provider.update_node (l_un) + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then not (ll_node.content ~ l_node.content) and then not (ll_node.summary ~ l_node.summary) and then ll_node.title ~ l_node.title ) + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_un.content and then ll_node.summary ~ l_un.summary and then ll_node.title ~ l_un.title ) + end + + -- Update node (content and summary and title) + if attached {CMS_NODE} node_provider.node (1) as l_un then + l_un.set_content ("

Updating test node udpate

") + l_un.set_summary ("updating summary") + l_un.set_title ("Updating Test case") + node_provider.update_node (l_un) + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then not (ll_node.content ~ l_node.content) and then not (ll_node.summary ~ l_node.summary) and then not (ll_node.title ~ l_node.title) ) + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_un.content and then ll_node.summary ~ l_un.summary and then ll_node.title ~ l_un.title ) + end + end + + test_update_title + local + l_node: CMS_NODE + do + assert ("Empty Nodes", node_provider.nodes.after) + l_node := custom_node ("

test node udpate

", "Update node", "Test case update") + node_provider.new_node (l_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_node.content and then ll_node.summary ~ l_node.summary and then ll_node.title ~ l_node.title ) + + -- Update node title + + if attached {CMS_NODE} node_provider.node (1) as l_un then + node_provider.update_node_title (l_un.id, "New Title") + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_un.content and then ll_node.summary ~ l_un.summary and then not ( ll_node.title ~ l_un.title) and then ll_node.title ~ "New Title" ) + end + end + + test_update_summary + local + l_node: CMS_NODE + do + assert ("Empty Nodes", node_provider.nodes.after) + l_node := custom_node ("

test node udpate

", "Update node", "Test case update") + node_provider.new_node (l_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_node.content and then ll_node.summary ~ l_node.summary and then ll_node.title ~ l_node.title ) + + -- Update node summary + + if attached {CMS_NODE} node_provider.node (1) as l_un then + node_provider.update_node_summary (l_un.id,"New Summary") + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_un.content and then not (ll_node.summary ~ l_un.summary) and then ll_node.summary ~ "New Summary" and then ll_node.title ~ l_un.title) + end + end + + test_update_content + local + l_node: CMS_NODE + do + assert ("Empty Nodes", node_provider.nodes.after) + l_node := custom_node ("

test node udpate

", "Update node", "Test case update") + node_provider.new_node (l_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_node.content and then ll_node.summary ~ l_node.summary and then ll_node.title ~ l_node.title ) + + -- Update node content + + if attached {CMS_NODE} node_provider.node (1) as l_un then + node_provider.update_node_content (l_un.id,"New Content") + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then not (ll_node.content ~ l_un.content) and then ll_node.content ~ "New Content" and then ll_node.summary ~ l_un.summary and then ll_node.title ~ l_un.title) + end + end + + + test_delete_node + local + l_node: CMS_NODE + do + assert ("Empty Nodes", node_provider.nodes.after) + l_node := custom_node ("

test node udpate

", "Update node", "Test case update") + node_provider.new_node (l_node) + assert ("Not empty Nodes after new_node", not node_provider.nodes.after) + -- Exist node with id 1 + assert ("Exist node with id 1", attached {CMS_NODE} node_provider.node (1) as ll_node and then ll_node.content ~ l_node.content and then ll_node.summary ~ l_node.summary and then ll_node.title ~ l_node.title ) + + -- Delte node 1 + + node_provider.delete_node (1) + assert ("Node does not exist", node_provider.node (1) = Void) + end + + test_recent_nodes + -- Content_10, Summary_10, Title_10 + -- Content_9, Summary_9, Title_9 + -- .. + -- Content_1, Summary_1, Title_1 + local + i : INTEGER + do + assert ("Empty Nodes", node_provider.nodes.after) + across 1 |..| 10 as c loop + node_provider.new_node (custom_node ("Content_" + c.item.out, "Summary_" + c.item.out, "Title_" + c.item.out)) + end + + -- Scenario (0,10) rows, recents (10 down to 1) + i := 10 + across node_provider.recent_nodes (0, 10) as c loop + assert ("Same id:" + i.out, c.item.id = i) + i := i - 1 + end + + -- Scenario (5, 10) rows, recent nodes (5 down to 1) + i := 5 + across node_provider.recent_nodes (5, 10) as c loop + assert ("Same id:" + i.out, c.item.id = i) + i := i - 1 + end + + -- Scenario (9,10) rows, recent node 1 + i := 1 + across node_provider.recent_nodes (9, 10) as c loop + assert ("Same id:" + i.out, c.item.id = i) + i := i - 1 + end + + -- Scenrario 10..10 empty + assert ("Empty", node_provider.recent_nodes (10, 10).after) + + end + +feature {NONE} -- Implementation + + node_provider: NODE_DATA_PROVIDER + -- node provider. + once + create Result.make (connection) + end + + +feature {NONE} -- Implementation Fixture Factories + + 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 +