Commit cac3874d9c34fe62e55435a96b75ac238fd9de5f
Exists in
master
and in
28 other branches
Merge branch 'stable'
Showing
37 changed files
with
127 additions
and
95 deletions
Show diff stats
app/controllers/admin/users_controller.rb
@@ -3,10 +3,10 @@ class UsersController < AdminController | @@ -3,10 +3,10 @@ class UsersController < AdminController | ||
3 | protect 'manage_environment_users', :environment | 3 | protect 'manage_environment_users', :environment |
4 | 4 | ||
5 | def index | 5 | def index |
6 | - @users = environment.users | ||
7 | respond_to do |format| | 6 | respond_to do |format| |
8 | format.html | 7 | format.html |
9 | format.xml do | 8 | format.xml do |
9 | + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) | ||
10 | render :xml => @users.to_xml( | 10 | render :xml => @users.to_xml( |
11 | :skip_types => true, | 11 | :skip_types => true, |
12 | :only => %w[email login created_at updated_at], | 12 | :only => %w[email login created_at updated_at], |
@@ -14,6 +14,7 @@ class UsersController < AdminController | @@ -14,6 +14,7 @@ class UsersController < AdminController | ||
14 | ) | 14 | ) |
15 | end | 15 | end |
16 | format.csv do | 16 | format.csv do |
17 | + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) | ||
17 | render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false | 18 | render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false |
18 | end | 19 | end |
19 | end | 20 | end |
app/helpers/application_helper.rb
@@ -985,7 +985,7 @@ module ApplicationHelper | @@ -985,7 +985,7 @@ module ApplicationHelper | ||
985 | 'thickbox', | 985 | 'thickbox', |
986 | 'lightbox', | 986 | 'lightbox', |
987 | 'colorpicker', | 987 | 'colorpicker', |
988 | - colorbox_stylesheet_path, | 988 | + 'colorbox', |
989 | pngfix_stylesheet_path, | 989 | pngfix_stylesheet_path, |
990 | ] + | 990 | ] + |
991 | tokeninput_stylesheets | 991 | tokeninput_stylesheets |
@@ -1000,10 +1000,6 @@ module ApplicationHelper | @@ -1000,10 +1000,6 @@ module ApplicationHelper | ||
1000 | 'iepngfix/iepngfix.css' | 1000 | 'iepngfix/iepngfix.css' |
1001 | end | 1001 | end |
1002 | 1002 | ||
1003 | - def colorbox_stylesheet_path | ||
1004 | - 'colorbox/colorbox.css' | ||
1005 | - end | ||
1006 | - | ||
1007 | def tokeninput_stylesheets | 1003 | def tokeninput_stylesheets |
1008 | ['token-input', 'token-input-facebook', 'token-input-mac'] | 1004 | ['token-input', 'token-input-facebook', 'token-input-mac'] |
1009 | end | 1005 | end |
app/models/product.rb
@@ -196,6 +196,7 @@ class Product < ActiveRecord::Base | @@ -196,6 +196,7 @@ class Product < ActiveRecord::Base | ||
196 | end | 196 | end |
197 | 197 | ||
198 | def price_description_percentage | 198 | def price_description_percentage |
199 | + return 0 if price.blank? || price.zero? | ||
199 | total_production_cost * 100 / price | 200 | total_production_cost * 100 / price |
200 | end | 201 | end |
201 | 202 |
app/models/theme.rb
@@ -43,8 +43,11 @@ class Theme | @@ -43,8 +43,11 @@ class Theme | ||
43 | 43 | ||
44 | def approved_themes(owner) | 44 | def approved_themes(owner) |
45 | Dir.glob(File.join(system_themes_dir, '*')).select do |item| | 45 | Dir.glob(File.join(system_themes_dir, '*')).select do |item| |
46 | - config = YAML.load_file(File.join(item, 'theme.yml')) | ||
47 | - (config['owner_type'] == owner.class.base_class.name) && (config['owner_id'] == owner.id) || config['public'] | 46 | + if File.exists?( File.join(item, 'theme.yml') ) |
47 | + config = YAML.load_file(File.join(item, 'theme.yml')) | ||
48 | + (config['owner_type'] == owner.class.base_class.name) && | ||
49 | + (config['owner_id'] == owner.id) || config['public'] | ||
50 | + end | ||
48 | end.map do |desc| | 51 | end.map do |desc| |
49 | new(File.basename(desc)) | 52 | new(File.basename(desc)) |
50 | end | 53 | end |
plugins/shopping_cart/public/style.css
po/pt/noosfero.po
@@ -14,7 +14,7 @@ msgid "" | @@ -14,7 +14,7 @@ msgid "" | ||
14 | msgstr "" | 14 | msgstr "" |
15 | "Project-Id-Version: noosfero 0.34.3\n" | 15 | "Project-Id-Version: noosfero 0.34.3\n" |
16 | "POT-Creation-Date: 2012-01-26 18:34-0200\n" | 16 | "POT-Creation-Date: 2012-01-26 18:34-0200\n" |
17 | -"PO-Revision-Date: 2012-01-26 18:40-0200\n" | 17 | +"PO-Revision-Date: 2012-02-06 22:28-0200\n" |
18 | "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n" | 18 | "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n" |
19 | "Language-Team: LANGUAGE TEAM <E-MAIL@ADDRESS or HOME PAGE>\n" | 19 | "Language-Team: LANGUAGE TEAM <E-MAIL@ADDRESS or HOME PAGE>\n" |
20 | "Language: \n" | 20 | "Language: \n" |
@@ -6735,7 +6735,7 @@ msgstr "" | @@ -6735,7 +6735,7 @@ msgstr "" | ||
6735 | 6735 | ||
6736 | #: app/views/cms/publish_on_portal_community.rhtml:2 | 6736 | #: app/views/cms/publish_on_portal_community.rhtml:2 |
6737 | msgid "Publish your article on portal community" | 6737 | msgid "Publish your article on portal community" |
6738 | -msgstr "Publicar seu artigoi na comunidade portal" | 6738 | +msgstr "Publicar seu artigo na comunidade portal" |
6739 | 6739 | ||
6740 | #: app/views/cms/publish_on_portal_community.rhtml:14 | 6740 | #: app/views/cms/publish_on_portal_community.rhtml:14 |
6741 | msgid "There is no portal community in this environment." | 6741 | msgid "There is no portal community in this environment." |
@@ -9151,7 +9151,7 @@ msgstr "Enviar pedido de compra" | @@ -9151,7 +9151,7 @@ msgstr "Enviar pedido de compra" | ||
9151 | 9151 | ||
9152 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:1 | 9152 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:1 |
9153 | msgid "Basket options" | 9153 | msgid "Basket options" |
9154 | -msgstr "Opçôes do cesto" | 9154 | +msgstr "Opções do cesto" |
9155 | 9155 | ||
9156 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:5 | 9156 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:5 |
9157 | msgid "Delivery?" | 9157 | msgid "Delivery?" |
112 Bytes
1.22 KB
111 Bytes
215 Bytes
217 Bytes
108 Bytes
108 Bytes
111 Bytes
216 Bytes
214 Bytes
9.21 KB
157 Bytes
182 Bytes
public/stylesheets/application.css
@@ -2993,9 +2993,10 @@ div#activation_enterprise div { | @@ -2993,9 +2993,10 @@ div#activation_enterprise div { | ||
2993 | #product-list li.product { | 2993 | #product-list li.product { |
2994 | width: 200px; | 2994 | width: 200px; |
2995 | min-height: 280px; | 2995 | min-height: 280px; |
2996 | - float: left; | ||
2997 | padding: 10px 30px 10px 0; | 2996 | padding: 10px 30px 10px 0; |
2998 | margin-bottom: 10px; | 2997 | margin-bottom: 10px; |
2998 | + display: inline-block; | ||
2999 | + vertical-align: top; | ||
2999 | } | 3000 | } |
3000 | #product-list .expand-box:hover { | 3001 | #product-list .expand-box:hover { |
3001 | background-color: #28F091; | 3002 | background-color: #28F091; |
@@ -0,0 +1,82 @@ | @@ -0,0 +1,82 @@ | ||
1 | +/* | ||
2 | + ColorBox Core Style: | ||
3 | + The following CSS is consistent between example themes and should not be altered. | ||
4 | +*/ | ||
5 | +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} | ||
6 | +#cboxOverlay{position:fixed; width:100%; height:100%;} | ||
7 | +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} | ||
8 | +#cboxContent{position:relative;} | ||
9 | +#cboxLoadedContent{overflow:auto;} | ||
10 | +#cboxTitle{margin:0;} | ||
11 | +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;} | ||
12 | +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} | ||
13 | +.cboxPhoto{float:left; margin:auto; border:0; display:block;} | ||
14 | +.cboxIframe{width:100%; height:100%; display:block; border:0;} | ||
15 | + | ||
16 | +/* | ||
17 | + User Style: | ||
18 | + Change the following styles to modify the appearance of ColorBox. They are | ||
19 | + ordered & tabbed in a way that represents the nesting of the generated HTML. | ||
20 | +*/ | ||
21 | +#cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;} | ||
22 | +#colorbox{} | ||
23 | + #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px 0;} | ||
24 | + #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px 0;} | ||
25 | + #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px -29px;} | ||
26 | + #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px -29px;} | ||
27 | + #cboxMiddleLeft{width:21px; background:url(../images/colorbox/controls.png) left top repeat-y;} | ||
28 | + #cboxMiddleRight{width:21px; background:url(../images/colorbox/controls.png) right top repeat-y;} | ||
29 | + #cboxTopCenter{height:21px; background:url(../images/colorbox/border.png) 0 0 repeat-x;} | ||
30 | + #cboxBottomCenter{height:21px; background:url(../images/colorbox/border.png) 0 -29px repeat-x;} | ||
31 | + #cboxContent{background:#fff; overflow:hidden;} | ||
32 | + #cboxError{padding:50px; border:1px solid #ccc;} | ||
33 | + #cboxLoadedContent{margin-bottom:28px;} | ||
34 | + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} | ||
35 | + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} | ||
36 | + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} | ||
37 | + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} | ||
38 | + #cboxPrevious.hover{background-position:-75px -25px;} | ||
39 | + #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} | ||
40 | + #cboxNext.hover{background-position:-50px -25px;} | ||
41 | + #cboxLoadingOverlay{background:url(../images/colorbox/loading_background.png) no-repeat center center;} | ||
42 | + #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;} | ||
43 | + #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} | ||
44 | + #cboxClose.hover{background-position:-25px -25px;} | ||
45 | + | ||
46 | +/* | ||
47 | + The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill | ||
48 | + when an alpha filter (opacity change) is set on the element or ancestor element. | ||
49 | +*/ | ||
50 | +.cboxIE #cboxTopLeft, | ||
51 | +.cboxIE #cboxTopCenter, | ||
52 | +.cboxIE #cboxTopRight, | ||
53 | +.cboxIE #cboxBottomLeft, | ||
54 | +.cboxIE #cboxBottomCenter, | ||
55 | +.cboxIE #cboxBottomRight, | ||
56 | +.cboxIE #cboxMiddleLeft, | ||
57 | +.cboxIE #cboxMiddleRight { | ||
58 | + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); | ||
59 | +} | ||
60 | + | ||
61 | +/* | ||
62 | + The following provides PNG transparency support for IE6 | ||
63 | +*/ | ||
64 | +.cboxIE6 #cboxTopLeft{background:url(../images/colorbox/ie6/borderTopLeft.png);} | ||
65 | +.cboxIE6 #cboxTopCenter{background:url(../images/colorbox/ie6/borderTopCenter.png);} | ||
66 | +.cboxIE6 #cboxTopRight{background:url(../images/colorbox/ie6/borderTopRight.png);} | ||
67 | +.cboxIE6 #cboxBottomLeft{background:url(../images/colorbox/ie6/borderBottomLeft.png);} | ||
68 | +.cboxIE6 #cboxBottomCenter{background:url(../images/colorbox/ie6/borderBottomCenter.png);} | ||
69 | +.cboxIE6 #cboxBottomRight{background:url(../images/colorbox/ie6/borderBottomRight.png);} | ||
70 | +.cboxIE6 #cboxMiddleLeft{background:url(../images/colorbox/ie6/borderMiddleLeft.png);} | ||
71 | +.cboxIE6 #cboxMiddleRight{background:url(../images/colorbox/ie6/borderMiddleRight.png);} | ||
72 | + | ||
73 | +.cboxIE6 #cboxTopLeft, | ||
74 | +.cboxIE6 #cboxTopCenter, | ||
75 | +.cboxIE6 #cboxTopRight, | ||
76 | +.cboxIE6 #cboxBottomLeft, | ||
77 | +.cboxIE6 #cboxBottomCenter, | ||
78 | +.cboxIE6 #cboxBottomRight, | ||
79 | +.cboxIE6 #cboxMiddleLeft, | ||
80 | +.cboxIE6 #cboxMiddleRight { | ||
81 | + _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); | ||
82 | +} |
public/stylesheets/colorbox/colorbox.css
@@ -1,82 +0,0 @@ | @@ -1,82 +0,0 @@ | ||
1 | -/* | ||
2 | - ColorBox Core Style: | ||
3 | - The following CSS is consistent between example themes and should not be altered. | ||
4 | -*/ | ||
5 | -#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} | ||
6 | -#cboxOverlay{position:fixed; width:100%; height:100%;} | ||
7 | -#cboxMiddleLeft, #cboxBottomLeft{clear:left;} | ||
8 | -#cboxContent{position:relative;} | ||
9 | -#cboxLoadedContent{overflow:auto;} | ||
10 | -#cboxTitle{margin:0;} | ||
11 | -#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;} | ||
12 | -#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} | ||
13 | -.cboxPhoto{float:left; margin:auto; border:0; display:block;} | ||
14 | -.cboxIframe{width:100%; height:100%; display:block; border:0;} | ||
15 | - | ||
16 | -/* | ||
17 | - User Style: | ||
18 | - Change the following styles to modify the appearance of ColorBox. They are | ||
19 | - ordered & tabbed in a way that represents the nesting of the generated HTML. | ||
20 | -*/ | ||
21 | -#cboxOverlay{background:url(/stylesheets/colorbox/images/overlay.png) repeat 0 0;} | ||
22 | -#colorbox{} | ||
23 | - #cboxTopLeft{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -100px 0;} | ||
24 | - #cboxTopRight{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -129px 0;} | ||
25 | - #cboxBottomLeft{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -100px -29px;} | ||
26 | - #cboxBottomRight{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -129px -29px;} | ||
27 | - #cboxMiddleLeft{width:21px; background:url(/stylesheets/colorbox/images/controls.png) left top repeat-y;} | ||
28 | - #cboxMiddleRight{width:21px; background:url(/stylesheets/colorbox/images/controls.png) right top repeat-y;} | ||
29 | - #cboxTopCenter{height:21px; background:url(/stylesheets/colorbox/images/border.png) 0 0 repeat-x;} | ||
30 | - #cboxBottomCenter{height:21px; background:url(/stylesheets/colorbox/images/border.png) 0 -29px repeat-x;} | ||
31 | - #cboxContent{background:#fff; overflow:hidden;} | ||
32 | - #cboxError{padding:50px; border:1px solid #ccc;} | ||
33 | - #cboxLoadedContent{margin-bottom:28px;} | ||
34 | - #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} | ||
35 | - #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} | ||
36 | - #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} | ||
37 | - #cboxPrevious{position:absolute; bottom:0; left:0; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} | ||
38 | - #cboxPrevious.hover{background-position:-75px -25px;} | ||
39 | - #cboxNext{position:absolute; bottom:0; left:27px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} | ||
40 | - #cboxNext.hover{background-position:-50px -25px;} | ||
41 | - #cboxLoadingOverlay{background:url(/stylesheets/colorbox/images/loading_background.png) no-repeat center center;} | ||
42 | - #cboxLoadingGraphic{background:url(/stylesheets/colorbox/images/loading.gif) no-repeat center center;} | ||
43 | - #cboxClose{position:absolute; bottom:0; right:0; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} | ||
44 | - #cboxClose.hover{background-position:-25px -25px;} | ||
45 | - | ||
46 | -/* | ||
47 | - The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill | ||
48 | - when an alpha filter (opacity change) is set on the element or ancestor element. | ||
49 | -*/ | ||
50 | -.cboxIE #cboxTopLeft, | ||
51 | -.cboxIE #cboxTopCenter, | ||
52 | -.cboxIE #cboxTopRight, | ||
53 | -.cboxIE #cboxBottomLeft, | ||
54 | -.cboxIE #cboxBottomCenter, | ||
55 | -.cboxIE #cboxBottomRight, | ||
56 | -.cboxIE #cboxMiddleLeft, | ||
57 | -.cboxIE #cboxMiddleRight { | ||
58 | - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); | ||
59 | -} | ||
60 | - | ||
61 | -/* | ||
62 | - The following provides PNG transparency support for IE6 | ||
63 | -*/ | ||
64 | -.cboxIE6 #cboxTopLeft{background:url(/stylesheets/colorbox/images/ie6/borderTopLeft.png);} | ||
65 | -.cboxIE6 #cboxTopCenter{background:url(/stylesheets/colorbox/images/ie6/borderTopCenter.png);} | ||
66 | -.cboxIE6 #cboxTopRight{background:url(/stylesheets/colorbox/images/ie6/borderTopRight.png);} | ||
67 | -.cboxIE6 #cboxBottomLeft{background:url(/stylesheets/colorbox/images/ie6/borderBottomLeft.png);} | ||
68 | -.cboxIE6 #cboxBottomCenter{background:url(/stylesheets/colorbox/images/ie6/borderBottomCenter.png);} | ||
69 | -.cboxIE6 #cboxBottomRight{background:url(/stylesheets/colorbox/images/ie6/borderBottomRight.png);} | ||
70 | -.cboxIE6 #cboxMiddleLeft{background:url(/stylesheets/colorbox/images/ie6/borderMiddleLeft.png);} | ||
71 | -.cboxIE6 #cboxMiddleRight{background:url(/stylesheets/colorbox/images/ie6/borderMiddleRight.png);} | ||
72 | - | ||
73 | -.cboxIE6 #cboxTopLeft, | ||
74 | -.cboxIE6 #cboxTopCenter, | ||
75 | -.cboxIE6 #cboxTopRight, | ||
76 | -.cboxIE6 #cboxBottomLeft, | ||
77 | -.cboxIE6 #cboxBottomCenter, | ||
78 | -.cboxIE6 #cboxBottomRight, | ||
79 | -.cboxIE6 #cboxMiddleLeft, | ||
80 | -.cboxIE6 #cboxMiddleRight { | ||
81 | - _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); | ||
82 | -} |
public/stylesheets/colorbox/images/border.png
112 Bytes
public/stylesheets/colorbox/images/controls.png
1.22 KB
public/stylesheets/colorbox/images/ie6/borderBottomCenter.png
111 Bytes
public/stylesheets/colorbox/images/ie6/borderBottomLeft.png
215 Bytes
public/stylesheets/colorbox/images/ie6/borderBottomRight.png
217 Bytes
public/stylesheets/colorbox/images/ie6/borderMiddleLeft.png
108 Bytes
public/stylesheets/colorbox/images/ie6/borderMiddleRight.png
108 Bytes
public/stylesheets/colorbox/images/ie6/borderTopCenter.png
111 Bytes
public/stylesheets/colorbox/images/ie6/borderTopLeft.png
216 Bytes
public/stylesheets/colorbox/images/ie6/borderTopRight.png
214 Bytes
public/stylesheets/colorbox/images/loading.gif
9.21 KB
public/stylesheets/colorbox/images/loading_background.png
157 Bytes
public/stylesheets/colorbox/images/overlay.png
182 Bytes
test/unit/product_test.rb
@@ -510,4 +510,26 @@ class ProductTest < ActiveSupport::TestCase | @@ -510,4 +510,26 @@ class ProductTest < ActiveSupport::TestCase | ||
510 | assert_equal "50.00", product.formatted_value(:inputs_cost) | 510 | assert_equal "50.00", product.formatted_value(:inputs_cost) |
511 | end | 511 | end |
512 | 512 | ||
513 | + should 'return 0 on price_description_percentage by default' do | ||
514 | + assert_equal 0, Product.new.price_description_percentage | ||
515 | + end | ||
516 | + | ||
517 | + should 'return 0 on price_description_percentage if price is 0' do | ||
518 | + product = fast_create(Product, :price => 0) | ||
519 | + | ||
520 | + assert_equal 0, product.price_description_percentage | ||
521 | + end | ||
522 | + | ||
523 | + should 'return 0 on price_description_percentage if price is not defined' do | ||
524 | + product = fast_create(Product) | ||
525 | + | ||
526 | + assert_equal 0, product.price_description_percentage | ||
527 | + end | ||
528 | + | ||
529 | + should 'return 0 on price_description_percentage if total_production_cost is 0' do | ||
530 | + product = fast_create(Product, :price => 50) | ||
531 | + | ||
532 | + assert_equal 0, product.price_description_percentage | ||
533 | + end | ||
534 | + | ||
513 | end | 535 | end |
test/unit/theme_test.rb
@@ -170,6 +170,14 @@ class ThemeTest < ActiveSupport::TestCase | @@ -170,6 +170,14 @@ class ThemeTest < ActiveSupport::TestCase | ||
170 | assert ! Theme.approved_themes(profile).include?(Theme.find(t3.id)) | 170 | assert ! Theme.approved_themes(profile).include?(Theme.find(t3.id)) |
171 | end | 171 | end |
172 | 172 | ||
173 | + should 'not list non theme files or dirs inside themes dir' do | ||
174 | + Theme.stubs(:system_themes_dir).returns(TMP_THEMES_DIR) | ||
175 | + Dir.mkdir(TMP_THEMES_DIR) | ||
176 | + Dir.mkdir(TMP_THEMES_DIR+'/empty-dir') | ||
177 | + File.new(TMP_THEMES_DIR+'/my-logo.png', File::CREAT) | ||
178 | + assert Theme.approved_themes(Environment.default).empty? | ||
179 | + end | ||
180 | + | ||
173 | should 'set theme to public' do | 181 | should 'set theme to public' do |
174 | t = Theme.new('mytheme') | 182 | t = Theme.new('mytheme') |
175 | t.public = true | 183 | t.public = true |