redmine_extensions 0.3.00 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +16 -40
  3. data/lib/generators/redmine_extensions/entity/entity_generator.rb +77 -24
  4. data/lib/generators/redmine_extensions/entity/templates/_%model_name_underscored%.api.rsb.tt +18 -0
  5. data/lib/generators/redmine_extensions/entity/templates/controller.rb.erb +14 -20
  6. data/lib/generators/redmine_extensions/entity/templates/controller_spec.rb.erb +19 -22
  7. data/lib/generators/redmine_extensions/entity/templates/easy_query.rb.erb +1 -3
  8. data/lib/generators/redmine_extensions/entity/templates/factories.rb.erb +5 -6
  9. data/lib/generators/redmine_extensions/entity/templates/helper.rb.erb +0 -21
  10. data/lib/generators/redmine_extensions/entity/templates/index.api.rsb.erb +2 -4
  11. data/lib/generators/redmine_extensions/entity/templates/migration.rb.erb +4 -3
  12. data/lib/generators/redmine_extensions/entity/templates/model.rb.erb +1 -1
  13. data/lib/generators/redmine_extensions/entity/templates/show.api.rsb.erb +1 -1
  14. data/lib/generators/redmine_extensions/entity/templates/spec/requests/%model_name_underscored%_spec.rb.tt +19 -0
  15. data/lib/redmine_extensions/engine.rb +1 -0
  16. data/lib/redmine_extensions/redmine_patches/models/custom_field_patch.rb +11 -0
  17. data/lib/redmine_extensions/tags/autocomplete_field.rb +1 -1
  18. data/lib/redmine_extensions/version.rb +1 -1
  19. data/spec/factories/easy_settings.rb +5 -4
  20. data/spec/features/autocomplete_spec.rb +1 -3
  21. data/spec/features/jasmine_spec.rb +1 -3
  22. data/spec/init_rails.rb +13 -0
  23. data/spec/models/easy_setting_spec.rb +0 -2
  24. data/spec/presenters/easy_settings/params_wrapper_spec.rb +2 -2
  25. data/spec/spec_helper.rb +2 -69
  26. data/spec/support/plugin_generator.rb +1 -10
  27. metadata +12 -126
  28. data/spec/factories/easy_queries.rb +0 -8
  29. data/spec/factories/issues.rb +0 -96
  30. data/spec/factories/projects.rb +0 -84
  31. data/spec/factories/time_entries.rb +0 -38
  32. data/spec/factories/trackers.rb +0 -15
  33. data/spec/factories/users.rb +0 -23
  34. data/spec/rails_helper.rb +0 -119
@@ -1,8 +0,0 @@
1
- FactoryBot.define do
2
- factory :easy_query do
3
- name 'Test name'
4
- project nil
5
- user nil
6
- end
7
-
8
- end
@@ -1,96 +0,0 @@
1
- FactoryBot.define do
2
-
3
- factory :enumeration do
4
- name 'TestEnum'
5
-
6
- trait :default do
7
- name 'Default'
8
- is_default true
9
- end
10
- end
11
-
12
- # not an enumeration, but same behaviour
13
- factory :issue_status, :class => 'IssueStatus' do
14
- sequence(:name){ |n| "TestStatus-#{n}" }
15
- default_done_ratio 100
16
-
17
- trait :closed do
18
- is_closed true
19
- end
20
- end
21
-
22
- factory :issue_priority, :parent => :enumeration, :class => 'IssuePriority' do
23
- name 'TestPriority'
24
- end
25
-
26
- factory :issue_category do
27
- sequence(:name){ |n| "Issue category ##{n}" }
28
- project
29
- end
30
-
31
- factory :issue do
32
- transient do
33
- factory_is_child false
34
- end
35
-
36
- sequence(:subject) { |n| "Test issue ##{n}" }
37
- estimated_hours 4
38
-
39
- project
40
- tracker { project.trackers.first }
41
- start_date { Date.today }
42
- due_date { Date.today + 7.days }
43
- status { tracker.default_status }
44
- priority { IssuePriority.default || FactoryBot.create(:issue_priority, :default) }
45
- association :author, :factory => :user, :firstname => "Author"
46
- association :assigned_to, :factory => :user, :firstname => "Assignee"
47
-
48
- trait :child_issue do
49
- factory_is_child true
50
- end
51
-
52
- trait :reccuring do
53
- easy_is_repeating true
54
- easy_repeat_settings Hash[ 'period' => 'daily', 'daily_option' => 'each', 'daily_each_x' => '1', 'endtype' => 'endless', 'create_now' => 'none' ]
55
- end
56
-
57
- trait :reccuring_monthly do
58
- easy_is_repeating true
59
- easy_repeat_settings Hash[ 'period' => 'monthly', 'monthly_option' => 'xth', 'monthly_period' => '1', 'monthly_day' => (Date.today + 3.days).mday, 'endtype' => 'endless', 'create_now' => 'none' ]
60
- end
61
-
62
- trait :with_version do
63
- association :fixed_version, factory: :version
64
- end
65
-
66
- trait :with_journals do
67
- after(:create) do |issue|
68
- FactoryBot.create_list(:journal, 2, issue: issue, journalized_type: 'Issue')
69
- end
70
- end
71
-
72
- trait :with_description do
73
- sequence(:description) { |n| "Description ##{n}" }
74
- end
75
-
76
- trait :with_attachment do
77
- after(:create) do |issue|
78
- FactoryBot.create_list(:attachment, 1, container: issue)
79
- end
80
- end
81
-
82
- trait :with_short_url
83
-
84
- after :build do |issue, evaluator|
85
- if evaluator.factory_is_child
86
- issue.parent_issue_id = FactoryBot.create(:issue, :project => issue.project).id
87
- end
88
- end
89
- end
90
-
91
- factory :journal do
92
- sequence(:notes) { |n| "Notes #{n}" }
93
- journalized_type 'Issue'
94
- end
95
-
96
- end
@@ -1,84 +0,0 @@
1
- FactoryBot.define do
2
- factory :project do
3
- transient do
4
- number_of_issues 0
5
- number_of_members 0
6
- number_of_issue_categories 2
7
- number_of_subprojects 0
8
- add_modules []
9
- members []
10
- trackers []
11
- create_trackers false
12
- end
13
- # name 'Test project'
14
- sequence(:name){ |n| "Project ##{n}" }
15
- sequence(:identifier){ |n| "#{name.parameterize}#{n}" }
16
-
17
- after(:create) do |project, evaluator|
18
- trackers = Array.wrap(evaluator.trackers)
19
- trackers = Tracker.all.to_a if trackers.empty?
20
- trackers.concat( [FactoryBot.create(:tracker), FactoryBot.create(:bug_tracker)] ) if evaluator.create_trackers || trackers.empty?
21
- project.trackers = trackers
22
- project.time_entry_activities = [FactoryBot.create(:time_entry_activity)]
23
- end
24
- after :create do |project, evaluator|
25
- FactoryBot.create_list :issue, evaluator.number_of_issues, :project => project
26
- FactoryBot.create_list :member, evaluator.number_of_members, :project => project, :roles => [FactoryBot.create(:role)]
27
- project.enabled_module_names += evaluator.add_modules
28
- end
29
-
30
- after :create do |project, evaluator|
31
- evaluator.members.each do |user|
32
- FactoryBot.create(:member, project: project, user: user)
33
- end
34
- end
35
-
36
- trait :with_milestones do
37
- transient do
38
- number_of_versions 3
39
- milestone_options Hash.new
40
- end
41
- after :create do |project, evaluator|
42
- FactoryBot.create_list :version, evaluator.number_of_versions, evaluator.milestone_options.merge( :project => project )
43
- end
44
- end
45
-
46
- trait :with_subprojects do
47
- after :create do |project, evaluator|
48
- FactoryBot.create_list :project, evaluator.number_of_subprojects, :parent => project
49
- end
50
- end
51
-
52
- trait :with_categories do
53
- after :create do |project, evaluator|
54
- FactoryBot.create_list :issue_category, evaluator.number_of_issue_categories, :project => project
55
- end
56
- end
57
- end
58
-
59
- factory :role do
60
- sequence(:name){ |n| "Role ##{n}" }
61
- permissions { Role.new.setable_permissions.collect(&:name).uniq }
62
- end
63
-
64
- factory :member_role do
65
- role
66
- member
67
- end
68
-
69
- factory :member do
70
- project
71
- user
72
-
73
- after :build do |member, evaluator|
74
- member.member_roles << FactoryBot.build(:member_role, member: member)
75
- end
76
-
77
- trait :without_roles do
78
- after :create do |member, evaluator|
79
- member.member_roles.clear
80
- end
81
- end
82
- end
83
-
84
- end
@@ -1,38 +0,0 @@
1
- FactoryBot.define do
2
-
3
- factory :time_entry_activity, :parent => :enumeration, :class => 'TimeEntryActivity' do
4
- name 'TestActivity'
5
- initialize_with { TimeEntryActivity.find_or_create_by(name: name)}
6
- factory :default_time_entry_activity, :traits => [:default]
7
- end
8
-
9
- factory :time_entry do
10
- hours 1
11
- spent_on { Date.today - 1.month }
12
-
13
- issue
14
- project { issue.project }
15
- user
16
- association :activity, :factory => :default_time_entry_activity
17
-
18
- trait :current do
19
- spent_on { Date.today }
20
- end
21
-
22
- trait :old do
23
- spent_on { Date.today - 7.days }
24
- end
25
-
26
- trait :future do
27
- spent_on { Date.today + 70.days }
28
- end
29
- end
30
-
31
- factory :easy_global_time_entry_setting do
32
- spent_on_limit_before_today 2
33
- spent_on_limit_before_today_edit 5
34
- spent_on_limit_after_today 20
35
- spent_on_limit_after_today_edit 30
36
- end
37
-
38
- end
@@ -1,15 +0,0 @@
1
- FactoryBot.define do
2
-
3
- factory :tracker do
4
- sequence(:name) {|n| "Feature ##{n}"}
5
-
6
- default_status { IssueStatus.first || FactoryBot.create(:issue_status) }
7
-
8
- trait :bug do
9
- sequence(:name) {|n| "Bug ##{n}"}
10
- end
11
-
12
- factory :bug_tracker, :traits => [:bug]
13
- end
14
-
15
- end
@@ -1,23 +0,0 @@
1
- FactoryBot.define do
2
- factory :user do
3
- firstname 'John'
4
- sequence(:lastname) {|n| 'Doe' + n.to_s }
5
- login { "#{firstname}-#{lastname}".downcase }
6
- sequence(:mail) {|n| "user#{n}@test.com" }
7
- admin false
8
- language 'en'
9
- status 1
10
- mail_notification 'only_my_events'
11
-
12
- # easy_user_type_id 1
13
-
14
- trait :admin do
15
- firstname 'Admin'
16
- admin true
17
- end
18
-
19
- factory :admin_user, :traits => [:admin]
20
-
21
- end
22
-
23
- end
@@ -1,119 +0,0 @@
1
- # This file is copied to spec/ when you run 'rails generate rspec:install'
2
- ENV['RAILS_ENV'] ||= 'test'
3
-
4
- require 'spec_helper'
5
- require File.expand_path("../redmine/config/environment.rb", __FILE__)
6
- # Add additional requires below this line. Rails is not loaded until this point!
7
- require 'rspec/rails'
8
- require 'factory_bot_rails'
9
- require 'database_cleaner'
10
-
11
- Rails.backtrace_cleaner.remove_silencers!
12
-
13
- # Requires supporting ruby files with custom matchers and macros, etc, in
14
- # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
15
- # run as spec files by default. This means that files in spec/support that end
16
- # in _spec.rb will both be required and run as specs, causing the specs to be
17
- # run twice. It is recommended that you do not name files matching this glob to
18
- # end with _spec.rb. You can configure this pattern with the --pattern
19
- # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
20
- #
21
- # The following line is provided for convenience purposes. It has the downside
22
- # of increasing the boot-up time by auto-requiring all files in the support
23
- # directory. Alternatively, in the individual `*_spec.rb` files, manually
24
- # require only the support files necessary.
25
- #
26
- # Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
27
-
28
- # Checks for pending migrations before tests are run.
29
- # If you are not using ActiveRecord, you can remove this line.
30
- ActiveRecord::Migration.maintain_test_schema!
31
-
32
- # warning supress for ruby 2.0 and new capybara see https://gist.github.com/ericboehs/7125105
33
- class WarningSuppressor
34
- IGNORES = [
35
- /QFont::setPixelSize: Pixel size <= 0/,
36
- /CoreText performance note:/,
37
- /Heya! This page is using wysihtml5/,
38
- /You must provide a success callback to the Chooser to see the files that the user selects/
39
- ]
40
-
41
- class << self
42
- def write(message)
43
- if suppress?(message) then 0 else puts(message);1;end
44
- end
45
-
46
- private
47
- def suppress?(message)
48
- IGNORES.any? { |re| message =~ re }
49
- end
50
- end
51
- end
52
-
53
- require 'capybara/poltergeist'
54
-
55
- Capybara.register_driver :poltergeist do |app|
56
- Capybara::Poltergeist::Driver.new(app, {
57
- inspector: 'google-chrome-stable',
58
- js_errors: true,
59
- timeout: 1.hour.seconds.to_i,
60
- phantomjs_options: ['--ignore-ssl-errors=yes'],
61
- phantomjs_logger: WarningSuppressor
62
- })
63
- end
64
-
65
- Capybara.register_driver :chrome do |app|
66
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
67
- 'chromeOptions' => {
68
- 'args' => ENV['CHROME_OPTIONS'].to_s.split(' ')
69
- }
70
- )
71
-
72
- Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities)
73
- end
74
-
75
- Capybara.javascript_driver = ENV['JS_DRIVER'].present? ? ENV['JS_DRIVER'].downcase.to_sym : :poltergeist
76
-
77
- RSpec.configure do |config|
78
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
79
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
80
-
81
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
82
- # examples within a transaction, remove the following line or assign false
83
- # instead of true.
84
- config.use_transactional_fixtures = true
85
-
86
- # RSpec Rails can automatically mix in different behaviours to your tests
87
- # based on their file location, for example enabling you to call `get` and
88
- # `post` in specs under `spec/controllers`.
89
- #
90
- # You can disable this behaviour by removing the line below, and instead
91
- # explicitly tag your specs with their type, e.g.:
92
- #
93
- # RSpec.describe UsersController, :type => :controller do
94
- # # ...
95
- # end
96
- #
97
- # The different available types are documented in the features, such as in
98
- # https://relishapp.com/rspec/rspec-rails/docs
99
- config.infer_spec_type_from_file_location!
100
-
101
- config.before(:each) do
102
- DatabaseCleaner.strategy = :transaction
103
- end
104
-
105
- config.before(:each) do
106
- DatabaseCleaner.start
107
- RequestStore.clear! # invalidates cache
108
- end
109
-
110
- config.before(:each, clear_cache: true) do
111
- Rails.cache.clear
112
- end
113
-
114
-
115
-
116
- config.after(:each) do
117
- DatabaseCleaner.clean
118
- end
119
- end