FIX: Group names inside the target_group_names attribute are always downcase.

FIX: Group names inside the target_group_names attribute are always downcase.

diff --git a/.rubocop.yml b/.rubocop.yml
index 9a5cd47..e6ec768 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,139 +1,2 @@
-require:
-  - rubocop-discourse
-
-AllCops:
-  TargetRubyVersion: 2.4
-  DisabledByDefault: true
-  Exclude:
-    - "db/schema.rb"
-    - "bundle/**/*"
-    - "vendor/**/*"
-    - "node_modules/**/*"
-    - "public/**/*"
-    - "plugins/**/gems/**/*"
-
-# Prefer &&/|| over and/or.
-Style/AndOr:
-  Enabled: true
-
-Style/FrozenStringLiteralComment:
-  Enabled: true
-
-# Do not use braces for hash literals when they are the last argument of a
-# method call.
-Style/BracesAroundHashParameters:
-  Enabled: true
-
-# Align `when` with `case`.
-Layout/CaseIndentation:
-  Enabled: true
-
-# Align comments with method definitions.
-Layout/CommentIndentation:
-  Enabled: true
-
-# No extra empty lines.
-Layout/EmptyLines:
-  Enabled: true
-
-# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
-Style/HashSyntax:
-  Enabled: true
-
-# Two spaces, no tabs (for indentation).
-Layout/IndentationWidth:
-  Enabled: true
-
-Layout/SpaceAfterColon:
-  Enabled: true
-
-Layout/SpaceAfterComma:
-  Enabled: true
-
-Layout/SpaceAroundEqualsInParameterDefault:
-  Enabled: true
-
-Layout/SpaceAroundKeyword:
-  Enabled: true
-
-Layout/SpaceAroundOperators:
-  Enabled: true
-
-Layout/SpaceBeforeFirstArg:
-  Enabled: true
-
-# Defining a method with parameters needs parentheses.
-Style/MethodDefParentheses:
-  Enabled: true
-
-# Use `foo {}` not `foo{}`.
-Layout/SpaceBeforeBlockBraces:
-  Enabled: true
-
-# Use `foo { bar }` not `foo {bar}`.
-Layout/SpaceInsideBlockBraces:
-  Enabled: true
-
-# Use `{ a: 1 }` not `{a:1}`.
-Layout/SpaceInsideHashLiteralBraces:
-  Enabled: true
-
-Layout/SpaceInsideParens:
-  Enabled: true
-
-# Detect hard tabs, no hard tabs.
-Layout/Tab:
-  Enabled: true
-
-# Blank lines should not have any spaces.
-Layout/TrailingBlankLines:
-  Enabled: true
-
-# No trailing whitespace.
-Layout/TrailingWhitespace:
-  Enabled: true
-
-Lint/Debugger:
-  Enabled: true
-
-Layout/BlockAlignment:
-  Enabled: true
-
-# Align `end` with the matching keyword or starting expression except for
-# assignments, where it should be aligned with the LHS.
-Layout/EndAlignment:
-  Enabled: true
-  EnforcedStyleAlignWith: variable
-
-# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
-Lint/RequireParentheses:
-  Enabled: true
-
-Lint/ShadowingOuterLocalVariable:
-  Enabled: true
-
-Layout/MultilineMethodCallIndentation:
-  Enabled: true
-  EnforcedStyle: indented
-
-Layout/AlignHash:
-  Enabled: true
-
-Bundler/OrderedGems:
-  Enabled: false
-
-Style/SingleLineMethods:
-  Enabled: true
-
-Style/Semicolon:
-  Enabled: true
-  AllowAsExpressionSeparator: true
-
-Style/RedundantReturn:
-  Enabled: true
-
-DiscourseCops/NoChdir:	
-  Enabled: true	
-  Exclude:	
-    - 'spec/**/*' # Specs are run sequentially, so chdir can be used	
-    - 'plugins/*/spec/**/*'
+inherit_gem:
+  rubocop-discourse: default.yml
\ No newline at end of file
diff --git a/plugin.rb b/plugin.rb
index ec1045f..9e19c92 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -41,7 +41,8 @@ after_initialize do
 
     # Expand any groups
     group_names = (@manager_params.delete(:target_group_names) || '').split(',')
-    Group.where(name: group_names).includes(group_users: :user).each do |g|
+
+    Group.where('lower(name) in (?)', group_names).includes(group_users: :user).each do |g|
       g.group_users.each do |gu|
         usernames << gu.user.username unless gu.user_id == current_user.id
       end
diff --git a/spec/requests/post_controller_spec.rb b/spec/requests/post_controller_spec.rb
index 829b95d..c404ad9 100644
--- a/spec/requests/post_controller_spec.rb
+++ b/spec/requests/post_controller_spec.rb
@@ -7,7 +7,7 @@ describe PostsController do
     {
       raw: 'hello',
       title: 'cool title',
-      target_usernames: 'evil,trout',
+      target_recipients: 'evil,trout',
       archetype: Archetype.private_message
     }
   end
@@ -43,7 +43,7 @@ describe PostsController do
     end
 
     it "returns an error if there aren't two usernames at least" do
-      post '/posts/bcc.json', params: create_params.merge(target_usernames: 'test')
+      post '/posts/bcc.json', params: create_params.merge(target_recipients: 'test')
       expect(Jobs::BccPost.jobs.length).to eq(0)
       expect(response.code).to eq('422')
       json = JSON.parse(response.body)
@@ -67,24 +67,41 @@ describe PostsController do
       expect(json['message']).to be_present
     end
 
-    it 'expands groups to users' do
-      group = Fabricate(:group, messageable_level: Group::ALIAS_LEVELS[:everyone])
-      user0 = Fabricate(:user)
-      user1 = Fabricate(:user)
-      user2 = Fabricate(:user)
+    describe 'xxxxx' do
+      before do
+        @group = Fabricate(:group, messageable_level: Group::ALIAS_LEVELS[:everyone])
+        @user0 = Fabricate(:user)
+        @user1 = Fabricate(:user)
+        @user2 = Fabricate(:user)
 
-      GroupUser.create(group: group, user: moderator)
-      GroupUser.create(group: group, user: user0)
-      GroupUser.create(group: group, user: user1)
+        GroupUser.create(group: @group, user: moderator)
+        GroupUser.create(group: @group, user: @user0)
+        GroupUser.create(group: @group, user: @user1)
+      end
 
-      post '/posts/bcc.json', params: create_params.merge(
-        target_usernames: "#{group.name},#{user2.username}"
-      )
-      expect(response.code).to eq('200')
-      job = Jobs::BccPost.jobs[0]
-      expect(job).to be_present
-      usernames = job['args'].first['create_params']['target_usernames'].split(',')
-      expect(usernames).to match_array([user0.username, user1.username, user2.username])
+      it 'expands groups to users' do
+        post '/posts/bcc.json', params: create_params.merge(
+          target_recipients: "#{@group.name},#{@user2.username}"
+        )
+        expect(response.code).to eq('200')
+        job = Jobs::BccPost.jobs[0]
+        expect(job).to be_present
+        usernames = job['args'].first['create_params']['target_usernames'].split(',')
+        expect(usernames).to match_array([@user0.username, @user1.username, @user2.username])
+      end
+
+      it 'expects group names to be downcase' do
+        post '/posts/bcc.json', params: create_params.merge(
+          target_recipients: @group.name.upcase
+        )
+
+        expect(response.code).to eq('200')
+        job = Jobs::BccPost.jobs[0]
+        expect(job).to be_present
+        usernames = job['args'].first['create_params']['target_usernames'].split(',')
+        expect(usernames).to match_array([@user0.username, @user1.username])
+      end
     end
+
   end
 end

GitHub sha: 825d64ce