124 lines
6.0 KiB
Python
124 lines
6.0 KiB
Python
import time
|
|
from flask.ext.testing import LiveServerTestCase
|
|
import mockredis
|
|
from splinter import Browser
|
|
from helix import main
|
|
from helix.constants import sql_constant
|
|
from helix.constants.module_type import ModuleType
|
|
from helix.constants.system_type import SystemType
|
|
from helix.constants.anchor_type import AnchorType
|
|
from helix.constants import redis_constant
|
|
from test.test_helpers import *
|
|
|
|
|
|
class ArraySummaryDynamicTest(LiveServerTestCase):
|
|
def create_app(self):
|
|
redis_constant.redis_store = mockredis.mock_redis_client()
|
|
sql_constant.sql_session_maker = lambda: SQLManager.get_sql_session_maker('postgres://pivotal:@localhost/test')
|
|
|
|
app = main.app
|
|
app.config['TESTING'] = True
|
|
app.config['LIVESERVER_PORT'] = 8943
|
|
return app
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.test_db_session = test_db_session()
|
|
cls.browser = Browser('phantomjs')
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.test_db_session.close_all()
|
|
cls.browser.quit()
|
|
|
|
def setUp(self):
|
|
self.browser.visit('/array_summary/')
|
|
|
|
def tearDown(self):
|
|
reset_db_session(self.test_db_session)
|
|
self.browser.cookies.delete()
|
|
|
|
def fill_in_site_characterization_data(self,
|
|
system_type=SystemType.singleTilt,
|
|
module_type=ModuleType.Cell96):
|
|
self.browser.visit(self.get_server_url() + '/site_characterization/')
|
|
self.browser.fill('project_name', 'Test Project Name')
|
|
self.browser.fill('building_width', '200')
|
|
self.browser.fill('building_height', '30')
|
|
self.browser.fill('building_length', '75.5')
|
|
self.browser.fill('wind_speed', '125')
|
|
self.browser.fill('ballast_block_weight', '13')
|
|
self.browser.fill('building_parapet_height', '0')
|
|
self.browser.fill('max_system_pressure', '10')
|
|
self.browser.select('system_type', system_type.value)
|
|
self.browser.select('anchor_type', AnchorType.EcoFasten.value)
|
|
self.browser.select('module_type', module_type.value)
|
|
self.browser.fill('design_spectral_response', '1.02')
|
|
self.browser.find_by_value('Next').first.click()
|
|
self.browser.visit(self.get_server_url() + '/array_summary/')
|
|
|
|
def upload_cad_block_file(self, file):
|
|
self.browser.attach_file('file_upload', file)
|
|
|
|
def upload_dxf_file(self, file='test/fixtures/dxf/input_single_tilt_96_cell.dxf'):
|
|
self.browser.attach_file('dxf_upload', file)
|
|
|
|
def test_shows_subarray_summary_table_if_user_has_uploaded_data(self):
|
|
self.fill_in_site_characterization_data()
|
|
self.upload_cad_block_file('test/fixtures/input_single_tilt_csv_for_bom.csv')
|
|
time.sleep(3)
|
|
assert len(self.browser.find_by_css('.upload_field .error_message')) == 0
|
|
assert len(self.browser.find_by_css("#seismic_anchor_table")) > 0
|
|
eq_(len(self.browser.find_by_css("#seismic_anchor_table tr")), 4)
|
|
eq_(len(self.browser.find_by_css("#seismic_anchor_table tr:nth-child(2) td")), 13)
|
|
|
|
def test_shows_errors_if_user_tries_to_upload_select_invalid_data(self):
|
|
self.fill_in_site_characterization_data()
|
|
self.upload_cad_block_file('test/fixtures/invalid_wind_zone.csv')
|
|
time.sleep(3)
|
|
assert len(self.browser.find_by_id('error_message_txt')) > 0
|
|
assert len(self.browser.find_by_css("#seismic_anchor_table")) == 0
|
|
|
|
# def test_shows_subarray_summary_table_after_user_uploads_dxf(self):
|
|
# self.fill_in_site_characterization_data(system_type=SystemType.dualTilt)
|
|
# self.upload_dxf_file('test/fixtures/dxf/input_dual_tilt_96_cell.dxf')
|
|
# assert len(self.browser.find_by_css('.upload_field .error_message')) == 0
|
|
# assert len(self.browser.find_by_css("#seismic_anchor_table")) > 0
|
|
# eq_(len(self.browser.find_by_css("#seismic_anchor_table tr")), 4)
|
|
# eq_(len(self.browser.find_by_css("#seismic_anchor_table tr:nth-child(2) td")), 8)
|
|
|
|
def test_indicates_that_user_has_already_uploaded_a_csv_file_after_uploading(self):
|
|
self.fill_in_site_characterization_data()
|
|
self.upload_cad_block_file('test/fixtures/input_single_tilt_csv_for_bom.csv')
|
|
time.sleep(3)
|
|
assert len(self.browser.find_by_css('.upload_field .error_message')) == 0
|
|
assert 'input_single_tilt_csv_for_bom.csv' in self.browser.html
|
|
|
|
def test_adding_seismic_anchor_updates_subarray_summary(self):
|
|
self.fill_in_site_characterization_data()
|
|
self.upload_cad_block_file('test/fixtures/input_single_tilt_csv_for_bom.csv')
|
|
time.sleep(3)
|
|
assert self.browser.is_element_visible_by_css('#arrayCanvas')
|
|
self.browser.execute_script('arrayVisualization.selectPanel(1631);')
|
|
self.browser.find_by_css('#add_seismic').click()
|
|
assert self.browser.find_by_css('#current_anchors td:nth-child(14)').text == '1'
|
|
self.browser.find_by_css('#add_seismic').click()
|
|
assert self.browser.find_by_css('#current_anchors td:nth-child(14)').text == '2'
|
|
|
|
def test_removig_seismic_anchor_updates_subarray_summary(self):
|
|
self.fill_in_site_characterization_data()
|
|
self.upload_cad_block_file('test/fixtures/input_single_tilt_csv_for_bom.csv')
|
|
time.sleep(3)
|
|
assert self.browser.is_element_visible_by_css('#arrayCanvas')
|
|
self.browser.execute_script('arrayVisualization.selectPanel(1631);')
|
|
self.browser.find_by_css('#add_seismic').click()
|
|
assert self.browser.find_by_css('#current_anchors td:nth-child(14)').text == '1'
|
|
self.browser.find_by_css('#remove_seismic').click()
|
|
assert self.browser.find_by_css('#current_anchors td:nth-child(14)').text == '0'
|
|
|
|
# def test_indicate_that_user_has_uploaded_a_dxf_file_after_uploading_dxf(self):
|
|
# self.fill_in_site_characterization_data(system_type=SystemType.dualTilt)
|
|
# self.upload_dxf_file('test/fixtures/dxf/input_dual_tilt_96_cell.dxf')
|
|
# assert len(self.browser.find_by_css('.upload_field .error_message')) == 0
|
|
# assert 'input_dual_tilt_96_cell.dxf' in self.browser.html
|