discourse_dev 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5c5177bfe2a32ca3a930d40bff6c2f8dc3e4c285bac64b992af0a40c2fb3912
4
- data.tar.gz: 3e40a97ae5b672e4caae3817f21d65b3512dd7ac51e4a89d4b41d6f4b45e29ac
3
+ metadata.gz: 2b40ff76d084fee2f0eeef50807149a399e6c4bbdf256259dd23a6925d6bdeb7
4
+ data.tar.gz: 748af95af548a6d79ee21d96dd68688d5c554cb78391a416b63980805d4b25a3
5
5
  SHA512:
6
- metadata.gz: 9c10a69af24d3282361fc32e2ac8dedd57ac5fdeac49fad8e57b1cf02a80f964d93d45edd535765d00ff7fbe3520ee45a1247c7e9ae5f896a266b0f5190aee5a
7
- data.tar.gz: 14ee9176bcb5784de1ca0985cc5df3dfc00e50ffbe6195708827cedcea92134bed9984752447a00c2aa8dfaaaa50038269f21f764f604019fff2c0471683f1bf
6
+ metadata.gz: '0914512344fa239f36c6ae42c4890ef4cad9fd991a234c5f8b301751a84a89633d20f035e64e526935031767842b27e6a36758e8ea982a3672e83e22c2826b4b'
7
+ data.tar.gz: d9cfa147a8616124232baef18d01203cd09b6c88a5d5c4c7b9a7527e4ef56d4f79c07c0d2ea13809907ba81b3cc38c4b669307d2a6ebef57b4d21364b96ba1b4
@@ -9,23 +9,16 @@ module DiscourseDev
9
9
 
10
10
  def initialize(count = DEFAULT_COUNT)
11
11
  super(::Category, count)
12
- @existing_names = ::Category.pluck(:name)
13
12
  @parent_category_ids = ::Category.where(parent_category_id: nil).pluck(:id)
14
- @group_count = ::Group.count
15
13
  end
16
14
 
17
15
  def data
18
- name = Faker::Discourse.category
16
+ name = Faker::Discourse.unique.category
19
17
  parent_category_id = nil
20
18
 
21
- while @existing_names.include? name
22
- name = Faker::Discourse.category
23
- end
24
-
25
- @existing_names << name
26
-
27
19
  if Faker::Boolean.boolean(true_ratio: 0.6)
28
- parent_category_id = @parent_category_ids.sample
20
+ offset = Faker::Number.between(from: 0, to: @parent_category_ids.count - 1)
21
+ parent_category_id = @parent_category_ids[offset]
29
22
  @permissions = ::Category.find(parent_category_id).permissions_params.presence
30
23
  else
31
24
  @permissions = nil
@@ -45,8 +38,7 @@ module DiscourseDev
45
38
  return { everyone: :full } if Faker::Boolean.boolean(true_ratio: 0.75)
46
39
 
47
40
  permission = {}
48
- offset = rand(@group_count)
49
- group = ::Group.offset(offset).first
41
+ group = Group.random
50
42
  permission[group.id] = Faker::Number.between(from: 1, to: 3)
51
43
 
52
44
  permission
@@ -60,5 +52,9 @@ module DiscourseDev
60
52
  @parent_category_ids << category.id if category.parent_category_id.blank?
61
53
  end
62
54
  end
55
+
56
+ def self.random
57
+ super(::Category)
58
+ end
63
59
  end
64
60
  end
@@ -19,6 +19,8 @@ module DiscourseDev
19
19
 
20
20
  def update!
21
21
  update_site_settings
22
+ create_admin_user
23
+ set_seed
22
24
  end
23
25
 
24
26
  def update_site_settings
@@ -42,5 +44,34 @@ module DiscourseDev
42
44
 
43
45
  SiteSetting.refresh!
44
46
  end
47
+
48
+ def create_admin_user
49
+ puts "Creating default admin user account..."
50
+
51
+ settings = config["admin"]
52
+
53
+ if settings.present?
54
+ email = settings["email"]
55
+
56
+ admin = ::User.create!(
57
+ email: email,
58
+ username: settings["username"] || UserNameSuggester.suggest(email),
59
+ password: settings["password"]
60
+ )
61
+ admin.grant_admin!
62
+ if admin.trust_level < 1
63
+ admin.change_trust_level!(1)
64
+ end
65
+ admin.email_tokens.update_all confirmed: true
66
+ admin.activate
67
+ else
68
+ Rake::Task['admin:create'].invoke
69
+ end
70
+ end
71
+
72
+ def set_seed
73
+ seed = config["seed"] || default_config["seed"] || 1
74
+ Faker::Config.random = Random.new(seed)
75
+ end
45
76
  end
46
77
  end
@@ -1,3 +1,4 @@
1
1
  site_settings:
2
- tagging_enabled: false
2
+ tagging_enabled: true
3
3
  verbose_discourse_connect_logging: true
4
+ seed: 1
@@ -11,20 +11,11 @@ module DiscourseDev
11
11
 
12
12
  def initialize(count = DEFAULT_COUNT)
13
13
  super(::Group, count)
14
- @existing_names = ::Group.where(automatic: false).pluck(:name)
15
14
  end
16
15
 
17
16
  def data
18
- name = Faker::Discourse.group
19
-
20
- while @existing_names.include? name
21
- name = Faker::Company.profession.gsub(" ", "-")
22
- end
23
-
24
- @existing_names << name
25
-
26
17
  {
27
- name: name,
18
+ name: Faker::Discourse.unique.group,
28
19
  public_exit: Faker::Boolean.boolean,
29
20
  public_admission: Faker::Boolean.boolean,
30
21
  primary_group: Faker::Boolean.boolean
@@ -40,5 +31,9 @@ module DiscourseDev
40
31
  end
41
32
  end
42
33
  end
34
+
35
+ def self.random
36
+ super(::Group)
37
+ end
43
38
  end
44
39
  end
@@ -8,28 +8,44 @@ module DiscourseDev
8
8
  class Record
9
9
  DEFAULT_COUNT = 30.freeze
10
10
 
11
- attr_reader :model, :type, :count
11
+ attr_reader :model, :type
12
12
 
13
13
  def initialize(model, count = DEFAULT_COUNT)
14
+ Faker::Discourse.unique.clear
14
15
  @model = model
15
16
  @type = model.to_s
16
17
  @count = count
18
+ @index = nil
17
19
  end
18
20
 
19
21
  def create!
20
22
  record = model.create!(data)
21
- yield(record)
22
- putc "."
23
+ yield(record) if block_given?
23
24
  end
24
25
 
25
26
  def populate!
26
- puts "Creating #{count} sample #{type.downcase} records"
27
- count.times { create! }
27
+ puts "Creating #{@count} sample #{type.downcase} records"
28
+
29
+ @count.times do |i|
30
+ @index = i
31
+ create!
32
+ putc "."
33
+ end
34
+
28
35
  puts
29
36
  end
30
37
 
38
+ def index
39
+ @index
40
+ end
41
+
31
42
  def self.populate!
32
43
  self.new.populate!
33
44
  end
45
+
46
+ def self.random(model)
47
+ offset = Faker::Number.between(from: 0, to: model.count - 1)
48
+ model.offset(offset).first
49
+ end
34
50
  end
35
51
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'discourse_dev/record'
4
+ require 'rails'
5
+ require 'faker'
6
+
7
+ module DiscourseDev
8
+ class Tag < Record
9
+
10
+ def initialize(count = DEFAULT_COUNT)
11
+ super(::Tag, count)
12
+ end
13
+
14
+ def data
15
+ {
16
+ name: Faker::Discourse.unique.tag,
17
+ }
18
+ end
19
+ end
20
+ end
@@ -12,7 +12,6 @@ task 'dev:reset' => ['db:load_config'] do |_, args|
12
12
 
13
13
  Rake::Task['db:migrate:reset'].invoke
14
14
  Rake::Task['dev:config'].invoke
15
- Rake::Task['admin:create'].invoke
16
15
  Rake::Task['dev:populate'].invoke
17
16
  end
18
17
 
@@ -26,5 +25,6 @@ task 'dev:populate' => ['db:load_config'] do |_, args|
26
25
  Rake::Task['groups:populate'].invoke
27
26
  Rake::Task['users:populate'].invoke
28
27
  Rake::Task['categories:populate'].invoke
28
+ Rake::Task['tags:populate'].invoke
29
29
  Rake::Task['topics:populate'].invoke
30
30
  end
@@ -15,6 +15,11 @@ task 'categories:populate' => ['db:load_config'] do |_, args|
15
15
  DiscourseDev::Category.populate!
16
16
  end
17
17
 
18
+ desc 'Creates sample tags'
19
+ task 'tags:populate' => ['db:load_config'] do |_, args|
20
+ DiscourseDev::Tag.populate!
21
+ end
22
+
18
23
  desc 'Creates sample topics'
19
24
  task 'topics:populate' => ['db:load_config'] do |_, args|
20
25
  DiscourseDev::Topic.populate!
@@ -8,38 +8,50 @@ module DiscourseDev
8
8
 
9
9
  def initialize(count = DEFAULT_COUNT)
10
10
  super(::Topic, count)
11
- @category_ids = ::Category.pluck(:id)
12
- @user_count = ::User.count
13
11
  end
14
12
 
15
13
  def data
16
14
  {
17
- title: Faker::Lorem.sentence(word_count: 3, supplemental: true, random_words_to_add: 4).chomp(".")[0, SiteSetting.max_topic_title_length],
15
+ title: title[0, SiteSetting.max_topic_title_length],
18
16
  raw: Faker::Markdown.sandwich(sentences: 5),
19
- category: @category_ids.sample,
17
+ category: @category.id,
20
18
  tags: tags,
21
19
  topic_opts: { custom_fields: { dev_sample: true } },
22
20
  skip_validations: true
23
21
  }
24
22
  end
25
23
 
24
+ def title
25
+ if index <= I18n.t("faker.discourse.topics").count
26
+ Faker::Discourse.unique.topic
27
+ else
28
+ Faker::Lorem.unique.sentence(word_count: 3, supplemental: true, random_words_to_add: 4).chomp(".")
29
+ end
30
+ end
31
+
26
32
  def tags
27
33
  @tags = []
28
- keys = ["model", "make", "manufacture"]
29
34
 
30
- Faker::Number.between(from: 0, to: 3).times do |index|
31
- @tags << Faker::Vehicle.send(keys[index])
35
+ Faker::Number.between(from: 0, to: 3).times do
36
+ @tags << Faker::Discourse.tag
32
37
  end
33
38
 
34
- @tags
39
+ @tags.uniq
35
40
  end
36
41
 
37
42
  def create!
38
- offset = rand(@user_count)
39
- user = ::User.offset(offset).first
40
-
43
+ @category = Category.random
41
44
  PostCreator.new(user, data).create!
42
- putc "."
45
+ end
46
+
47
+ def user
48
+ return User.random if @category.groups.blank?
49
+
50
+ group_ids = @category.groups.pluck(:id)
51
+ user_ids = ::GroupUser.where(group_id: group_ids).pluck(:user_id)
52
+ user_count = user_ids.count
53
+ position = Faker::Number.between(from: 0, to: user_count - 1)
54
+ ::User.find(user_ids[position] || Discourse::SYSTEM_USER_ID)
43
55
  end
44
56
  end
45
57
  end
@@ -9,14 +9,12 @@ module DiscourseDev
9
9
 
10
10
  def initialize(count = DEFAULT_COUNT)
11
11
  super(::User, count)
12
- @groups = ::Group.where(automatic: false)
13
- @group_count = @groups.count
14
12
  end
15
13
 
16
14
  def data
17
- name = Faker::Name.name
18
- email = Faker::Internet.email(name: name)
19
- username = Faker::Internet.username(specifier: name)[0, SiteSetting.max_username_length]
15
+ name = Faker::Name.unique.name
16
+ email = Faker::Internet.unique.email(name: name)
17
+ username = Faker::Internet.unique.username(specifier: name)[0, SiteSetting.max_username_length]
20
18
  username_lower = username.downcase
21
19
 
22
20
  {
@@ -31,13 +29,17 @@ module DiscourseDev
31
29
 
32
30
  def create!
33
31
  super do |user|
32
+ user.activate
34
33
  Faker::Number.between(from: 0, to: 2).times do
35
- offset = rand(@group_count)
36
- group = @groups.offset(offset).first
34
+ group = Group.random
37
35
 
38
36
  group.add(user)
39
37
  end
40
38
  end
41
39
  end
40
+
41
+ def self.random
42
+ super(::User)
43
+ end
42
44
  end
43
45
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DiscourseDev
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
@@ -6,6 +6,10 @@ module Faker
6
6
  class Discourse < Base
7
7
  class << self
8
8
 
9
+ def tag
10
+ fetch('discourse.tags')
11
+ end
12
+
9
13
  def category
10
14
  fetch('discourse.categories')
11
15
  end
@@ -13,6 +17,10 @@ module Faker
13
17
  def group
14
18
  fetch('discourse.groups')
15
19
  end
20
+
21
+ def topic
22
+ fetch('discourse.topics')
23
+ end
16
24
  end
17
25
  end
18
26
  end
@@ -62,3 +62,73 @@ en:
62
62
  - subscribers
63
63
  - creators
64
64
  - translators
65
+ - editors
66
+ - developers
67
+ - publishers
68
+ - leaders
69
+ - advertisers
70
+ - early-birds
71
+ - partners
72
+ topics:
73
+ - Whoa. Check out this crazy paper artwork
74
+ - What’s the coolest thing you have worked on?
75
+ - A bear, however hard he tries, grows tubby without exercise
76
+ - Impressions Games City Builders
77
+ - Recommended reading for Community and FOSS enthusiasts
78
+ - Robots are taking our jobs!
79
+ - Modernizing the antiquated boxing scoring system
80
+ - Death by poisonous and electric watermelon
81
+ - D&D Gallery - Prey for Smiley Bob play session [with terrain]
82
+ - Why is uninhabited land in the US so closed off?
83
+ - The Room Appreciation Topic
84
+ - Recommend a great YouTube video
85
+ - Favorite TV show scene?
86
+ - Is the Second Amendment still relevant today?
87
+ - What methods/books did you use to learn Ruby?
88
+ - What is your favorite TED Video
89
+ - MLP:FIM Season 3 (spoilers ahoy!)
90
+ - Do you use a mobile device for ALL your work? Tell me how!
91
+ - What’s your all-time favorite movie scene?
92
+ - Enjoyable children’s shows for adults
93
+ - Totally amped about the 80s
94
+ - Do microwave ovens kill bacteria?
95
+ - Most inspirational movie you have ever seen?
96
+ - Catching all 151 in 2 hours
97
+ - Charlie The Unicorn 4
98
+ - Video Games for Pre-Teens?
99
+ - Online learning
100
+ - Mark of the Ninja
101
+ - Funniest thing you’ve seen today?
102
+ - Coolest thing you have seen today
103
+ - Share your Hallowe’en pictures
104
+ tags:
105
+ - art
106
+ - code
107
+ - official
108
+ - feedback
109
+ - fun
110
+ - dev
111
+ - design
112
+ - test
113
+ - blog
114
+ - cloud
115
+ - tv
116
+ - movies
117
+ - review
118
+ - news
119
+ - link
120
+ - video
121
+ - photos
122
+ - lead
123
+ - mobile
124
+ - music
125
+ - release
126
+ - notes
127
+ - todo
128
+ - duplicate
129
+ - praise
130
+ - faq
131
+ - job-application
132
+ - rfc
133
+ - email
134
+ - wiki
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discourse_dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinoth Kannan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-05 00:00:00.000000000 Z
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -73,6 +73,7 @@ files:
73
73
  - lib/discourse_dev/group.rb
74
74
  - lib/discourse_dev/railtie.rb
75
75
  - lib/discourse_dev/record.rb
76
+ - lib/discourse_dev/tag.rb
76
77
  - lib/discourse_dev/tasks/dev.rake
77
78
  - lib/discourse_dev/tasks/populate.rake
78
79
  - lib/discourse_dev/topic.rb