Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial TMS migration #1073

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion project-properties.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ project.ext {
releaseMode = project.hasProperty("releaseMode") ? project.releaseMode.toBoolean() : false
hasDBSchema = project.hasProperty("DB_SCHEMA_POSTGRES")
scriptsUrl = commonScriptsUrl + (releaseMode ? getProperty('scripts.version') : 'develop')
migrationsUrl = migrationsScriptsUrl + (releaseMode ? getProperty('migrations.version') : 'develop')
migrationsUrl = migrationsScriptsUrl + (releaseMode ? getProperty('migrations.version') : 'feature/EPMRPP-migrate-tms')

//TODO refactor with archive download
testScriptsSrc = [
Expand Down Expand Up @@ -82,6 +82,7 @@ project.ext {
(migrationsUrl + '/migrations/88_analytics_data_table.up.sql') : 'V088__analytics_data_table.sql',
(migrationsUrl + '/migrations/90_add_user_fields.up.sql') : 'V090__scim_user_fields.sql',
(migrationsUrl + '/migrations/93_create_groups_tables.up.sql') : 'V093__create_groups_tables.sql',
(migrationsUrl + '/migrations/94_tms_initial.up.sql') : 'V094__tms_initial.up.sql',
]
excludeTests = [
'com/epam/ta/reportportal/jooq/**',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.epam.ta.reportportal.dao;

import com.epam.ta.reportportal.entity.tms.TmsProductVersion;
import org.springframework.stereotype.Repository;

@Repository
public interface TmsProductVersionRepository extends ReportPortalRepository<TmsProductVersion, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.epam.ta.reportportal.dao;

import com.epam.ta.reportportal.entity.tms.TmsTestCase;
import java.util.List;
import org.springframework.stereotype.Repository;

@Repository
public interface TmsTestCaseRepository extends ReportPortalRepository<TmsTestCase, Long> {
List<TmsTestCase> findByTestFolder_ProjectId(long projectId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.epam.ta.reportportal.dao;

import com.epam.ta.reportportal.entity.tms.TmsTestFolder;
import java.util.List;
import org.springframework.stereotype.Repository;

/**
* @author Andrei_Varabyeu
*/
@Repository
public interface TmsTestFolderRepository extends ReportPortalRepository<TmsTestFolder, Long> {
/**
* Find all folder for given project
*
* @param projectID ID of project
* @return found folders
*/
List<TmsTestFolder> findAllByProjectId(long projectID);

/**
* Finds a folder by given ID and project ID
* @param id ID of folder
* @param projectId ID of project
* @return Test Folder
*/
TmsTestFolder findByIdAndProjectId(long id, long projectId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;

@Entity
@Table(name = "tms_attachment", schema = "public")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsAttachment implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name = "file_name")
private String fileName;

@Column(name = "file_type")
private String fileType;

@Column(name = "file_size")
private long fileSize;

@Column(name = "path_to_file")
private String pathToFile;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "step_id")
private TmsStep step;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "environment_id")
private TmsEnvironment environment;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;

@Entity
@Table(name = "tms_attribute", schema = "public")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsAttribute implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

// TODO: Do we actually need to mark this field unique=true and nullable=false ?
@Column(name = "key", nullable = false, unique = true)
private String key;

//TODO: override equals and hashCode methods
}
10 changes: 10 additions & 0 deletions src/main/java/com/epam/ta/reportportal/entity/tms/TmsDataSet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.epam.ta.reportportal.entity.tms;

import java.util.List;

public class TmsDataSet {
private Long id;
private String name;
private List<TmsDataSetColumn> columns;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.epam.ta.reportportal.entity.tms;

public class TmsDataSetColumn {
private Long id;
private String key;
private String value;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Set;

@Entity
@Table(name = "tms_environment", schema = "public")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsEnvironment {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name = "name")
private String name;

@Column(name = "test_data")
private String testData;

@OneToMany(mappedBy = "environment")
private Set<TmsAttachment> attachments;

@OneToMany(mappedBy = "environment")
private Set<TmsTestPlan> testPlans;

//TODO: add link to dataset
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Set;

@Entity
@Table(name = "tms_manual_scenario", schema = "public")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsManualScenario {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name = "execution_estimation_time")
private Integer executionEstimationTime;

@Column(name = "link_to_requirements")
private String linkToRequirements;

@Column(name = "preconditions")
private String preconditions;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "test_case_version_id")
private TmsTestCaseVersion testCaseVersion;

@OneToMany(mappedBy = "manualScenario")
private Set<TmsManualScenarioAttribute> attributes;

@OneToMany(mappedBy = "manualScenario")
private Set<TmsStep> steps;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.MapsId;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;

@Entity
@Table(name = "tms_manual_scenario_attribute")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsManualScenarioAttribute implements Serializable {

@EmbeddedId
private TmsManualScenarioAttributeId id;

@ManyToOne
@MapsId(value = "manualScenarioId")
@JoinColumn(name = "manual_scenario_id")
private TmsManualScenario manualScenario;

@ManyToOne
@MapsId(value = "attributeId")
@JoinColumn(name = "attribute_id")
private TmsAttribute attribute;

@Column(name = "value")
private String value;

//TODO: override equals and hashCode methods
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.epam.ta.reportportal.entity.tms;

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.util.Objects;

@Embeddable
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TmsManualScenarioAttributeId implements Serializable {

@Column(name = "manual_scenario_id")
private Long manualScenarioId;

@Column(name = "attribute_id")
private Long attributeId;

@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
TmsManualScenarioAttributeId that = (TmsManualScenarioAttributeId) o;
return Objects.equals(manualScenarioId, that.manualScenarioId) && Objects.equals(attributeId, that.attributeId);
}

@Override
public int hashCode() {
return Objects.hash(manualScenarioId, attributeId);
}
}
Loading