redmine_extensions 0.3.00 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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