Module: PrestaShopAutomation::InstallerActions

Included in:
PrestaShop
Defined in:
lib/actions/installer.rb

Instance Method Summary collapse

Instance Method Details

#add_module_from_repo(repo, branch = nil) ⇒ Object



74
75
76
77
78
79
# File 'lib/actions/installer.rb', line 74

def add_module_from_repo repo, branch=nil
  b = branch ? ['-b', branch] : []
  unless system 'git', 'clone', repo, *b, :chdir => File.join(@filesystem_path, 'modules')
    throw "Could not clone '#{repo}' into '#{@filesystem_path}'"
  end
end

#database_existsObject



117
118
119
120
121
# File 'lib/actions/installer.rb', line 117

def database_exists
  count = client.query("SHOW DATABASES LIKE '#{client.escape @database_name}'").count
  expect(count).to be <= 1
  count == 1
end

#drop_databaseObject



113
114
115
# File 'lib/actions/installer.rb', line 113

def drop_database
  client.query("DROP DATABASE IF EXISTS #{safe_database_name}")
end

#install(options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/actions/installer.rb', line 6

def install options={}
  if options[:prepare_database]
    prepare_database
  end

  visit @installer_url
  select_by_value '#langList', options[:language] || 'en'
  click '#btNext'
  click_label_for 'set_license'
  click '#btNext'

  fill_in 'infosShop', :with => options[:shop_name] || @database_name
  if has_selector? "input[name='db_mode']"
    find("input[name='db_mode'][value='#{options[:no_demo_products] ? 'lite' : 'full'}']").click
  end
  select_by_value_jqChosen '#infosCountry', options[:country] || 'us'

  if options[:timezone]
    select_by_value_jqChosen '#infosTimezone', options[:timezone]
  end

  fill_in 'infosFirstname', :with => options[:admin_firstname] || @admin_firstname || 'John'
  fill_in 'infosName', :with => options[:admin_lastname] || @admin_lastname || 'Doe'
  fill_in 'infosEmail', :with => options[:admin_email] || @admin_email || '[email protected]'
  password = options[:admin_password] || @admin_password || '123456789'
  fill_in 'infosPassword', :with => password
  fill_in 'infosPasswordRepeat', :with => password

  if has_selector? "#infosNotification"
    if options[:newsletter]
      check 'infosNotification'
    else
      uncheck 'infosNotification'
    end
  end

  click '#btNext'

  fill_in 'dbServer', :with => "#{@database_host}:#{@database_port}"
  fill_in 'dbName', :with => @database_name
  fill_in 'dbLogin', :with => @database_user
  fill_in 'dbPassword', :with => @database_password
  fill_in 'db_prefix', :with => @database_prefix

  click '#btTestDB'

  if options[:prepare_database]
    #db should be ok if we used :prepare_database
    expect_to have_selector '#dbResultCheck.okBlock'
  else
    check 'db_clear' if has_selector? 'db_clear'
    expect_to have_selector '#dbResultCheck.errorBlock'
    click '#btCreateDB'
    expect_to have_selector '#dbResultCheck.okBlock'
  end

  click '#btNext'

  wait_until do
    has_selector? 'a.BO' and has_selector? 'a.FO'
  end

  if options[:paranoid]
    
    
  end
end

#install_module(name) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/actions/installer.rb', line 81

def install_module name
  goto_admin_tab 'AdminModules'

  recent = version_gte('1.6.0.7') rescue true

  if recent
    link = first("a[data-link*='&install='][data-link*='controller=AdminModules']", :visible => false)['data-link']
    randomname = link[/\binstall=([^&?#]+)/, 1]
    link.gsub! randomname, name
    link = @back_office_url + link
    puts link
  else
    link = first("a[href*='&install='][href*='controller=AdminModules']", :visible => false)['href']
    randomname = link[/\binstall=([^&?#]+)/, 1]
    link.gsub! randomname, name
  end
  visit link
  #check that the entry was added to the DB
  expect(client.query("SELECT * FROM #{safe_database_name}.#{@database_prefix}module WHERE name='#{client.escape name}'").count).to be 1
end

#prepare_databaseObject



123
124
125
126
127
128
129
130
131
132
133
# File 'lib/actions/installer.rb', line 123

def prepare_database
  if !database_exists
    client.query "CREATE DATABASE #{safe_database_name}"
  else
    tables = client.query("SHOW TABLES IN #{safe_database_name} LIKE '#{client.escape @database_prefix}%'")
    tables.each do |row|
      table = row.values[0]
      client.query "DROP TABLE #{safe_database_name}.`#{table}`"
    end
  end
end

#update_all_modules(strict = false) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/actions/installer.rb', line 102

def update_all_modules strict=false
  goto_admin_tab 'AdminModules'
  if has_selector? '#desc-module-update-all'
    click '#desc-module-update-all'
    if strict
      goto_admin_tab 'AdminModules'
      expect_to have_selector '#desc-module-check-and-update-all'
    end
  end
end