Skip to content

Commit

Permalink
Update .travis.yml configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
jpmonette committed May 4, 2020
1 parent baa4925 commit 1453adb
Show file tree
Hide file tree
Showing 23 changed files with 426 additions and 99 deletions.
74 changes: 43 additions & 31 deletions .travis.yml
@@ -1,35 +1,47 @@
sudo: true
node_js: "7"
os: xenial

cache:
directories:
- node_modules
env:
global:
- SFDX_ALIAS=jpmonette-q-$TRAVIS_BUILD_NUMBER

before_script:
- export URL=https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz
- export SFDX_AUTOUPDATE_DISABLE=false
- export SFDX_USE_GENERIC_UNIX_KEYCHAIN=true
- export SFDX_DOMAIN_RETRY=300
- export SFDX_DISABLE_APP_HUB=true
- export SFDX_LOG_LEVEL=DEBUG
- export SFDX_ALIAS=servier-ci-$TRAVIS_BUILD_NUMBER
- mkdir sfdx
- wget -qO- $URL | tar xJ -C sfdx --strip-components 1
- "./sfdx/install"
- export PATH=./sfdx/$(pwd):$PATH
- sfdx update
- sfdx --version
- sfdx plugins --core
- npm install apexcov coveralls -g
- echo force://$CLIENT_ID:$CLIENT_SECRET:$REFRESH_TOKEN@$INSTANCE_URL > .sfdx-url
- sfdx force:auth:sfdxurl:store --setdefaultdevhubusername --sfdxurlfile ./.sfdx-url --setalias DefaultOrg
- echo y | sfdx plugins:install @mavens/sfdx-commands
jobs:
include:
- stage: "Static code analysis"
name: 🕵🏼‍♂️ Static code analysis (PMD)
install: bash scripts/ci/installPMD.sh
script: bash scripts/ci/runPMD.sh

script:
- sfdx force:org:create --setdefaultusername --definitionfile scratchdef.json --setalias ci
- sfdx force:source:push
- mkdir coverage
- sfdx force:apex:test:run --codecoverage --testlevel=RunLocalTests --resultformat=human --outputdir=coverage
- sfdx mavens:ci:lcov
- sfdx force:org:delete --noprompt
- cat ./coverage/lcov.info | coveralls
- stage: "Salesforce Scratch-Org"
name: 🚀 Creating Scratch-Org
workspaces:
create:
name: sfdx
paths:
- sfdx # for the sfdx install files
- $HOME/.sfdx # for the authenticated orgs
install: bash scripts/ci/installSFDX.sh
script: bash scripts/ci/createOrg.sh

- stage: "Push"
name: "🙇 Pushing Metadata"
workspaces:
use: sfdx
install: bash scripts/ci/installDX.sh
script: bash scripts/ci/push.sh

- stage: "Tests"
name: "🧪 Running Apex Tests"
env: dir=null
workspaces:
use: sfdx
install: bash scripts/ci/installDX.sh
script: bash scripts/ci/runApexTests.sh

- stage: "Cleanup"
name: "🧹 Deleting Scratch Org"
env: dir=null
workspaces:
use: sfdx
install: bash scripts/ci/installDX.sh
script: bash scripts/ci/deleteOrg.sh
8 changes: 4 additions & 4 deletions README.md
@@ -1,9 +1,10 @@
# Project Q

A Dynamic [SOQL Query](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_sosl_intro.htm) Builder for the [Force.com Platform](https://developer.salesforce.com/docs/atlas.en-us.fundamentals.meta/fundamentals/adg_preface.htm)

[![CircleCI Build Status](https://circleci.com/gh/jpmonette/q.png?style=shield&circle-token=:circle-token)](https://circleci.com/gh/jpmonette/q)
[![Coverage Status](https://coveralls.io/repos/github/jpmonette/q/badge.svg?branch=master)](https://coveralls.io/github/jpmonette/q?branch=master)
[![Code Climate](https://codeclimate.com/github/jpmonette/q/badges/gpa.svg)](https://codeclimate.com/github/jpmonette/q)
[![Build Status](https://travis-ci.org/jpmonette/q.svg?branch=master)](https://travis-ci.org/jpmonette/q)
[![Coverage Status](https://coveralls.io/repos/github/jpmonette/q/badge.svg?branch=master)](https://coveralls.io/github/jpmonette/q?branch=master)
[![Code Climate](https://codeclimate.com/github/jpmonette/q/badges/gpa.svg)](https://codeclimate.com/github/jpmonette/q)

## Installation

Expand Down Expand Up @@ -51,7 +52,6 @@ straightforward, so feel free to join the fun!

[contributing]: CONTRIBUTING.md


## License

This library is distributed under the MIT license found in the [LICENSE](./LICENSE)
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion force-app/main/default/classes/Q.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>39.0</apiVersion>
<apiVersion>48.0</apiVersion>
<status>Active</status>
</ApexClass>
63 changes: 38 additions & 25 deletions force-app/main/default/classes/QCondition.cls
Expand Up @@ -123,31 +123,44 @@ public class QCondition implements QICondition {
}

public String build() {
if (operatorValue.equals(ComparisonOperator.EQUALS)) {
return field + ' = ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.NOT_EQUALS)) {
return field + ' != ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.LESS_THAN)) {
return field + ' < ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.LESS_OR_EQUAL)) {
return field + ' <= ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.GREATER_THAN)) {
return field + ' > ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.GREATER_OR_EQUAL)) {
return field + ' >= ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.IS_LIKE)) {
return field + ' LIKE ' + fieldValue;
} else if (operatorValue.equals(ComparisonOperator.IS_IN)) {
return field + ' IN (' + fieldValue + ')';
} else if (operatorValue.equals(ComparisonOperator.NOT_IN)) {
return field + ' NOT IN (' + fieldValue + ')';
} else if (operatorValue.equals(ComparisonOperator.INCLUDES)) {
return field + ' INCLUDES (' + fieldValue + ')';
} else if (operatorValue.equals(ComparisonOperator.EXCLUDES)) {
return field + ' EXCLUDES (' + fieldValue + ')';
} else {
return '';
switch on operatorValue {
when EQUALS {
return field + ' = ' + fieldValue;
}
when NOT_EQUALS {
return field + ' != ' + fieldValue;
}
when LESS_THAN {
return field + ' < ' + fieldValue;
}
when LESS_OR_EQUAL {
return field + ' <= ' + fieldValue;
}
when GREATER_THAN {
return field + ' > ' + fieldValue;
}
when GREATER_OR_EQUAL {
return field + ' >= ' + fieldValue;
}
when IS_LIKE {
return field + ' LIKE ' + fieldValue;
}
when IS_IN {
return field + ' IN (' + fieldValue + ')';
}
when NOT_IN {
return field + ' NOT IN (' + fieldValue + ')';
}
when INCLUDES {
return field + ' INCLUDES (' + fieldValue + ')';
}
when EXCLUDES {
return field + ' EXCLUDES (' + fieldValue + ')';
}
when else {
return '';
}
}
}

}
}
2 changes: 1 addition & 1 deletion force-app/main/default/classes/QCondition.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>39.0</apiVersion>
<apiVersion>48.0</apiVersion>
<status>Active</status>
</ApexClass>
3 changes: 2 additions & 1 deletion force-app/main/default/classes/QConditionGroup.cls
Expand Up @@ -34,8 +34,9 @@ public abstract class QConditionGroup implements QICondition {
String value = '';

for (QICondition condition : conditions) {
if (String.isNotEmpty(value))
if (String.isNotEmpty(value)) {
value += ' ' + operator + ' ';
}
value += condition.build();
}

Expand Down
28 changes: 14 additions & 14 deletions force-app/main/default/classes/QConditionTest.cls
Expand Up @@ -9,89 +9,89 @@ private class QConditionTest {
@isTest
static void testEqualsString() {
String segment = new QCondition('Name').equalsTo('Jean-Philippe Monette').build();
System.assertEquals('Name = \'Jean-Philippe Monette\'', segment);
System.assertEquals('Name = \'Jean-Philippe Monette\'', segment, 'It should output an equal condition.');
}

@isTest
static void testEqualsInteger() {
String segment = new QCondition('Age').equalsTo(5).build();
System.assertEquals('Age = 5', segment);
System.assertEquals('Age = 5', segment, 'It should output an equal integer condition.');
}

@isTest
static void testNotEquals() {
String segment = new QCondition('Name').notEqualsTo('Jean-Philippe Monette').build();
System.assertEquals('Name != \'Jean-Philippe Monette\'', segment);
System.assertEquals('Name != \'Jean-Philippe Monette\'', segment, 'It should output a not equal condition.');
}

@isTest
static void testIsLessThan() {
String segment = new QCondition('Age').isLessThan(5).build();
System.assertEquals('Age < 5', segment);
System.assertEquals('Age < 5', segment, 'It should output a less than condition.');
}

@isTest
static void testIsLessOrEquals() {
String segment = new QCondition('Age').isLessOrEquals(5).build();
System.assertEquals('Age <= 5', segment);
System.assertEquals('Age <= 5', segment, 'It should output a less or equal condition.');
}

@isTest
static void testIsGreaterThan() {
String segment = new QCondition('Age').isGreaterThan(5).build();
System.assertEquals('Age > 5', segment);
System.assertEquals('Age > 5', segment, 'It should output a greather than condition.');
}

@isTest
static void testIsGreaterOrEquals() {
String segment = new QCondition('Age').isGreaterOrEquals(5).build();
System.assertEquals('Age >= 5', segment);
System.assertEquals('Age >= 5', segment, 'It should output a greater or equal condition.');
}

@isTest
static void testIsLike() {
String segment = new QCondition('Name').isLike('%Acme%').build();
System.assertEquals('Name LIKE \'%Acme%\'', segment);
System.assertEquals('Name LIKE \'%Acme%\'', segment, 'It should output a LIKE condition.');
}

@isTest
static void testIsIn() {
List<String> names = new List<String>{'John', 'Jane'};
String segment = new QCondition('Name').isIn(names).build();
System.assertEquals('Name IN (\'John\', \'Jane\')', segment);
System.assertEquals('Name IN (\'John\', \'Jane\')', segment, 'It should output an IN condition.');
}

@isTest
static void testIsNotIn() {
List<String> names = new List<String>{'John', 'Jane'};
String segment = new QCondition('Name').isNotIn(names).build();
System.assertEquals('Name NOT IN (\'John\', \'Jane\')', segment);
System.assertEquals('Name NOT IN (\'John\', \'Jane\')', segment, 'It should output a NOT IN condition.');
}

@isTest
static void testIncludes() {
List<String> markets = new List<String>{'APAC', 'EMEA'};
String segment = new QCondition('Market').includes(markets).build();
System.assertEquals('Market INCLUDES (\'APAC\', \'EMEA\')', segment);
System.assertEquals('Market INCLUDES (\'APAC\', \'EMEA\')', segment, 'It should output an INCLUDES condition.');
}

@isTest
static void testExcludes() {
List<String> markets = new List<String>{'APAC', 'EMEA'};
String segment = new QCondition('Market').excludes(markets).build();
System.assertEquals('Market EXCLUDES (\'APAC\', \'EMEA\')', segment);
System.assertEquals('Market EXCLUDES (\'APAC\', \'EMEA\')', segment, 'It should output a EXCLUDES condition.');
}

@isTest
static void testIsNull() {
String segment = new QCondition('Name').isNull().build();
System.assertEquals('Name = null', segment);
System.assertEquals('Name = null', segment, 'It should output an IS NULL condition.');
}

@isTest
static void testIsNotNull() {
String segment = new QCondition('Name').isNotNull().build();
System.assertEquals('Name != null', segment);
System.assertEquals('Name != null', segment, 'It should output a IS NOT NULL condition.');
}

}
2 changes: 1 addition & 1 deletion force-app/main/default/classes/QConditionTest.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>39.0</apiVersion>
<apiVersion>48.0</apiVersion>
<status>Active</status>
</ApexClass>
2 changes: 1 addition & 1 deletion force-app/main/default/classes/QOrder.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>39.0</apiVersion>
<apiVersion>48.0</apiVersion>
<status>Active</status>
</ApexClass>
10 changes: 5 additions & 5 deletions force-app/main/default/classes/QOrderTest.cls
Expand Up @@ -9,31 +9,31 @@ private class QOrderTest {
@isTest
static void testConstructor() {
String segment = new QOrder('Name').build();
System.assertEquals('Name ASC', segment);
System.assertEquals('Name ASC', segment, 'It should output an ASC order by default.');
}

@isTest
static void testAscending() {
String segment = new QOrder('Name').ascending().build();
System.assertEquals('Name ASC', segment);
System.assertEquals('Name ASC', segment, 'It should output an ASC order.');
}

@isTest
static void testDescending() {
String segment = new QOrder('Name').descending().build();
System.assertEquals('Name DESC', segment);
System.assertEquals('Name DESC', segment, 'It should output a DESC order.');
}

@isTest
static void testNullsFirst() {
String segment = new QOrder('Name').nullsFirst().build();
System.assertEquals('Name ASC NULLS FIRST', segment);
System.assertEquals('Name ASC NULLS FIRST', segment, 'It should output an ASC NULLS FIRST order.');
}

@isTest
static void testNullsLast() {
String segment = new QOrder('Name').nullsLast().build();
System.assertEquals('Name ASC NULLS LAST', segment);
System.assertEquals('Name ASC NULLS LAST', segment, 'It should output an ASC NULLS LAST order.');
}

}
2 changes: 1 addition & 1 deletion force-app/main/default/classes/QOrderTest.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>39.0</apiVersion>
<apiVersion>48.0</apiVersion>
<status>Active</status>
</ApexClass>

0 comments on commit 1453adb

Please sign in to comment.