浏览代码

Add data generation using Faker

Maarten van den Berg 8 年之前
父节点
当前提交
04c4e101cf
共有 3 个文件被更改,包括 84 次插入31 次删除
  1. 3 0
      Gemfile
  2. 3 0
      Gemfile.lock
  3. 78 31
      db/seeds.rb

+ 3 - 0
Gemfile

@@ -34,6 +34,9 @@ gem 'autoprefixer-rails'
34 34
 # In-place editing
35 35
 gem 'x-editable-rails'
36 36
 
37
+# Fake data generation
38
+gem 'faker'
39
+
37 40
 # Use HAML for templates
38 41
 gem 'haml'
39 42
 

+ 3 - 0
Gemfile.lock

@@ -58,6 +58,8 @@ GEM
58 58
     debug_inspector (0.0.2)
59 59
     erubis (2.7.0)
60 60
     execjs (2.7.0)
61
+    faker (1.7.2)
62
+      i18n (~> 0.5)
61 63
     ffi (1.9.14)
62 64
     font-awesome-sass (4.7.0)
63 65
       sass (>= 3.2)
@@ -172,6 +174,7 @@ DEPENDENCIES
172 174
   bootstrap-sass (~> 3.3.6)
173 175
   byebug
174 176
   coffee-rails (~> 4.2)
177
+  faker
175 178
   font-awesome-sass
176 179
   haml
177 180
   jbuilder (~> 2.5)

+ 78 - 31
db/seeds.rb

@@ -10,18 +10,11 @@ p = Person.create!(
10 10
   first_name: 'Maarten',
11 11
   infix: 'van den',
12 12
   last_name: 'Berg',
13
-  birth_date: (Date.new 2016, 1, 1),
13
+  birth_date: (Faker::Date.between(21.years.ago, Date.today)),
14 14
   email: 'maarten@maartenberg.nl.eu.org',
15 15
   is_admin: true
16 16
 )
17 17
 
18
-p2 = Person.create!(
19
-  first_name: 'Henkie',
20
-  last_name: 'Gekke',
21
-  birth_date: (Date.new 2016, 1, 1),
22
-  email: 'geefmijgeld@maartenberg.nl.eu.org'
23
-)
24
-
25 18
 u = User.create!(
26 19
   email: 'maarten@maartenberg.nl.eu.org',
27 20
   person: p,
@@ -29,10 +22,33 @@ u = User.create!(
29 22
   password_confirmation: 'aardbei123'
30 23
 )
31 24
 
25
+p2 = Person.create!(
26
+  first_name: 'Henkie',
27
+  last_name: 'Gekke',
28
+  birth_date: (Faker::Date.between(21.years.ago, Date.today)),
29
+  email: 'gekkehenkie@maartenberg.nl.eu.org'
30
+)
31
+
32 32
 g = Group.create!(
33 33
   name: 'Teststam'
34 34
 )
35 35
 
36
+
37
+2.times do |i|
38
+  gr = Group.create!(
39
+    name: Faker::Team.name
40
+  )
41
+end
42
+
43
+15.times do |i|
44
+  person = Person.create!(
45
+    first_name: (Faker::Name.first_name),
46
+    last_name:  (Faker::Name.last_name),
47
+    birth_date: (Faker::Date.between(21.years.ago, Date.today)),
48
+    email: "testuser#{i}@maartenberg.nl.eu.org"
49
+  )
50
+end
51
+
36 52
 a = Activity.create!(
37 53
   public_name: 'Fikkie stoken ofzo',
38 54
   secret_name: 'Bosbrandopkomst',
@@ -45,27 +61,58 @@ a = Activity.create!(
45 61
   group: g
46 62
 )
47 63
 
48
-Member.create!(
49
-  group: g,
50
-  person: p,
51
-  is_leader: true
52
-)
53
-Member.create!(
54
-  group: g,
55
-  person: p2
56
-)
64
+Group.all.each do |g|
65
+  10.times do |i|
66
+    if Faker::Boolean.boolean(0.25)
67
+      secret_name = Faker::Hacker.ingverb
68
+    else
69
+      secret_name = nil
70
+    end
57 71
 
58
-Participant.create!(
59
-  activity: a,
60
-  person: p,
61
-  is_organizer: true,
62
-  attending: true,
63
-  notes: nil
64
-)
65
-Participant.create!(
66
-  activity: a,
67
-  person: p2,
68
-  is_organizer: false,
69
-  attending: false,
70
-  notes: 'fliep floep'
71
-)
72
+    starttime = Faker::Time.between(DateTime.now, 1.years.since, :morning)
73
+    endtime   = Faker::Time.between(1.hours.since(starttime), 1.days.since(starttime), :afternoon)
74
+    deadline  = 5.days.ago(starttime)
75
+    puts starttime
76
+    puts endtime
77
+    puts deadline
78
+
79
+    act = Activity.create!(
80
+      public_name: Faker::Hacker.ingverb,
81
+      secret_name: secret_name,
82
+      description: Faker::Hipster.sentence,
83
+      location: Faker::Address.city,
84
+      start: starttime,
85
+      end: endtime,
86
+      deadline: deadline,
87
+      show_hidden: Faker::Boolean.boolean,
88
+      group: g
89
+    )
90
+  end
91
+end
92
+
93
+Person.all.each do |p|
94
+  Group.all.each do |g|
95
+    if Faker::Boolean.boolean(0.75)
96
+      mem = Member.create!(
97
+        person: p,
98
+        group:  g,
99
+        is_leader: Faker::Boolean.boolean(0.1)
100
+      )
101
+      g.activities.each do |a|
102
+        if Faker::Boolean.boolean(0.15)
103
+          notes = Faker::Hipster.sentence
104
+        else
105
+          notes = nil
106
+        end
107
+
108
+        part = Participant.create!(
109
+          activity: a,
110
+          person:   p,
111
+          is_organizer: Faker::Boolean.boolean(0.1),
112
+          attending: [true, false, nil].sample,
113
+          notes:    notes
114
+        )
115
+      end
116
+    end
117
+  end
118
+end