expense_gun 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +34 -0
  3. data/app/assets/javascripts/expense_gun/application.js +4 -0
  4. data/app/assets/stylesheets/expense_gun/application.sass +4 -0
  5. data/app/assets/stylesheets/expense_gun/expenses.sass +20 -0
  6. data/app/assets/stylesheets/expense_gun/layout.sass +2 -0
  7. data/app/controllers/expense_gun/application_controller.rb +7 -0
  8. data/app/controllers/expense_gun/expense_lines_controller.rb +64 -0
  9. data/app/controllers/expense_gun/expenses_controller.rb +107 -0
  10. data/app/helpers/expense_gun/application_helper.rb +4 -0
  11. data/app/helpers/expense_gun/form_helper.rb +11 -0
  12. data/app/models/expense_gun/ability.rb +30 -0
  13. data/app/models/expense_gun/category.rb +5 -0
  14. data/app/models/expense_gun/expense.rb +62 -0
  15. data/app/models/expense_gun/expense_line.rb +26 -0
  16. data/app/views/expense_gun/expense_lines/_form.html.slim +16 -0
  17. data/app/views/expense_gun/expense_lines/edit.html.slim +4 -0
  18. data/app/views/expense_gun/expense_lines/new.html.slim +4 -0
  19. data/app/views/expense_gun/expenses/_form.html.slim +5 -0
  20. data/app/views/expense_gun/expenses/edit.html.slim +4 -0
  21. data/app/views/expense_gun/expenses/index.html.slim +63 -0
  22. data/app/views/expense_gun/expenses/new.html.slim +4 -0
  23. data/app/views/expense_gun/expenses/show.html.slim +84 -0
  24. data/app/views/kaminari/bootstrap3/_gap.html.slim +2 -0
  25. data/app/views/kaminari/bootstrap3/_page.html.slim +6 -0
  26. data/app/views/kaminari/bootstrap3/_paginator.html.slim +8 -0
  27. data/config/cucumber.yml +8 -0
  28. data/config/initializers/formtastic.rb +78 -0
  29. data/config/routes.rb +13 -0
  30. data/db/migrate/20141201092102_create_expense_gun_expenses.rb +8 -0
  31. data/db/migrate/20141201100548_expenses_add_state.rb +5 -0
  32. data/db/migrate/20141201111528_create_expense_gun_expense_lines.rb +13 -0
  33. data/db/migrate/20141201115918_create_expense_gun_categories.rb +9 -0
  34. data/db/migrate/20141201145608_expense_lines_add_category_id.rb +5 -0
  35. data/db/migrate/20141202143656_categories_rename_tax.rb +5 -0
  36. data/db/migrate/20141202151845_expenses_add_date.rb +5 -0
  37. data/db/migrate/20141203153649_field_names_like_billing_machine.rb +7 -0
  38. data/lib/expense_gun/admin/category.rb +12 -0
  39. data/lib/expense_gun/engine.rb +9 -0
  40. data/lib/expense_gun/version.rb +3 -0
  41. data/lib/expense_gun.rb +8 -0
  42. data/lib/tasks/cucumber.rake +65 -0
  43. data/lib/tasks/expense_gun_tasks.rake +4 -0
  44. data/spec/dummy/README.rdoc +28 -0
  45. data/spec/dummy/Rakefile +6 -0
  46. data/spec/dummy/app/admin/dashboard.rb +33 -0
  47. data/spec/dummy/app/assets/javascripts/active_admin.js.coffee +1 -0
  48. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  49. data/spec/dummy/app/assets/stylesheets/active_admin.css.scss +17 -0
  50. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  51. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  52. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  53. data/spec/dummy/app/views/layouts/expense_gun/application.html.slim +20 -0
  54. data/spec/dummy/bin/bundle +3 -0
  55. data/spec/dummy/bin/rails +4 -0
  56. data/spec/dummy/bin/rake +4 -0
  57. data/spec/dummy/config/application.rb +23 -0
  58. data/spec/dummy/config/boot.rb +5 -0
  59. data/spec/dummy/config/database.yml +25 -0
  60. data/spec/dummy/config/environment.rb +5 -0
  61. data/spec/dummy/config/environments/development.rb +37 -0
  62. data/spec/dummy/config/environments/production.rb +78 -0
  63. data/spec/dummy/config/environments/test.rb +39 -0
  64. data/spec/dummy/config/initializers/active_admin.rb +233 -0
  65. data/spec/dummy/config/initializers/assets.rb +8 -0
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  67. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  68. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  69. data/spec/dummy/config/initializers/inflections.rb +16 -0
  70. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  71. data/spec/dummy/config/initializers/session_store.rb +3 -0
  72. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  73. data/spec/dummy/config/locales/en.yml +23 -0
  74. data/spec/dummy/config/routes.rb +4 -0
  75. data/spec/dummy/config/secrets.yml +22 -0
  76. data/spec/dummy/config.ru +4 -0
  77. data/spec/dummy/db/schema.rb +42 -0
  78. data/spec/dummy/public/404.html +67 -0
  79. data/spec/dummy/public/422.html +67 -0
  80. data/spec/dummy/public/500.html +66 -0
  81. data/spec/dummy/public/favicon.ico +0 -0
  82. data/spec/factories/expense_gun_category.rb +7 -0
  83. data/spec/factories/expense_gun_expense.rb +11 -0
  84. data/spec/factories/expense_gun_expense_line.rb +10 -0
  85. data/spec/factories.rb +5 -0
  86. data/spec/models/category_spec.rb +12 -0
  87. data/spec/models/expense_line_spec.rb +81 -0
  88. data/spec/models/expense_spec.rb +171 -0
  89. data/spec/rails_helper.rb +52 -0
  90. data/spec/spec_helper.rb +85 -0
  91. metadata +319 -0
@@ -0,0 +1,39 @@
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = true
9
+
10
+ # Do not eager load code on boot. This avoids loading your whole application
11
+ # just for the purpose of running a single test. If you are using a tool that
12
+ # preloads Rails for running tests, you may have to set it to true.
13
+ config.eager_load = false
14
+
15
+ # Configure static asset server for tests with Cache-Control for performance.
16
+ config.serve_static_assets = true
17
+ config.static_cache_control = 'public, max-age=3600'
18
+
19
+ # Show full error reports and disable caching.
20
+ config.consider_all_requests_local = true
21
+ config.action_controller.perform_caching = false
22
+
23
+ # Raise exceptions instead of rendering exception templates.
24
+ config.action_dispatch.show_exceptions = false
25
+
26
+ # Disable request forgery protection in test environment.
27
+ config.action_controller.allow_forgery_protection = false
28
+
29
+ # Tell Action Mailer not to deliver emails to the real world.
30
+ # The :test delivery method accumulates sent emails in the
31
+ # ActionMailer::Base.deliveries array.
32
+ config.action_mailer.delivery_method = :test
33
+
34
+ # Print deprecation notices to the stderr.
35
+ config.active_support.deprecation = :stderr
36
+
37
+ # Raises error for missing translations
38
+ # config.action_view.raise_on_missing_translations = true
39
+ end
@@ -0,0 +1,233 @@
1
+ ActiveAdmin.setup do |config|
2
+ # == Site Title
3
+ #
4
+ # Set the title that is displayed on the main layout
5
+ # for each of the active admin pages.
6
+ #
7
+ config.site_title = "ExpenseGun"
8
+
9
+ # Set the link url for the title. For example, to take
10
+ # users to your main site. Defaults to no link.
11
+ #
12
+ # config.site_title_link = "/"
13
+
14
+ # Set an optional image to be displayed for the header
15
+ # instead of a string (overrides :site_title)
16
+ #
17
+ # Note: Aim for an image that's 21px high so it fits in the header.
18
+ #
19
+ # config.site_title_image = "logo.png"
20
+
21
+ # == Default Namespace
22
+ #
23
+ # Set the default namespace each administration resource
24
+ # will be added to.
25
+ #
26
+ # eg:
27
+ # config.default_namespace = :hello_world
28
+ #
29
+ # This will create resources in the HelloWorld module and
30
+ # will namespace routes to /hello_world/*
31
+ #
32
+ # To set no namespace by default, use:
33
+ # config.default_namespace = false
34
+ #
35
+ # Default:
36
+ # config.default_namespace = :admin
37
+ #
38
+ # You can customize the settings for each namespace by using
39
+ # a namespace block. For example, to change the site title
40
+ # within a namespace:
41
+ #
42
+ # config.namespace :admin do |admin|
43
+ # admin.site_title = "Custom Admin Title"
44
+ # end
45
+ #
46
+ # This will ONLY change the title for the admin section. Other
47
+ # namespaces will continue to use the main "site_title" configuration.
48
+
49
+ # == User Authentication
50
+ #
51
+ # Active Admin will automatically call an authentication
52
+ # method in a before filter of all controller actions to
53
+ # ensure that there is a currently logged in admin user.
54
+ #
55
+ # This setting changes the method which Active Admin calls
56
+ # within the application controller.
57
+ # config.authentication_method = :authenticate_admin_user!
58
+
59
+ # == User Authorization
60
+ #
61
+ # Active Admin will automatically call an authorization
62
+ # method in a before filter of all controller actions to
63
+ # ensure that there is a user with proper rights. You can use
64
+ # CanCanAdapter or make your own. Please refer to documentation.
65
+ # config.authorization_adapter = ActiveAdmin::CanCanAdapter
66
+
67
+ # In case you prefer Pundit over other solutions you can here pass
68
+ # the name of default policy class. This policy will be used in every
69
+ # case when Pundit is unable to find suitable policy.
70
+ # config.pundit_default_policy = "MyDefaultPunditPolicy"
71
+
72
+ # You can customize your CanCan Ability class name here.
73
+ # config.cancan_ability_class = "Ability"
74
+
75
+ # You can specify a method to be called on unauthorized access.
76
+ # This is necessary in order to prevent a redirect loop which happens
77
+ # because, by default, user gets redirected to Dashboard. If user
78
+ # doesn't have access to Dashboard, he'll end up in a redirect loop.
79
+ # Method provided here should be defined in application_controller.rb.
80
+ # config.on_unauthorized_access = :access_denied
81
+
82
+ # == Current User
83
+ #
84
+ # Active Admin will associate actions with the current
85
+ # user performing them.
86
+ #
87
+ # This setting changes the method which Active Admin calls
88
+ # (within the application controller) to return the currently logged in user.
89
+ config.current_user_method = nil
90
+
91
+ # == Logging Out
92
+ #
93
+ # Active Admin displays a logout link on each screen. These
94
+ # settings configure the location and method used for the link.
95
+ #
96
+ # This setting changes the path where the link points to. If it's
97
+ # a string, the strings is used as the path. If it's a Symbol, we
98
+ # will call the method to return the path.
99
+ #
100
+ # Default:
101
+ config.logout_link_path = nil
102
+
103
+ # This setting changes the http method used when rendering the
104
+ # link. For example :get, :delete, :put, etc..
105
+ #
106
+ # Default:
107
+ # config.logout_link_method = :get
108
+
109
+ # == Root
110
+ #
111
+ # Set the action to call for the root path. You can set different
112
+ # roots for each namespace.
113
+ #
114
+ # Default:
115
+ # config.root_to = 'dashboard#index'
116
+
117
+ # == Admin Comments
118
+ #
119
+ # This allows your users to comment on any resource registered with Active Admin.
120
+ #
121
+ # You can completely disable comments:
122
+ config.allow_comments = false
123
+ #
124
+ # You can disable the menu item for the comments index page:
125
+ # config.show_comments_in_menu = false
126
+ #
127
+ # You can change the name under which comments are registered:
128
+ # config.comments_registration_name = 'AdminComment'
129
+
130
+ # == Batch Actions
131
+ #
132
+ # Enable and disable Batch Actions
133
+ #
134
+ config.batch_actions = true
135
+
136
+ # == Controller Filters
137
+ #
138
+ # You can add before, after and around filters to all of your
139
+ # Active Admin resources and pages from here.
140
+ #
141
+ # config.before_filter :do_something_awesome
142
+
143
+ # == Setting a Favicon
144
+ #
145
+ # config.favicon = '/assets/favicon.ico'
146
+
147
+ # == Removing Breadcrumbs
148
+ #
149
+ # Breadcrumbs are enabled by default. You can customize them for individual
150
+ # resources or you can disable them globally from here.
151
+ #
152
+ # config.breadcrumb = false
153
+
154
+ # == Register Stylesheets & Javascripts
155
+ #
156
+ # We recommend using the built in Active Admin layout and loading
157
+ # up your own stylesheets / javascripts to customize the look
158
+ # and feel.
159
+ #
160
+ # To load a stylesheet:
161
+ # config.register_stylesheet 'my_stylesheet.css'
162
+ #
163
+ # You can provide an options hash for more control, which is passed along to stylesheet_link_tag():
164
+ # config.register_stylesheet 'my_print_stylesheet.css', media: :print
165
+ #
166
+ # To load a javascript file:
167
+ # config.register_javascript 'my_javascript.js'
168
+
169
+ # == CSV options
170
+ #
171
+ # Set the CSV builder separator
172
+ # config.csv_options = { col_sep: ';' }
173
+ #
174
+ # Force the use of quotes
175
+ # config.csv_options = { force_quotes: true }
176
+
177
+ # == Menu System
178
+ #
179
+ # You can add a navigation menu to be used in your application, or configure a provided menu
180
+ #
181
+ # To change the default utility navigation to show a link to your website & a logout btn
182
+ #
183
+ # config.namespace :admin do |admin|
184
+ # admin.build_menu :utility_navigation do |menu|
185
+ # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
186
+ # admin.add_logout_button_to_menu menu
187
+ # end
188
+ # end
189
+ #
190
+ # If you wanted to add a static menu item to the default menu provided:
191
+ #
192
+ # config.namespace :admin do |admin|
193
+ # admin.build_menu :default do |menu|
194
+ # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank }
195
+ # end
196
+ # end
197
+
198
+ # == Download Links
199
+ #
200
+ # You can disable download links on resource listing pages,
201
+ # or customize the formats shown per namespace/globally
202
+ #
203
+ # To disable/customize for the :admin namespace:
204
+ #
205
+ # config.namespace :admin do |admin|
206
+ #
207
+ # # Disable the links entirely
208
+ # admin.download_links = false
209
+ #
210
+ # # Only show XML & PDF options
211
+ # admin.download_links = [:xml, :pdf]
212
+ #
213
+ # # Enable/disable the links based on block
214
+ # # (for example, with cancan)
215
+ # admin.download_links = proc { can?(:view_download_links) }
216
+ #
217
+ # end
218
+
219
+ # == Pagination
220
+ #
221
+ # Pagination is enabled by default for all resources.
222
+ # You can control the default per page count for all resources here.
223
+ #
224
+ # config.default_per_page = 30
225
+
226
+ # == Filters
227
+ #
228
+ # By default the index screen includes a "Filters" sidebar on the right
229
+ # hand side with a filter for each attribute of the registered model.
230
+ # You can enable or disable them for all resources here.
231
+ #
232
+ # config.filters = true
233
+ end
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Version of your assets, change this if you want to expire all your assets.
4
+ Rails.application.config.assets.version = '1.0'
5
+
6
+ # Precompile additional assets.
7
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8
+ # Rails.application.config.assets.precompile += %w( search.js )
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.action_dispatch.cookies_serializer = :json
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Configure sensitive parameters which will be filtered from the log file.
4
+ Rails.application.config.filter_parameters += [:password]
@@ -0,0 +1,16 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ # inflect.plural /^(ox)$/i, '\1en'
8
+ # inflect.singular /^(ox)en/i, '\1'
9
+ # inflect.irregular 'person', 'people'
10
+ # inflect.uncountable %w( fish sheep )
11
+ # end
12
+
13
+ # These inflection rules are supported but not enabled by default:
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
+ # inflect.acronym 'RESTful'
16
+ # end
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.session_store :cookie_store, key: '_dummy_session'
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
+ end
10
+
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -0,0 +1,23 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
@@ -0,0 +1,4 @@
1
+ Rails.application.routes.draw do
2
+ ActiveAdmin.routes(self)
3
+ mount ExpenseGun::Engine => "/expense_gun"
4
+ end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 35182dd9411ac52ec228f54d1ba62531d5bed5ab91faf7b9bced8eb0d29fabc3673379ccea3e9819b267bcb6a03b63a36d2aa45eedcf830ceeab702d5701a0fb
15
+
16
+ test:
17
+ secret_key_base: 2f6e0d81f2ff46acddc94885c900a5eff1e4349f65e27f19a9d9b4c2b7eb0d162256f3b6018cb735bf87b769518934a66b7c5c57455b741a8c399b8d57b97731
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Rails.application
@@ -0,0 +1,42 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20141203153649) do
15
+
16
+ create_table "expense_gun_categories", force: true do |t|
17
+ t.string "name"
18
+ t.string "code"
19
+ t.boolean "vat_deductible"
20
+ end
21
+
22
+ create_table "expense_gun_expense_lines", force: true do |t|
23
+ t.integer "expense_id"
24
+ t.string "name"
25
+ t.date "date"
26
+ t.float "total_all_taxes"
27
+ t.float "vat"
28
+ t.float "company_part"
29
+ t.datetime "created_at"
30
+ t.datetime "updated_at"
31
+ t.integer "category_id"
32
+ end
33
+
34
+ create_table "expense_gun_expenses", force: true do |t|
35
+ t.string "name"
36
+ t.datetime "created_at"
37
+ t.datetime "updated_at"
38
+ t.string "state"
39
+ t.date "date"
40
+ end
41
+
42
+ end
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :category, class: ExpenseGun::Category do
3
+ name { Faker::Lorem.word }
4
+ code { Faker::Number.number(4) }
5
+ vat_deductible { [true, false].sample }
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :expense, class: ExpenseGun::Expense do
3
+ name { Faker::Lorem.sentence(3) }
4
+ date { Date.today }
5
+ after(:create) { |expense|
6
+ rand(2..5).times {
7
+ FactoryGirl.create(:expense_line, expense: expense)
8
+ }
9
+ }
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ FactoryGirl.define do
2
+ factory :expense_line, class: ExpenseGun::ExpenseLine do
3
+ name { Faker::Lorem.sentence(3) }
4
+ category { FactoryGirl.create(:category) }
5
+ date { Faker::Date.backward(30) }
6
+ total_all_taxes { rand(100..1000) }
7
+ vat { rand(1..(total_all_taxes/5)) }
8
+ company_part { [25, 50, 75, 100].sample }
9
+ end
10
+ end