fooltip 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/fooltip/containers.js +6 -0
- data/app/assets/stylesheets/fooltip/containers.css.sass +5 -1
- data/app/controllers/fooltip/application_controller.rb +0 -1
- data/app/models/fooltip/container.rb +7 -1
- data/app/models/fooltip/link.rb +1 -1
- data/app/models/fooltip/popup.rb +3 -1
- data/app/uploaders/fooltip/image_uploader.rb +7 -5
- data/app/views/fooltip/containers/_container.html.haml +6 -3
- data/app/views/layouts/fooltip/application.html.haml +12 -0
- data/lib/fooltip/version.rb +1 -1
- data/spec/controllers/fooltip/containers_controller_spec.rb +15 -0
- data/spec/data/logo.gif +0 -0
- data/spec/data/models.rb +6 -0
- data/spec/data/schema.rb +10 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -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.haml +12 -0
- data/spec/dummy/config/application.rb +66 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -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 +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +78 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +185 -0
- data/spec/dummy/log/test.log +2045 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/uploads/fooltip/container/image/1/test_small.png +0 -0
- data/spec/dummy/public/uploads/fooltip/container/image/2/test_small.png +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/tmp/cache/assets/C12/540/sprockets%2Fe422409b4963557190ca3040c56224d4 +0 -0
- data/spec/dummy/tmp/cache/assets/C79/930/sprockets%2Fa861857146e1fa262607477ba63f1c11 +0 -0
- data/spec/dummy/tmp/cache/assets/C7F/650/sprockets%2F3de8c7412fcd74f3312447a314241996 +0 -0
- data/spec/dummy/tmp/cache/assets/C84/410/sprockets%2F42ce1bfac21ec9611479472375848076 +0 -0
- data/spec/dummy/tmp/cache/assets/C89/3D0/sprockets%2Fa512a3e92488d8934374b378fb24c661 +0 -0
- data/spec/dummy/tmp/cache/assets/C98/310/sprockets%2Faecb14440227a14ead43126938621c90 +0 -0
- data/spec/dummy/tmp/cache/assets/CA5/070/sprockets%2F48d7b46452832d4e3c50c046ca73343a +0 -0
- data/spec/dummy/tmp/cache/assets/CB8/B60/sprockets%2F4768e955671fc74af259c134d5110c4e +0 -0
- data/spec/dummy/tmp/cache/assets/CBD/D00/sprockets%2Fb849096bf7cd430d3700e5759049d7f3 +0 -0
- data/spec/dummy/tmp/cache/assets/CDF/290/sprockets%2Ffa27582045d91bbc326d5562bf8a7373 +0 -0
- data/spec/dummy/tmp/cache/assets/CE3/7B0/sprockets%2F71092d61418cb58524fed3b9c074e94b +0 -0
- data/spec/dummy/tmp/cache/assets/CE5/E40/sprockets%2Fa795bdff77229a1315b860808b6730de +0 -0
- data/spec/dummy/tmp/cache/assets/CF0/DF0/sprockets%2F0c483472874e202fbef178f8464ea6e9 +0 -0
- data/spec/dummy/tmp/cache/assets/CF2/4B0/sprockets%2F42258a65f48286a3d8f8db4e196192fd +0 -0
- data/spec/dummy/tmp/cache/assets/CF3/CA0/sprockets%2F6474384eabec6e9079a5c7761486bd36 +0 -0
- data/spec/dummy/tmp/cache/assets/CFF/E40/sprockets%2F56f3043dbd5f13183feab1a87f072320 +0 -0
- data/spec/dummy/tmp/cache/assets/D09/5C0/sprockets%2Fa39c464abd94230a0e8be429304f67d4 +0 -0
- data/spec/dummy/tmp/cache/assets/D13/6B0/sprockets%2F584dd69de5c4afc42b6f1055b2778034 +0 -0
- data/spec/dummy/tmp/cache/assets/D15/9C0/sprockets%2F88bb29d5e96a3b8b76dd6f15061a2129 +0 -0
- data/spec/dummy/tmp/cache/assets/D1F/AF0/sprockets%2Fb5b10ab08e5ce010be8004ab7f722661 +0 -0
- data/spec/dummy/tmp/cache/assets/D21/7E0/sprockets%2F6547fdc4d7de9ab888b1d47834c12825 +0 -0
- data/spec/dummy/tmp/cache/assets/D24/3F0/sprockets%2F6fdf659d2ac27d36a91a78b814d25889 +0 -0
- data/spec/dummy/tmp/cache/assets/D24/5D0/sprockets%2Fb8180b99b5595c2ef880e77b8edf4430 +0 -0
- data/spec/dummy/tmp/cache/assets/D30/860/sprockets%2F33d83f499569ca6dd83c5d85e55b387f +0 -0
- data/spec/dummy/tmp/cache/assets/D33/9D0/sprockets%2F9ad41c00a47c157c591a507afc3ed493 +0 -0
- data/spec/dummy/tmp/cache/assets/D34/0E0/sprockets%2F12f74b83c9905a0a2eccbdb4d7427127 +0 -0
- data/spec/dummy/tmp/cache/assets/D36/E50/sprockets%2Fca333e38e361e5c848a44052a58bcfb2 +0 -0
- data/spec/dummy/tmp/cache/assets/D38/810/sprockets%2F0655ac6dcfb25a6313b99e15bcd31936 +0 -0
- data/spec/dummy/tmp/cache/assets/D4A/070/sprockets%2F693f1f55237e8ddbaa4e83784e4810be +0 -0
- data/spec/dummy/tmp/cache/assets/D58/700/sprockets%2Fb0d7a4813afa6c1e2c3c24b116668dc1 +0 -0
- data/spec/dummy/tmp/cache/assets/D5C/EC0/sprockets%2Fc83ee051397beae62ea012bd8c20e171 +0 -0
- data/spec/dummy/tmp/cache/assets/D5E/8F0/sprockets%2F58bf1fcb9dd93c6c09928e083a99d957 +0 -0
- data/spec/dummy/tmp/cache/assets/D63/060/sprockets%2Fe43c7422ad2991a737c506a6cfbaca08 +0 -0
- data/spec/dummy/tmp/cache/assets/D66/0B0/sprockets%2F599a0905bec5dff2ba5a03ba3524909d +0 -0
- data/spec/dummy/tmp/cache/assets/D66/920/sprockets%2F882924b1d1a0f7223cb2f1ee3dcb578d +0 -0
- data/spec/dummy/tmp/cache/assets/D66/960/sprockets%2F4bd5ea023e4ae3e19b0971a78684cab4 +0 -0
- data/spec/dummy/tmp/cache/assets/D67/BC0/sprockets%2F84c3e32721189b020cdb2ccaff7cc785 +0 -0
- data/spec/dummy/tmp/cache/assets/D6B/DD0/sprockets%2F7db3efa083c4a38597a1dadd835b0528 +0 -0
- data/spec/dummy/tmp/cache/assets/D6C/540/sprockets%2Fe23ba0d755bb180a2961d478e4a9dff4 +0 -0
- data/spec/dummy/tmp/cache/assets/D71/F80/sprockets%2F82e84d453d4341c77efdc557aabea318 +0 -0
- data/spec/dummy/tmp/cache/assets/D76/F30/sprockets%2Fe6cb8503cd99180bae3e862cb7f9d144 +0 -0
- data/spec/dummy/tmp/cache/assets/D93/6F0/sprockets%2F22b6e10f919d331bff2e6fa53cb55e2a +0 -0
- data/spec/dummy/tmp/cache/assets/D97/1A0/sprockets%2F8f4efba1871fb62583020cb1c6afdf35 +0 -0
- data/spec/dummy/tmp/cache/assets/D9D/710/sprockets%2F0250dfadb4c8d56a5c2701ed688c8a9d +0 -0
- data/spec/dummy/tmp/cache/assets/D9E/E70/sprockets%2F4b9ec8cdf5dbb2a621373b2667c68c4a +0 -0
- data/spec/dummy/tmp/cache/assets/DCB/A30/sprockets%2Fa7a93a5918614b7bfd4ede5a0f63c2db +0 -0
- data/spec/dummy/tmp/cache/assets/DCB/B70/sprockets%2F2c844f6fbf82ba0cbe7e8730c21ad64f +0 -0
- data/spec/dummy/tmp/cache/assets/DD2/810/sprockets%2F8e12ead9fea63a8ff44db33c62f4f505 +0 -0
- data/spec/dummy/tmp/cache/assets/DD8/610/sprockets%2Fd1976891ce3b0e86cfdd6dde213eda56 +0 -0
- data/spec/dummy/tmp/cache/assets/DF6/500/sprockets%2Fcef2687afea3a5f96ad213b11b9abf52 +0 -0
- data/spec/dummy/tmp/cache/assets/E55/040/sprockets%2F4e9fdbdfcaf848e4cee03db1c4005ba4 +0 -0
- data/spec/dummy/tmp/cache/sass/05c61e3b86f6e79287c8b349be7825cc5217eb30/application.css.sassc +0 -0
- data/spec/dummy/tmp/cache/sass/05c61e3b86f6e79287c8b349be7825cc5217eb30/containers.css.sassc +0 -0
- data/spec/dummy/tmp/cache/sass/b95cdf227345c18646630d554608b9276b4e1657/bootstrap.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_accordion.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_alerts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_breadcrumbs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_button-groups.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_buttons.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_carousel.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_close.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_code.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_component-animations.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_dropdowns.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_forms.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_grid.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_hero-unit.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_labels-badges.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_layouts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_media.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_mixins.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_modals.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_navbar.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_navs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_pager.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_pagination.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_popovers.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_progress-bars.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_reset.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_scaffolding.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_sprites.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_tables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_thumbnails.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_tooltip.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_type.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_utilities.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_variables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_wells.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/bootstrap.scssc +0 -0
- data/spec/factories/fooltip/containers.rb +6 -0
- data/spec/factories/fooltip/links.rb +10 -0
- data/spec/factories/fooltip/popups.rb +7 -0
- data/spec/factories_spec.rb +10 -0
- data/spec/fooltip_spec.rb +40 -0
- data/spec/helpers/fooltip/containers_helper_spec.rb +17 -0
- data/spec/models/fooltip/association_spec.rb +25 -0
- data/spec/models/fooltip/container_spec.rb +16 -0
- data/spec/models/fooltip/link_spec.rb +34 -0
- data/spec/models/fooltip/popup_spec.rb +17 -0
- data/spec/spec_helper.rb +82 -0
- data/spec/uploaders/image_uploader_spec.rb +45 -0
- metadata +298 -3
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/404.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/422.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/500.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
23
|
+
</div>
|
24
|
+
</body>
|
25
|
+
</html>
|
File without changes
|
Binary file
|
Binary file
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/dummy/tmp/cache/sass/c42e1695c1e1b1c6ff23323f220608a8738467c8/_component-animations.scssc
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
FactoryGirl.factories.map(&:name).each do |factory_name|
|
4
|
+
describe "The #{factory_name} factory" do
|
5
|
+
it 'should be valid' do
|
6
|
+
instance = FactoryGirl.build(factory_name)
|
7
|
+
instance.valid?.should be_true, instance.errors.full_messages.to_sentence
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Fooltip" do
|
4
|
+
|
5
|
+
context "ActiveRecord::Base" do
|
6
|
+
it "should respond to :has_fooltips" do
|
7
|
+
ActiveRecord::Base.should respond_to :has_fooltips
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context "an instance of an ActiveRecord class calling 'has_fooltips'" do
|
12
|
+
let(:tf) { TestFooltip.new }
|
13
|
+
it "should respond to :fooltips" do
|
14
|
+
tf.should respond_to :fooltips
|
15
|
+
end
|
16
|
+
context "fooltips" do
|
17
|
+
before { tf.save }
|
18
|
+
let(:c) { FactoryGirl.create(:container) }
|
19
|
+
it "should have no records in fooltips before any have been added" do
|
20
|
+
tf.fooltips.should be_empty
|
21
|
+
end
|
22
|
+
it "should have have a record in fooltips if one has been added" do
|
23
|
+
tf.fooltips << c
|
24
|
+
tf.fooltips.count.should == 1
|
25
|
+
end
|
26
|
+
it "should add an Association when adding a container to fooltips" do
|
27
|
+
-> { tf.fooltips << c }.should change(Fooltip::Association, :count).by(1)
|
28
|
+
end
|
29
|
+
it "should remove an Association when deleting a container from fooltips" do
|
30
|
+
tf.fooltips << c
|
31
|
+
-> { tf.fooltips.last.destroy }.should change(Fooltip::Association, :count).by(-1)
|
32
|
+
end
|
33
|
+
it "should remove an Association when deleting its owner" do
|
34
|
+
tf.fooltips << c
|
35
|
+
-> { tf.destroy }.should change(Fooltip::Association, :count).by(-1)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Specs in this file have access to a helper object that includes
|
4
|
+
# the ContainersHelper. For example:
|
5
|
+
#
|
6
|
+
# describe ContainersHelper do
|
7
|
+
# describe "string concat" do
|
8
|
+
# it "concats two strings with spaces" do
|
9
|
+
# helper.concat_strings("this","that").should == "this that"
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
# end
|
13
|
+
module Fooltip
|
14
|
+
describe ContainersHelper do
|
15
|
+
pending "add some examples to (or delete) #{__FILE__}"
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Fooltip
|
4
|
+
describe Association do
|
5
|
+
it { should belong_to(:owner) }
|
6
|
+
it { should belong_to(:container) }
|
7
|
+
|
8
|
+
it { should validate_presence_of :owner_id }
|
9
|
+
it { should validate_presence_of :owner_type }
|
10
|
+
it { should validate_presence_of :container_id }
|
11
|
+
|
12
|
+
it { should validate_uniqueness_of(:owner_id).scoped_to(:owner_type, :container_id) }
|
13
|
+
|
14
|
+
context "an instance of an ActiveRecord class calling 'has_fooltips'" do
|
15
|
+
let(:tf) { TestFooltip.new }
|
16
|
+
it "should respond to :fooltips" do
|
17
|
+
tf.should respond_to :fooltips
|
18
|
+
end
|
19
|
+
it "should not have any fooltips before any have been added" do
|
20
|
+
tf.fooltips.should be_empty
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Fooltip
|
4
|
+
describe Container do
|
5
|
+
it { should have_many(:links) }
|
6
|
+
it { should have_many(:associations) }
|
7
|
+
it { should have_many(:popups).through(:links) }
|
8
|
+
|
9
|
+
it "should destroy all associated links when destroyed" do
|
10
|
+
c = FactoryGirl.create(:container)
|
11
|
+
p = FactoryGirl.create(:popup)
|
12
|
+
FactoryGirl.create(:link, container: c, popup: p)
|
13
|
+
-> { c.destroy }.should change(Link, :count).by(-1)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Fooltip
|
4
|
+
describe Link do
|
5
|
+
it { should belong_to :container }
|
6
|
+
it { should belong_to :popup }
|
7
|
+
|
8
|
+
it { should validate_presence_of :container }
|
9
|
+
it { should validate_presence_of :popup }
|
10
|
+
it { should validate_presence_of :x }
|
11
|
+
it { should validate_presence_of :y }
|
12
|
+
it { should validate_presence_of :placement }
|
13
|
+
it { should validate_presence_of :trigger }
|
14
|
+
|
15
|
+
context ".placment_string" do
|
16
|
+
{ 1 => 'top', 2 => 'right', 3 => 'bottom', 4 => 'left' }.each do |key, value|
|
17
|
+
it "should return '#{value}' for #{key}" do
|
18
|
+
subject.placement = key
|
19
|
+
subject.placement_string.should == value
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context ".trigger_string" do
|
25
|
+
{ 1 => 'click', 2 => 'hover', 3 => 'focus', 4 => 'manual' }.each do |key, value|
|
26
|
+
it "should return '#{value}' for #{key}" do
|
27
|
+
subject.trigger = key
|
28
|
+
subject.trigger_string.should == value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Fooltip
|
4
|
+
describe Popup do
|
5
|
+
it { should have_many(:links) }
|
6
|
+
it { should have_many(:containers).through(:links) }
|
7
|
+
|
8
|
+
it { should validate_presence_of(:identifier) }
|
9
|
+
|
10
|
+
it "should destroy all associated links when destroyed" do
|
11
|
+
p = FactoryGirl.create(:popup, title: 'Test Popup')
|
12
|
+
c = FactoryGirl.create(:container)
|
13
|
+
FactoryGirl.create(:link, container: c, popup: p)
|
14
|
+
-> { p.destroy }.should change(Link, :count).by(-1)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
require 'spork'
|
4
|
+
#uncomment the following line to use spork with the debugger
|
5
|
+
#require 'spork/ext/ruby-debug'
|
6
|
+
|
7
|
+
def load_coverage
|
8
|
+
# SimpleCov & Coveralls
|
9
|
+
unless ENV['DRB']
|
10
|
+
require 'simplecov'
|
11
|
+
require 'coveralls'
|
12
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
13
|
+
SimpleCov::Formatter::HTMLFormatter,
|
14
|
+
Coveralls::SimpleCov::Formatter
|
15
|
+
]
|
16
|
+
SimpleCov.start 'rails'
|
17
|
+
#Coveralls.wear!('rails')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Spork.prefork do
|
22
|
+
# Loading more in this block will cause your tests to run faster. However,
|
23
|
+
# if you change any configuration or code from libraries loaded here, you'll
|
24
|
+
# need to restart spork for it take effect.
|
25
|
+
|
26
|
+
load_coverage
|
27
|
+
|
28
|
+
ENV["RAILS_ENV"] ||= 'test'
|
29
|
+
require File.expand_path("../dummy/config/environment", __FILE__)
|
30
|
+
require 'rspec/rails'
|
31
|
+
require 'rspec/autorun'
|
32
|
+
require 'shoulda/matchers/integrations/rspec'
|
33
|
+
|
34
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
35
|
+
# in spec/support/ and its subdirectories.
|
36
|
+
Dir[Fooltip::Engine.root.join("spec/support/**/*.rb")].each { |f| require f }
|
37
|
+
|
38
|
+
require File.expand_path('../data/schema', __FILE__)
|
39
|
+
require File.expand_path('../data/models', __FILE__)
|
40
|
+
|
41
|
+
RSpec.configure do |config|
|
42
|
+
# ## Mock Framework
|
43
|
+
#
|
44
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
45
|
+
#
|
46
|
+
# config.mock_with :mocha
|
47
|
+
# config.mock_with :flexmock
|
48
|
+
# config.mock_with :rr
|
49
|
+
|
50
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
51
|
+
config.fixture_path = "#{::Fooltip::Engine.root}/spec/fixtures"
|
52
|
+
|
53
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
54
|
+
# examples within a transaction, remove the following line or assign false
|
55
|
+
# instead of true.
|
56
|
+
config.use_transactional_fixtures = true
|
57
|
+
|
58
|
+
# If true, the base class of anonymous controllers will be inferred
|
59
|
+
# automatically. This will be the default behavior in future versions of
|
60
|
+
# rspec-rails.
|
61
|
+
config.infer_base_class_for_anonymous_controllers = false
|
62
|
+
|
63
|
+
# Run specs in random order to surface order dependencies. If you find an
|
64
|
+
# order dependency and want to debug it, you can fix the order by providing
|
65
|
+
# the seed, which is printed after each run.
|
66
|
+
# --seed 1234
|
67
|
+
config.order = "random"
|
68
|
+
end
|
69
|
+
|
70
|
+
FactoryGirl.find_definitions
|
71
|
+
|
72
|
+
CarrierWave.configure do |config|
|
73
|
+
config.storage = :file
|
74
|
+
config.enable_processing = false
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
Spork.each_run do
|
79
|
+
# This code will be run each time you run your specs.
|
80
|
+
|
81
|
+
load_coverage
|
82
|
+
end
|