Skip to content

Commit 1bdccde

Browse files
committed
2 parents 33fc175 + add0e1c commit 1bdccde

File tree

30 files changed

+391
-92
lines changed

30 files changed

+391
-92
lines changed

eFormAPI/Installation/CustomActions/CustomAction.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,12 @@ public static ActionResult UpdateCA(Session session)
444444
DeleteDirectory(Path.Combine(uiIisDir, "dist"));
445445
}
446446
catch { }
447+
448+
try
449+
{
450+
DeleteDirectory(Path.Combine("c:\\", "MicrotingTemp"));
451+
}
452+
catch { }
447453
try
448454
{
449455
BackupPluginSettings(session, uiIisDir);

eFormAPI/eFormAPI.Web.Integration.Tests/eFormAPI.Web.Integration.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
10-
<PackageReference Include="Microting.eForm" Version="3.0.155" />
10+
<PackageReference Include="Microting.eForm" Version="3.0.160" />
1111
<PackageReference Include="NUnit" Version="3.11.0" />
1212
<PackageReference Include="NUnit3TestAdapter" Version="3.12.0" />
1313
</ItemGroup>

eFormAPI/eFormAPI.Web.Tests/eFormAPI.Web.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
10-
<PackageReference Include="Microting.eForm" Version="3.0.155" />
10+
<PackageReference Include="Microting.eForm" Version="3.0.160" />
1111
<PackageReference Include="NUnit" Version="3.11.0" />
1212
<PackageReference Include="NUnit3TestAdapter" Version="3.12.0" />
13-
<PackageReference Include="Microting.eFormApi.BasePn" Version="1.1.94" />
13+
<PackageReference Include="Microting.eFormApi.BasePn" Version="1.1.96" />
1414
</ItemGroup>
1515

1616
<ItemGroup>

eFormAPI/eFormAPI.Web/Hosting/Helpers/PluginHelper.cs

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Linq;
5+
using System.Text.RegularExpressions;
56
using eFormAPI.Web.Hosting.Enums;
67
using eFormAPI.Web.Hosting.Extensions;
78
using eFormAPI.Web.Infrastructure.Database.Entities;
@@ -24,7 +25,6 @@ public static List<IEformPlugin> GetPlugins(IConfiguration configuration)
2425
{
2526
// Load info from database
2627
List<EformPlugin> eformPlugins = null;
27-
var newPlugins = new List<EformPlugin>();
2828
var contextFactory = new BaseDbContextFactory();
2929
using (var dbContext = contextFactory.CreateDbContext(new[] {configuration.MyConnectionString()}))
3030
{
@@ -33,40 +33,53 @@ public static List<IEformPlugin> GetPlugins(IConfiguration configuration)
3333
eformPlugins = dbContext.EformPlugins
3434
.AsNoTracking()
3535
.ToList();
36-
} catch {}
36+
}
37+
catch
38+
{
39+
}
3740
}
41+
3842
var plugins = new List<IEformPlugin>();
3943
// create plugin loaders
4044
if (eformPlugins != null)
4145
{
42-
foreach (var plugin in GetAllPlugins())
46+
using (var dbContext = contextFactory.CreateDbContext(new[] {configuration.MyConnectionString()}))
4347
{
44-
var eformPlugin = eformPlugins.FirstOrDefault(x => x.PluginId == plugin.PluginId);
45-
if (eformPlugin != null)
48+
var connectionString = dbContext.Database.GetDbConnection().ConnectionString;
49+
50+
var dbNameSection = Regex.Match(connectionString, @"(Database=\w*;)").Groups[0].Value;
51+
var dbPrefix = Regex.Match(connectionString, @"Database=(\d*)_").Groups[1].Value;
52+
53+
foreach (var plugin in GetAllPlugins())
4654
{
47-
if (eformPlugin.Status == (int) PluginStatus.Enabled)
55+
var eformPlugin = eformPlugins.FirstOrDefault(x => x.PluginId == plugin.PluginId);
56+
if (eformPlugin != null)
4857
{
49-
plugins.Add(plugin);
58+
if (eformPlugin.Status == (int) PluginStatus.Enabled)
59+
{
60+
plugins.Add(plugin);
61+
}
5062
}
51-
}
52-
else
53-
{
54-
newPlugins.Add(new EformPlugin()
63+
else
5564
{
56-
PluginId = plugin.PluginId,
57-
ConnectionString = "...",
58-
Status = (int) PluginStatus.Disabled
59-
});
65+
var pluginDbName = $"Database={dbPrefix}_{plugin.PluginId};";
66+
var pluginConnectionString = connectionString.Replace(dbNameSection, pluginDbName);
67+
var newPlugin = new EformPlugin()
68+
{
69+
PluginId = plugin.PluginId,
70+
ConnectionString = pluginConnectionString,
71+
Status = (int) PluginStatus.Disabled
72+
};
73+
dbContext.EformPlugins.Add(newPlugin);
74+
dbContext.SaveChanges();
75+
plugins.Add(plugin);
76+
}
6077
}
78+
79+
6180
}
6281
}
63-
6482

65-
using (var dbContext = contextFactory.CreateDbContext(new[] {configuration.MyConnectionString()}))
66-
{
67-
dbContext.EformPlugins.AddRange(newPlugins);
68-
dbContext.SaveChanges();
69-
}
7083
return plugins;
7184
}
7285

@@ -132,10 +145,10 @@ public static List<IEformPlugin> GetAllPlugins()
132145
Console.WriteLine("Found plugin : " + type.Name);
133146
var plugin = (IEformPlugin) Activator.CreateInstance(type);
134147
plugins.Add(plugin);
135-
136148
}
137149
}
138150
}
151+
139152
Console.ForegroundColor = ConsoleColor.Green;
140153
Console.WriteLine($"{plugins.Count} plugins found");
141154

eFormAPI/eFormAPI.Web/eFormAPI.Web.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@
2424

2525
<ItemGroup>
2626
<PackageReference Include="JetBrains.Annotations" Version="2018.3.0" />
27-
<PackageReference Include="Microting.eFormApi.BasePn" Version="1.1.94" />
28-
<PackageReference Include="Microting.eForm" Version="3.0.155" />
29-
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.1.4" />
27+
<PackageReference Include="Microting.eFormApi.BasePn" Version="1.1.96" />
28+
<PackageReference Include="Microting.eForm" Version="3.0.160" />
29+
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.0" />
3030
<PackageReference Include="SharpZipLib.NETStandard" Version="1.0.7" />
3131
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0005" />
3232
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
3333
<PackageReference Include="McMaster.NETCore.Plugins" Version="0.2.1" />
3434
<PackageReference Include="OtpSharp.Core" Version="1.0.0" />
3535
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.2.0" />
36-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.1" />
37-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.1" />
38-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.1" />
36+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.2" />
37+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.2" />
38+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.2" />
3939
</ItemGroup>
4040

4141
<ItemGroup>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
export default {
2+
XML: '<?xml version="1.0" encoding="UTF-8"?>\n' +
3+
'<Main>\n' +
4+
' <Id>138798</Id>\n' +
5+
' <Repeated>0</Repeated>\n' +
6+
' <Label>Number 1</Label>\n' +
7+
' <StartDate>2018-05-08</StartDate>\n' +
8+
' <EndDate>2028-05-08</EndDate>\n' +
9+
' <Language>da</Language>\n' +
10+
' <MultiApproval>false</MultiApproval>\n' +
11+
' <FastNavigation>false</FastNavigation>\n' +
12+
' <Review>false</Review>\n' +
13+
' <Summary>false</Summary>\n' +
14+
' <DisplayOrder>0</DisplayOrder>\n' +
15+
' <ElementList>\n' +
16+
' <Element type="DataElement">\n' +
17+
' <Id>138798</Id>\n' +
18+
' <Label>Number 1</Label>\n' +
19+
' <Description><![CDATA[]]></Description>\n' +
20+
' <DisplayOrder>0</DisplayOrder>\n' +
21+
' <ReviewEnabled>false</ReviewEnabled>\n' +
22+
' <ManualSync>false</ManualSync>\n' +
23+
' <ExtraFieldsEnabled>false</ExtraFieldsEnabled>\n' +
24+
' <DoneButtonDisabled>false</DoneButtonDisabled>\n' +
25+
' <ApprovalEnabled>false</ApprovalEnabled>\n' +
26+
' <DataItemList>\n' +
27+
' <DataItem type="Number">\n' +
28+
' <Id>343963</Id>\n' +
29+
' <Label>Number 1</Label>\n' +
30+
' <Description><![CDATA[Number 1 description]]></Description>\n' +
31+
' <DisplayOrder>0</DisplayOrder>\n' +
32+
' <Mandatory>true</Mandatory>\n' +
33+
' <MinValue>1</MinValue>\n' +
34+
' <MaxValue>1100</MaxValue>\n' +
35+
' <Value>24</Value>\n' +
36+
' <DecimalCount>2</DecimalCount>\n' +
37+
' <UnitName/>\n' +
38+
' <Color>e8eaf6</Color>\n' +
39+
' </DataItem>\n' +
40+
' </DataItemList>\n' +
41+
' </Element>\n' +
42+
' </ElementList>\n' +
43+
'</Main>'
44+
};

eform-client/e2e/Page objects/Navbar.page.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,20 @@ export class Navbar {
2929
public get userAdministrationBtn() {
3030
return browser.element(`//*[contains(@class, 'fadeInDropdown')]//*[contains(text(), 'Brugeradministration')]`);
3131
}
32+
public get workersBtn() {
33+
return browser.element(`//*[contains(@class, 'fadeInDropdown')]//*[contains(text(), 'Medarbejder')]`);
34+
}
3235
public get deviceUsersBtn() {
33-
return this.clickOnHeaderMenuItem(' Enhedsbrugere ');
36+
return this.clickOnHeaderMenuItem2(' Enhedsbrugere ');
3437
}
3538

3639
public clickOnHeaderMenuItem(headerMenuItem) {
3740
return browser.element(`//*[@id="header"]//*[text()="${headerMenuItem}"]`).element('..').element('..');
3841
}
3942
public verifyHeaderMenuItem(headerMenuItem) {
4043
return browser.getText(`//*[@id="header"]//*[contains(text(), '${headerMenuItem}')]`);
44+
} public clickOnHeaderMenuItem2(headerMenuItem) {
45+
return browser.element(`//*[@id="header"]//*[contains(text(), '${headerMenuItem}')]`);
4146
}
4247

4348
public logout() {
@@ -57,6 +62,11 @@ export class Navbar {
5762
this.applicationSettingsBtn();
5863
browser.pause(15000);
5964
}
65+
public goToWorkers() {
66+
this.advancedDropdown();
67+
this.workersBtn.click();
68+
browser.pause(15000);
69+
}
6070
public goToUserAdministration() {
6171
this.clickOnHeaderMenuItem('John Smith').click();
6272
this.userAdministrationBtn.click();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import Page from './Page';
2+
import DatabaseConfigurationConstants from '../Constants/DatabaseConfigurationConstants';
3+
4+
class PluginPage extends Page {
5+
constructor() {
6+
super();
7+
}
8+
9+
public ClickDropdown(id) {
10+
return browser.element(`#${id}`).click();
11+
}
12+
13+
public get saveBtn() {
14+
return browser.element('#saveBtn');
15+
}
16+
17+
public get pluginSettingsBtn() {
18+
return browser.element('#plugin-settings-btn');
19+
}
20+
21+
public save() {
22+
this.saveBtn.click();
23+
}
24+
25+
public selectValue(dropdownId, id, value) {
26+
this.ClickDropdown(dropdownId);
27+
browser.element(`//*[@id="${id}"]//*[text()="${value}"]`).click();
28+
browser.pause(4000);
29+
}
30+
}
31+
32+
const pluginPage = new PluginPage();
33+
export default pluginPage;
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import {PageWithNavbarPage} from './PageWithNavbar.page';
2+
import {DeviceUsersRowObject} from './DeviceUsers.page';
3+
4+
export class Workers extends PageWithNavbarPage {
5+
constructor() {
6+
super();
7+
}
8+
public get firstNameBox() {
9+
return browser.element('#firstName');
10+
}
11+
public get lastNameBox() {
12+
return browser.element('#lastName');
13+
}
14+
public get firstNameEditBox() {
15+
return browser.element('#firstNameEdit');
16+
}
17+
public get lastNameEditBox() {
18+
return browser.element('#lastNameEdit');
19+
}
20+
public get workerCreateBtn() {
21+
return browser.element('#workerCreateBtn');
22+
}
23+
public get workerSaveBtn() {
24+
return browser.element('#workerSaveBtn');
25+
}
26+
public get workerEditBtn() {
27+
return browser.element('#workerEditBtn');
28+
}
29+
public get workerEditSaveBtn() {
30+
return browser.element('#workerEditSaveBtn');
31+
}
32+
public get workerSelect() {
33+
return browser.element('#workerSelector');
34+
}
35+
public get firstElement() {
36+
return browser.element(`//*[contains(@class, 'custom')]//*[contains(text(), 'Gurkemine Ralphine')]`);
37+
}
38+
public get rowNum(): number {
39+
return $$('#tableBody > tr').length;
40+
}
41+
getWorker(num): WorkersRowObject {
42+
return new WorkersRowObject(num);
43+
}
44+
public createNewWorker(firstName: string, lastName: string) {
45+
this.workerCreateBtn.click();
46+
browser.pause(8000);
47+
this.workerSelect.click();
48+
browser.pause(1000);
49+
this.firstElement.click();
50+
this.firstNameBox.addValue(firstName);
51+
this.lastNameBox.addValue(lastName);
52+
browser.pause(1000);
53+
this.workerSaveBtn.click();
54+
browser.pause(16000);
55+
}
56+
public editWorker(worker: WorkersRowObject, firstName: string, lastName: string) {
57+
worker.editBtn.click();
58+
browser.pause(8000);
59+
this.firstNameEditBox.clearElement();
60+
this.firstNameEditBox.addValue(firstName);
61+
browser.pause(2000);
62+
this.lastNameEditBox.clearElement();
63+
this.lastNameEditBox.addValue(lastName);
64+
browser.pause(2000);
65+
this.workerEditSaveBtn.click();
66+
}
67+
}
68+
69+
const workers = new Workers();
70+
export default workers;
71+
72+
export class WorkersRowObject {
73+
constructor(rowNumber) {
74+
this.siteId = +$$('#workerUID')[rowNumber + 1].getText();
75+
this.firstName = $$('#workerFirstName')[rowNumber + 1].getText();
76+
this.lastName = $$('#workerLastName')[rowNumber + 1].getText();
77+
this.editBtn = $$('#workerEditBtn')[rowNumber + 1];
78+
this.deleteBtn = $$('#workerDeleteBtn')[rowNumber + 1];
79+
}
80+
81+
siteId: number;
82+
firstName;
83+
lastName;
84+
editBtn;
85+
deleteBtn;
86+
}

0 commit comments

Comments
 (0)