knitkit 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +22 -0
- data/app/controllers/knitkit/base_controller.rb +15 -2
- data/app/controllers/knitkit/blogs_controller.rb +4 -4
- data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +16 -2
- data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +198 -57
- data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +25 -11
- data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +123 -44
- data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +83 -9
- data/app/controllers/knitkit/erp_app/desktop/online_document_sections_controller.rb +38 -0
- data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +15 -6
- data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +185 -98
- data/app/controllers/knitkit/erp_app/desktop/versions_controller.rb +38 -16
- data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +126 -68
- data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +154 -107
- data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +113 -54
- data/app/controllers/knitkit/online_document_sections_controller.rb +45 -0
- data/app/controllers/knitkit/unauthorized_controller.rb +5 -0
- data/app/controllers/knitkit/website_sections_controller.rb +8 -9
- data/app/mailers/document_mailer.rb +10 -0
- data/app/models/article.rb +1 -1
- data/app/models/content.rb +35 -3
- data/app/models/document.rb +8 -0
- data/app/models/document_type.rb +3 -0
- data/app/models/documented_content.rb +29 -0
- data/app/models/documented_item.rb +31 -0
- data/app/models/extensions/configuration.rb +5 -0
- data/app/models/extensions/party.rb +13 -0
- data/app/models/online_document_section.rb +40 -0
- data/app/models/theme.rb +22 -26
- data/app/models/valid_document.rb +4 -0
- data/app/models/website.rb +158 -119
- data/app/models/website_inquiry.rb +7 -2
- data/app/models/website_inquiry_mailer.rb +4 -3
- data/app/models/website_party_role.rb +5 -0
- data/app/models/website_section.rb +76 -38
- data/app/views/document_mailer/email_document.html.erb +12 -0
- data/app/views/knitkit/blogs/_add_comment.html.erb +2 -2
- data/app/views/knitkit/online_document_sections/index.html.erb +149 -0
- data/app/views/knitkit/website_sections/index.html.erb +0 -1
- data/app/views/layouts/knitkit/base.html.erb +4 -2
- data/app/views/layouts/knitkit/online_document_sections.html.erb +59 -0
- data/app/views/menus/knitkit/_default_menu.html.erb +1 -1
- data/app/views/menus/knitkit/_default_section_menu.html.erb +1 -1
- data/app/views/menus/knitkit/_default_sub_menu.html.erb +2 -2
- data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +1 -1
- data/app/widgets/contact_us/base.rb +5 -5
- data/app/widgets/contact_us/javascript/contact_us.js +2 -1
- data/app/widgets/google_map/base.rb +0 -4
- data/app/widgets/google_map/javascript/google_map.js +4 -3
- data/app/widgets/login/base.rb +0 -5
- data/app/widgets/login/javascript/login.js +155 -153
- data/app/widgets/login/views/index.html.erb +3 -3
- data/app/widgets/login/views/reset_password.html.erb +2 -2
- data/app/widgets/manage_profile/base.rb +46 -67
- data/app/widgets/manage_profile/javascript/manage_profile.js +2 -1
- data/app/widgets/manage_profile/views/_user_information_form.html.erb +5 -1
- data/app/widgets/reset_password/base.rb +4 -6
- data/app/widgets/reset_password/javascript/reset_password.js +2 -1
- data/app/widgets/reset_password/views/index.html.erb +4 -3
- data/app/widgets/search/base.rb +1 -5
- data/app/widgets/search/javascript/search.js +2 -1
- data/app/widgets/search/views/show.html.erb +2 -2
- data/app/widgets/signup/base.rb +7 -6
- data/app/widgets/signup/javascript/signup.js +2 -1
- data/app/widgets/signup/views/error.html.erb +1 -1
- data/config/routes.rb +6 -2
- data/db/data_migrations/20110509223702_add_publisher_role.rb +10 -0
- data/db/data_migrations/20111118182910_setup_knitkit_capabilities.rb +84 -0
- data/db/data_migrations/20120127144444_create_website_role_types.rb +13 -0
- data/db/data_migrations/20120127150505_create_website_default_configuration.rb +72 -0
- data/db/data_migrations/20120127150506_add_primary_host_to_website_configuration.rb +33 -0
- data/db/data_migrations/20120316150424_add_is_template_to_default_website_config.rb +16 -0
- data/db/data_migrations/upgrade/20120210195616_add_website_configs.rb +19 -0
- data/db/data_migrations/upgrade/20120213205519_populate_website_iids.rb +17 -0
- data/db/migrate/20110211002317_setup_knitkit.rb +22 -5
- data/db/migrate/20111207161928_create_documented_items_table.rb +13 -0
- data/db/migrate/20111208180539_add_document_id_to_documented_item.rb +9 -0
- data/db/migrate/20120315163736_add_document.rb +32 -0
- data/db/migrate/20120503183431_create_valid_documents.rb +16 -0
- data/db/migrate/upgrade/20120116201510_add_render_base_layout_flag.rb +13 -0
- data/db/migrate/upgrade/20120127143745_create_website_party_roles.rb +24 -0
- data/db/migrate/upgrade/20120213184509_add_iid_to_websites.rb +14 -0
- data/lib/knitkit.rb +2 -0
- data/lib/knitkit/config.rb +31 -0
- data/lib/knitkit/engine.rb +12 -3
- data/lib/knitkit/extensions.rb +1 -3
- data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +2 -3
- data/lib/knitkit/extensions/active_record/acts_as_document.rb +63 -0
- data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +5 -4
- data/lib/knitkit/extensions/compass_ae/widgets/base.rb +70 -0
- data/lib/knitkit/extensions/railties/action_view.rb +22 -10
- data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +3 -3
- data/lib/knitkit/extensions/railties/theme_support/theme_file_resolver.rb +8 -3
- data/lib/knitkit/routing_filter/section_router.rb +16 -6
- data/lib/knitkit/version.rb +7 -1
- data/public/images/check.png +0 -0
- data/public/images/credit_card.png +0 -0
- data/public/images/knitkit/tooltip.gif +0 -0
- data/public/javascripts/ajax_pagination.js +33 -0
- data/public/javascripts/datepicker.js +6 -1
- data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +731 -258
- data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +289 -238
- data/public/javascripts/erp_app/desktop/applications/knitkit/comments_grid_panel.js +2 -4
- data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +29 -3
- data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +193 -21
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +27 -26
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +167 -20
- data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +1 -2
- data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +5 -1
- data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +2 -2
- data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +20 -11
- data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +279 -228
- data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +40 -40
- data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +83 -76
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +1961 -1397
- data/public/javascripts/erp_app/desktop/applications/knitkit/widgets_panel.js +47 -43
- data/public/javascripts/knitkit/helpers.js +26 -0
- data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +1 -2
- data/public/stylesheets/knitkit/documentation.css +50 -0
- data/public/stylesheets/knitkit/style.css +23 -1
- data/spec/controllers/knitkit/erp_app/desktop/articles_controller_spec.rb +8 -0
- data/spec/controllers/knitkit/erp_app/desktop/website_controller_spec.rb +396 -0
- data/spec/controllers/knitkit/erp_app/desktop/website_nav_controller_spec.rb +260 -0
- data/spec/controllers/knitkit/erp_app/desktop/website_section_controller_spec.rb +222 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +43 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +8 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/spec.rb +27 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/workflow.yml +1 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/factories/article.rb +4 -0
- data/spec/factories/basic.rb +3 -0
- data/spec/factories/blog.rb +5 -0
- data/spec/factories/documented_content.rb +4 -0
- data/spec/factories/documented_item.rb +4 -0
- data/spec/factories/online_document_section.rb +6 -0
- data/spec/factories/published_website.rb +4 -0
- data/spec/factories/theme.rb +6 -0
- data/spec/factories/website.rb +5 -0
- data/spec/factories/website_host.rb +4 -0
- data/spec/factories/website_nav.rb +5 -0
- data/spec/factories/website_nav_item.rb +4 -0
- data/spec/factories/website_section.rb +5 -0
- data/spec/models/article_spec.rb +35 -0
- data/spec/models/attribute_type_spec.rb +55 -0
- data/spec/models/attribute_value_spec.rb +114 -0
- data/spec/models/blog_spec.rb +16 -0
- data/spec/models/comment_spec.rb +11 -0
- data/spec/models/content_spec.rb +187 -0
- data/spec/models/documented_item_spec.rb +29 -0
- data/spec/models/online_document_section_spec.rb +34 -0
- data/spec/models/published_element_spec.rb +11 -0
- data/spec/models/published_website_spec.rb +11 -0
- data/spec/models/theme_spec.rb +12 -0
- data/spec/models/website_host_spec.rb +11 -0
- data/spec/models/website_inquiry_spec.rb +24 -0
- data/spec/models/website_nav_item_spec.rb +11 -0
- data/spec/models/website_nav_spec.rb +11 -0
- data/spec/models/website_section_content_spec.rb +11 -0
- data/spec/models/website_section_spec.rb +49 -0
- data/spec/models/website_spec.rb +146 -0
- data/spec/spec_helper.rb +61 -0
- metadata +391 -154
- data/app/controllers/knitkit/articles_controller.rb +0 -7
- data/lib/knitkit/extensions/compass/widgets/base.rb +0 -53
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AttributeType do
|
4
|
+
it "can be instantiated" do
|
5
|
+
AttributeType.new.should be_an_instance_of(AttributeType)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "can be saved successfully" do
|
9
|
+
new_attribute_type = AttributeType.create(:description => "Some description")
|
10
|
+
new_attribute_type.should be_persisted
|
11
|
+
new_attribute_type.internal_identifier.should eq("some_description")
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "values_by_date_range" do
|
16
|
+
it "should return all values attatched to AttributeType for the given date range" do
|
17
|
+
attribute_type = AttributeType.new
|
18
|
+
attribute_type.data_type = 'Date'
|
19
|
+
attribute_type.description = 'Some Date Attribute'
|
20
|
+
attribute_type.save
|
21
|
+
|
22
|
+
in_range_value = AttributeValue.new
|
23
|
+
in_range_value.value = "2011-12-15 00:00:00"
|
24
|
+
attribute_type.attribute_values << in_range_value
|
25
|
+
in_range_value.save
|
26
|
+
|
27
|
+
out_of_range_value = AttributeValue.new
|
28
|
+
out_of_range_value.value = "2011-12-31 00:00:00"
|
29
|
+
attribute_type.attribute_values << out_of_range_value
|
30
|
+
out_of_range_value.save
|
31
|
+
|
32
|
+
start_date = Date.civil(2011, 12, 1)
|
33
|
+
end_date = Date.civil(2011, 12, 30)
|
34
|
+
|
35
|
+
date_range_values = attribute_type.values_by_date_range(start_date, end_date)
|
36
|
+
|
37
|
+
date_range_values.should include(in_range_value)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "find_by_iid_with_description" do
|
42
|
+
it "should return an AttributeType object with the given description" do
|
43
|
+
attribute_type = AttributeType.create(:description => "Some Description")
|
44
|
+
found_attribute_type = AttributeType.find_by_iid_with_description("some description")
|
45
|
+
found_attribute_type.should eq(attribute_type)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "update_iid" do
|
50
|
+
it "should set the iid to a snake case version of the description when a new attribute type is created" do
|
51
|
+
attribute_type = AttributeType.create(:description => " Some attribute type ", :data_type => "text")
|
52
|
+
attribute_type.internal_identifier.should eq("some_attribute_type")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AttributeValue do
|
4
|
+
it "can be instantiated" do
|
5
|
+
AttributeValue.new.should be_an_instance_of(AttributeValue)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "can be saved successfully" do
|
9
|
+
attribute_type = AttributeType.create(:description => "Some Desc", :data_type => "Text")
|
10
|
+
attribute_value = AttributeValue.new
|
11
|
+
attribute_type.attribute_values << attribute_value
|
12
|
+
attribute_value.save
|
13
|
+
|
14
|
+
attribute_value.should be_persisted
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should destroy attatched AttributeType when a value is deleted if that is the last value connected to the AttributeType" do
|
18
|
+
attribute_type = AttributeType.create(:description => "Some Desc", :data_type => "Text")
|
19
|
+
attribute_value = AttributeValue.new
|
20
|
+
attribute_type.attribute_values << attribute_value
|
21
|
+
attribute_value.save
|
22
|
+
|
23
|
+
AttributeType.find_by_description("Some Desc").should eq(attribute_type)
|
24
|
+
attribute_value.destroy
|
25
|
+
AttributeType.find_by_description("Some Desc").should eq(nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "is_date?" do
|
29
|
+
it "should return true if the AttributeValue's AttributeType has a data_type of 'Date'" do
|
30
|
+
attribute_type = AttributeType.create(:description => "Some Date Attribute", :data_type => "Date")
|
31
|
+
attribute_value = AttributeValue.new
|
32
|
+
attribute_value.value = "12/12/2011"
|
33
|
+
attribute_type.attribute_values << attribute_value
|
34
|
+
attribute_value.save
|
35
|
+
|
36
|
+
attribute_value.is_date?.should eq(true)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return false if the AttributeValue's AttributeType has a data_type not equal to 'Date'" do
|
40
|
+
attribute_type = AttributeType.create(:description => "Some Text Attribute", :data_type => "Text")
|
41
|
+
attribute_value = AttributeValue.new
|
42
|
+
attribute_value.value = "some text"
|
43
|
+
attribute_type.attribute_values << attribute_value
|
44
|
+
attribute_value.save
|
45
|
+
|
46
|
+
attribute_value.is_date?.should eq(false)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "value_as_date" do
|
51
|
+
it "should return a date object equivilant to the AttributeValue's value" do
|
52
|
+
attribute_type = AttributeType.create(:description => "Some Date Attribute", :data_type => "Date")
|
53
|
+
attribute_value = AttributeValue.new
|
54
|
+
attribute_value.value = "2011-12-01 00:00:00"
|
55
|
+
attribute_type.attribute_values << attribute_value
|
56
|
+
attribute_value.save
|
57
|
+
|
58
|
+
date = Date.civil(2011, 12, 1)
|
59
|
+
attribute_value.value_as_date.should eq(date)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "value_as_data_type" do
|
64
|
+
it "should return a date if the associated attribute_types data_type is 'Date'" do
|
65
|
+
attribute_type = AttributeType.create(:description => "Some Date Attribute", :data_type => "Date")
|
66
|
+
attribute_value = AttributeValue.new
|
67
|
+
attribute_value.value = "2011-12-01 00:00:00"
|
68
|
+
attribute_type.attribute_values << attribute_value
|
69
|
+
attribute_value.save
|
70
|
+
|
71
|
+
attribute_value.value_as_data_type.should be_kind_of(Date)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return a string if the associated attribute_types data_type is 'String'" do
|
75
|
+
attribute_type = AttributeType.create(:description => "Some String Attribute", :data_type => "String")
|
76
|
+
attribute_value = AttributeValue.new
|
77
|
+
attribute_value.value = "some string"
|
78
|
+
attribute_type.attribute_values << attribute_value
|
79
|
+
attribute_value.save
|
80
|
+
|
81
|
+
attribute_value.value_as_data_type.should be_kind_of(String)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return a boolean if the associated attribute_types data_type is 'Boolean'" do
|
85
|
+
attribute_type = AttributeType.create(:description => "Some Boolean Attribute", :data_type => "Boolean")
|
86
|
+
attribute_value = AttributeValue.new
|
87
|
+
attribute_value.value = "true"
|
88
|
+
attribute_type.attribute_values << attribute_value
|
89
|
+
attribute_value.save
|
90
|
+
|
91
|
+
attribute_value.value_as_data_type.should eq(true)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should return a integer if the associated attribute_types data_type is 'Int'" do
|
95
|
+
attribute_type = AttributeType.create(:description => "Some Integer Attribute", :data_type => "Int")
|
96
|
+
attribute_value = AttributeValue.new
|
97
|
+
attribute_value.value = "1"
|
98
|
+
attribute_type.attribute_values << attribute_value
|
99
|
+
attribute_value.save
|
100
|
+
|
101
|
+
attribute_value.value_as_data_type.should be_kind_of(Integer)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should return a float if the associated attribute_types data_type is 'Float'" do
|
105
|
+
attribute_type = AttributeType.create(:description => "Some Float Attribute", :data_type => "Float")
|
106
|
+
attribute_value = AttributeValue.new
|
107
|
+
attribute_value.value = "1.1"
|
108
|
+
attribute_type.attribute_values << attribute_value
|
109
|
+
attribute_value.save
|
110
|
+
|
111
|
+
attribute_value.value_as_data_type.should be_kind_of(Float)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Blog do
|
4
|
+
it "can be instantiated" do
|
5
|
+
Blog.new.should be_an_instance_of(Blog)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "can be saved successfully" do
|
9
|
+
Blog.create(:title => "Some Title").should be_persisted
|
10
|
+
end
|
11
|
+
|
12
|
+
it "can find_blog_post" do
|
13
|
+
blog = Blog.create(:title => "some title")
|
14
|
+
blog.find_blog_post('test')
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Content do
|
4
|
+
it "can be instantiated" do
|
5
|
+
Content.new.should be_an_instance_of(Content)
|
6
|
+
end
|
7
|
+
|
8
|
+
#it "can be saved successfully" do
|
9
|
+
# Content.create(:type => 'Page', :title => 'Test').should be_persisted
|
10
|
+
#end
|
11
|
+
|
12
|
+
describe "self.find_by_section_id" do
|
13
|
+
it "should return all articles belonging to the given section" do
|
14
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
15
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
16
|
+
article = Article.create(:created_by_id => 1, :title => "some article")
|
17
|
+
|
18
|
+
website_section = WebsiteSection.create(:title => "section title")
|
19
|
+
article.website_sections << website_section
|
20
|
+
|
21
|
+
results = Content.find_by_section_id(1)
|
22
|
+
results.should include(article)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "self.find_by_section_id_filtered_by_id" do
|
27
|
+
it "should return all articles conected to the given section that also have ids in the given filter list" do
|
28
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
29
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
30
|
+
article = Article.create(:created_by_id => 1, :title => "some article")
|
31
|
+
article2 = Article.create(:created_by_id => 1, :title => "some article 2")
|
32
|
+
|
33
|
+
website_section = WebsiteSection.create(:title => "section title")
|
34
|
+
article.website_sections << website_section
|
35
|
+
article2.website_sections << website_section
|
36
|
+
|
37
|
+
results = Content.find_by_section_id_filtered_by_id(1, [1])
|
38
|
+
results.should include(article)
|
39
|
+
results.should_not include(article2)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "self.find_published_by_section" do
|
44
|
+
it "should return all content versions that belong to the given website version and section" do
|
45
|
+
@website = Website.create(:name => "Some Site")
|
46
|
+
@website.hosts << WebsiteHost.create(:host => "some_host")
|
47
|
+
@website.website_sections << WebsiteSection.create(:title => "section title")
|
48
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
49
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
50
|
+
article = Article.create(:created_by_id => 1, :title => "some article")
|
51
|
+
|
52
|
+
website_section = WebsiteSection.find(1)
|
53
|
+
article.website_sections << website_section
|
54
|
+
|
55
|
+
article.publish(Website.find(1), "some comment", 1, User.find(1))
|
56
|
+
@website.set_publication_version(1.1, 1)
|
57
|
+
|
58
|
+
article2 = Article.create(:created_by_id => 1, :title => "some article 2")
|
59
|
+
article2.website_sections << website_section
|
60
|
+
|
61
|
+
article_version = article.versions.first
|
62
|
+
article_version2 = article2.versions.first
|
63
|
+
|
64
|
+
results = Content.find_published_by_section(PublishedWebsite.find_by_version(0.1), WebsiteSection.find(1))
|
65
|
+
results.should include(article_version)
|
66
|
+
results.should_not include(article_version2)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "self.find_published_by_section_with_tag" do
|
71
|
+
it "should return all content version that belong to the given active_publication and section that have the given tag" do
|
72
|
+
@website = Website.create(:name => "Some Site")
|
73
|
+
@website.hosts << WebsiteHost.create(:host => "some_host")
|
74
|
+
@website.website_sections << WebsiteSection.create(:title => "section title")
|
75
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
76
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
77
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
78
|
+
|
79
|
+
website_section = WebsiteSection.find(1)
|
80
|
+
article.website_sections << website_section
|
81
|
+
|
82
|
+
article.publish(Website.find(1), "some comment", 1, User.find(1))
|
83
|
+
@website.set_publication_version(1.1, 1)
|
84
|
+
|
85
|
+
article2 = Article.create(:created_by_id => 1, :title => "some article 2")
|
86
|
+
article2.website_sections << website_section
|
87
|
+
|
88
|
+
article_version = article.versions.first
|
89
|
+
article_version2 = article2.versions.first
|
90
|
+
|
91
|
+
tag = ActsAsTaggableOn::Tag.find_by_name("some tag")
|
92
|
+
|
93
|
+
results = Content.find_published_by_section_with_tag(PublishedWebsite.find_by_version(0.1), WebsiteSection.find(1), tag)
|
94
|
+
results.should include(article_version)
|
95
|
+
results.should_not include(article_version2)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "find_website_sections_by_site_id" do
|
100
|
+
it "should return all the website sections the content belongs to in the given website" do
|
101
|
+
@website = Website.create(:name => "Some Site")
|
102
|
+
@website.hosts << WebsiteHost.create(:host => "some_host")
|
103
|
+
@website.website_sections << WebsiteSection.create(:title => "section title")
|
104
|
+
@website.website_sections << WebsiteSection.create(:title => "section title 2")
|
105
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
106
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
107
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
108
|
+
|
109
|
+
website_section = WebsiteSection.find(1)
|
110
|
+
website_section2 = WebsiteSection.find(2)
|
111
|
+
article.website_sections << website_section
|
112
|
+
article.website_sections << website_section2
|
113
|
+
|
114
|
+
@website2 = Website.create(:name => "Some Other Site")
|
115
|
+
@website2.hosts << WebsiteHost.create(:host => "some_other_host")
|
116
|
+
@website2.website_sections << WebsiteSection.create(:title => "section other title")
|
117
|
+
|
118
|
+
other_website_section = WebsiteSection.find_by_title("section other title")
|
119
|
+
article.website_sections << other_website_section
|
120
|
+
|
121
|
+
results = article.find_website_sections_by_site_id(1)
|
122
|
+
results.should include(website_section)
|
123
|
+
results.should include(website_section2)
|
124
|
+
results.should_not include(other_website_section)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "position" do
|
129
|
+
it "should return the position of the content in the website_section with the given id" do
|
130
|
+
@website = Website.create(:name => "Some Site")
|
131
|
+
@website.hosts << WebsiteHost.create(:host => "some_host")
|
132
|
+
@website.website_sections << WebsiteSection.create(:title => "section title")
|
133
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
134
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
135
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
136
|
+
|
137
|
+
website_section = WebsiteSection.find(1)
|
138
|
+
article.website_sections << website_section
|
139
|
+
|
140
|
+
article.position(1).should eq(0)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "add_comment" do
|
145
|
+
it "should add a comment to the article" do
|
146
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
147
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
148
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
149
|
+
|
150
|
+
article.add_comment(:comment => "some comment")
|
151
|
+
|
152
|
+
article.comments.first.comment.should eq("some comment")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "get_comments" do
|
157
|
+
it "should return all comments for an article limited by the given limit" do
|
158
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
159
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
160
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
161
|
+
|
162
|
+
article.add_comment(:comment => "some comment")
|
163
|
+
|
164
|
+
article.get_comments(1).first.comment.should eq("some comment")
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
describe "update_content_area_and_position_by_section" do
|
169
|
+
it "should update the content area and position of the content in the given section" do
|
170
|
+
@website = Website.create(:name => "Some Site")
|
171
|
+
@website.hosts << WebsiteHost.create(:host => "some_host")
|
172
|
+
@website.website_sections << WebsiteSection.create(:title => "section title")
|
173
|
+
WorkflowProcess.create(:internal_identifier => "test_content_mgmt", :process_template => true)
|
174
|
+
WorkflowStep.create(:internal_identifier => "Start", :executable_command_id => 1, :executable_command_type => "ManualWorkflowStep", :workflow_process_id => 1, :initial_step => true)
|
175
|
+
article = Article.create(:created_by_id => 1, :title => "some article", :tag_list => "some tag")
|
176
|
+
|
177
|
+
website_section = WebsiteSection.find(1)
|
178
|
+
article.website_sections << website_section
|
179
|
+
|
180
|
+
article.update_content_area_and_position_by_section(website_section, "some_area", 1)
|
181
|
+
|
182
|
+
article.position(1).should eq(1)
|
183
|
+
website_section_content = WebsiteSectionContent.where('content_id = ? and website_section_id = ?',article.id, 1).first
|
184
|
+
website_section_content.content_area.should eq("some_area")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DocumentedItem, "klass?" do
|
4
|
+
let!(:article) { Factory.create(:article)}
|
5
|
+
let!(:klass_documented_item) { Factory.create(:documented_item, :documented_klass => 'Article')}
|
6
|
+
let!(:non_klass_documented_item) { Factory.create(:documented_item, :documented_content_id => article.id)}
|
7
|
+
|
8
|
+
it "should return true if klass isn't nil" do
|
9
|
+
klass_documented_item.klass?.should be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return false if klass is nil" do
|
13
|
+
non_klass_documented_item.klass?.should be_false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe DocumentedItem, "content?" do
|
18
|
+
let!(:article) { Factory.create(:article)}
|
19
|
+
let!(:content_documented_item) { Factory.create(:documented_item, :documented_content_id => article.id)}
|
20
|
+
let!(:non_content_documented_item) { Factory.create(:documented_item, :documented_klass => 'Article')}
|
21
|
+
|
22
|
+
it "should return true if documented_content_id isn't nil" do
|
23
|
+
content_documented_item.content?.should be_true
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return false if documented_content_id is nil" do
|
27
|
+
non_content_documented_item.content?.should be_false
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OnlineDocumentSection, "#build_section_hash" do
|
4
|
+
let!(:website) { Factory.create(:website, :name => "Website")}
|
5
|
+
let!(:root_section) { Factory.create(:online_document_section, :title => "Parent", :website => website, :in_menu => true)}
|
6
|
+
let!(:root_documented_content) { Factory.create(:documented_content, :title => "Parent")}
|
7
|
+
let!(:root_documented_item) { Factory.create(:documented_item,
|
8
|
+
:online_document_section => root_section,
|
9
|
+
:documented_content_id => root_documented_content.id,
|
10
|
+
:online_document_section => root_section) }
|
11
|
+
|
12
|
+
let!(:child_section) { Factory.create(:online_document_section, :title => "Child", :parent => root_section, :website => website, :in_menu => true)}
|
13
|
+
let!(:child_documented_content) { Factory.create(:documented_content, :title => "Child")}
|
14
|
+
let!(:child_documented_item) { Factory.create(:documented_item,
|
15
|
+
:online_document_section => child_section,
|
16
|
+
:documented_content_id => child_documented_content.id,
|
17
|
+
:online_document_section => child_section) }
|
18
|
+
|
19
|
+
before do
|
20
|
+
root_section.update_path!
|
21
|
+
@root_section_hash = {:name=>"Parent", :has_layout=>false, :type=>"OnlineDocumentSection", :in_menu=>true, :roles=>[],
|
22
|
+
:path=>"/parent", :permalink=>"parent", :internal_identifier=>"parent",
|
23
|
+
:online_document_sections=>[{:name=>"Child", :has_layout=>false, :type=>"OnlineDocumentSection", :in_menu=>true,
|
24
|
+
:roles=>[], :path=>"/parent/child", :permalink=>"child", :internal_identifier=>"child", :online_document_sections=>[],
|
25
|
+
:documented_item=>{:name=>"Child", :display_title=>nil, :internal_identifier=>"child"}}],
|
26
|
+
:documented_item=>{:name=>"Parent", :display_title=>nil, :internal_identifier=>"parent"}}
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should output the correct hash" do
|
30
|
+
root_section.build_section_hash.should == @root_section_hash
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|