Browse Source

Add data generation using Faker

Maarten van den Berg 8 years ago
parent
commit
04c4e101cf
3 changed files with 84 additions and 31 deletions
  1. 3 0
      Gemfile
  2. 3 0
      Gemfile.lock
  3. 78 31
      db/seeds.rb

+ 3 - 0
Gemfile

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

+ 3 - 0
Gemfile.lock

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

+ 78 - 31
db/seeds.rb

10
   first_name: 'Maarten',
10
   first_name: 'Maarten',
11
   infix: 'van den',
11
   infix: 'van den',
12
   last_name: 'Berg',
12
   last_name: 'Berg',
13
-  birth_date: (Date.new 2016, 1, 1),
13
+  birth_date: (Faker::Date.between(21.years.ago, Date.today)),
14
   email: 'maarten@maartenberg.nl.eu.org',
14
   email: 'maarten@maartenberg.nl.eu.org',
15
   is_admin: true
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
 u = User.create!(
18
 u = User.create!(
26
   email: 'maarten@maartenberg.nl.eu.org',
19
   email: 'maarten@maartenberg.nl.eu.org',
27
   person: p,
20
   person: p,
29
   password_confirmation: 'aardbei123'
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
 g = Group.create!(
32
 g = Group.create!(
33
   name: 'Teststam'
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
 a = Activity.create!(
52
 a = Activity.create!(
37
   public_name: 'Fikkie stoken ofzo',
53
   public_name: 'Fikkie stoken ofzo',
38
   secret_name: 'Bosbrandopkomst',
54
   secret_name: 'Bosbrandopkomst',
45
   group: g
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