Skip to content

Commit

Permalink
Amendments to make Xindi work on Lucee.
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Bingham committed Feb 24, 2015
1 parent b0f32f5 commit 5691cf1
Show file tree
Hide file tree
Showing 17 changed files with 51 additions and 62 deletions.
4 changes: 2 additions & 2 deletions Application.cfc
Expand Up @@ -23,7 +23,7 @@ component extends="framework.one" {
, eventhandling = true
, eventhandler = "model.aop.GlobalEventHandler"
, logsql = this.development
, secondarycacheenabled = true
, secondarycacheenabled = server.coldfusion.productName != "Lucee" ? true : false // throws an error if enabled on Lucee
};

// create database and populate when the application starts in development environment
Expand Down Expand Up @@ -181,7 +181,7 @@ component extends="framework.one" {
, resetpasswordemailsubject = ""
, whitelist = "^admin#variables.framework.subsystemDelimiter#security,^public#variables.framework.subsystemDelimiter#" // list of unsecure actions - by default all requests require authentication
}
, version = "2015.2.23"
, version = "2015.2.24"
};
// override config in development mode
if (config.development) {
Expand Down
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -29,8 +29,8 @@ Xindi uses the frameworks listed below.

## Minimum Requirements

* Adobe ColdFusion 9.0.1
* MySQL 5 or MSSQL
* [Adobe ColdFusion 9.0.1](http://www.adobe.com/uk/products/coldfusion-family.html) or [Lucee 4.5.1.000](http://lucee.org/)
* [MySQL 5](http://dev.mysql.com/downloads/mysql/)

## Quick Start

Expand Down
5 changes: 5 additions & 0 deletions _tests/Application.cfc
Expand Up @@ -7,5 +7,10 @@ component {
this.mappings["/framework"] = this.applicationroot & "framework/";
this.mappings["/model"] = this.applicationroot & "model/";
this.mappings["/tests"] = this.applicationroot & "_tests/";
this.mappings["/ValidateThis"] = this.applicationroot & "framework/validatethis/";

this.datasource = "xindi";

this.ormenabled = TRUE;

}
2 changes: 1 addition & 1 deletion _tests/automation/runner.cfm
Expand Up @@ -6,6 +6,6 @@

<cfsetting requesttimeout="600">

<cfset testbox = new testbox.system.TestBox(directory = "tests.xunit")>
<cfset testbox = new testbox.system.TestBox(directory = "tests.automation")>

<cfoutput>#testbox.run()#</cfoutput>
2 changes: 1 addition & 1 deletion _tests/xunit/model/abstract/BaseServiceTests.cfc
Expand Up @@ -3,7 +3,7 @@ component extends="tests.xunit.BaseTest" {
// Testcase Lifecycle Methods

function beforeTests() {
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
variables.mocked.metaDataObj = variables.mockbox.createEmptyMock("model.content.MetaData");
}

Expand Down
8 changes: 4 additions & 4 deletions _tests/xunit/model/content/ContentServiceTests.cfc
Expand Up @@ -6,7 +6,7 @@ component extends="tests.xunit.BaseTest" {
variables.mocked.contentGatewayObj = variables.mockbox.createEmptyMock("model.content.ContentGateway");
variables.mocked.metaDataObj = variables.mockbox.createEmptyMock("model.content.MetaData");
variables.mocked.securityServiceObj = variables.mockbox.createEmptyMock("model.security.SecurityService");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
}

function setup() {
Expand Down Expand Up @@ -154,7 +154,7 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeletePageTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand All @@ -165,7 +165,7 @@ component extends="tests.xunit.BaseTest" {
}

private function setupSavePageTests() {
variables.mocked.pageObj = variables.mockbox.createEmptyMock("model.content.Page");
variables.mocked.pageObj = variables.mockbox.createEmptyMock("model.content.Page").$("getTitle");
variables.mocked.contentGatewayObj
.$("getPage", variables.mocked.pageObj, FALSE)
.$("savePage", variables.mocked.pageObj, FALSE);
Expand All @@ -175,7 +175,7 @@ component extends="tests.xunit.BaseTest" {
.$("generateMetaKeywords");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("getName");
variables.mocked.securityServiceObj.$("getCurrentUser");
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("hasErrors", FALSE)
.$("setSuccessMessage")
.$("setErrorMessage");
Expand Down
5 changes: 2 additions & 3 deletions _tests/xunit/model/content/MetaDataTests.cfc
Expand Up @@ -15,11 +15,10 @@ component extends="tests.xunit.BaseTest" {
$assert.isEqual(local.expected, local.actual);
}

function test_generateMetaKeywords_returns_expected_result() {
function test_generateMetaKeywords_returns_simple_value() {
local.content = "Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.";
local.expected = "stockade,ago,for,commit,soldiers,Angeles,years,crack,commando,security,government,didn’t,by,men,promptly,military,crime,from,prison,they,still,survive,fortune,was,court,sent,escaped,Los,unit,Today,The";
local.actual = variables.CUT.generateMetaKeywords(keywords = local.content);
$assert.isEqual(local.expected, local.actual);
$assert.isTrue(issimplevalue(local.actual));
}

function test_generatePageTitle_returns_expected_result() {
Expand Down
11 changes: 6 additions & 5 deletions _tests/xunit/model/enquiry/EnquiryServiceTests.cfc
Expand Up @@ -5,7 +5,7 @@ component extends="tests.xunit.BaseTest" {
function beforeTests() {
variables.mocked.enquiryGatewayObj = variables.mockbox.createEmptyMock("model.enquiry.EnquiryGateway");
variables.mocked.notificationServiceObj = variables.mockbox.createEmptyMock("model.utility.NotificationService");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
}

function setup() {
Expand Down Expand Up @@ -98,7 +98,7 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeleteEnquiryTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand All @@ -109,7 +109,7 @@ component extends="tests.xunit.BaseTest" {
}

private function setupMarkReadTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand All @@ -120,13 +120,14 @@ component extends="tests.xunit.BaseTest" {
}

private function setupSendEnquiryTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("validate", variables.mocked.resultObj);
variables.mocked.enquiryObj = variables.mockbox.createEmptyMock("model.enquiry.Enquiry")
.$("getDisplayMessage")
.$("getEmail", "the email");
.$("getEmail", "the email")
.$("getName");
variables.mocked.enquiryGatewayObj
.$("newEnquiry", variables.mocked.enquiryObj, FALSE)
.$("saveEnquiry", variables.mocked.enquiryObj, FALSE);
Expand Down
8 changes: 4 additions & 4 deletions _tests/xunit/model/news/NewsServiceTests.cfc
Expand Up @@ -6,7 +6,7 @@ component extends="tests.xunit.BaseTest" {
variables.mocked.newsGatewayObj = variables.mockbox.createEmptyMock("model.news.NewsGateway");
variables.mocked.metaDataObj = variables.mockbox.createEmptyMock("model.content.MetaData");
variables.mocked.securityServiceObj = variables.mockbox.createEmptyMock("model.security.SecurityService");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
}

function setup() {
Expand Down Expand Up @@ -89,7 +89,7 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeleteArticleTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand All @@ -100,7 +100,7 @@ component extends="tests.xunit.BaseTest" {
}

private function setupSaveArticleTests() {
variables.mocked.articleObj = variables.mockbox.createEmptyMock("model.news.Article");
variables.mocked.articleObj = variables.mockbox.createEmptyMock("model.news.Article").$("getTitle");
variables.mocked.newsGatewayObj
.$("getArticle", variables.mocked.articleObj, FALSE)
.$("saveArticle", variables.mocked.articleObj, FALSE);
Expand All @@ -110,7 +110,7 @@ component extends="tests.xunit.BaseTest" {
.$("generateMetaKeywords");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("getName");
variables.mocked.securityServiceObj.$("getCurrentUser");
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("hasErrors", FALSE)
.$("setSuccessMessage")
.$("setErrorMessage");
Expand Down
14 changes: 8 additions & 6 deletions _tests/xunit/model/security/SecurityServiceTests.cfc
Expand Up @@ -6,7 +6,7 @@ component extends="tests.xunit.BaseTest" {
variables.mocked.notificationServiceObj = variables.mockbox.createEmptyMock("model.utility.NotificationService");
variables.mocked.userGatewayObj = variables.mockbox.createEmptyMock("model.user.UserGateway");
variables.mocked.userServiceObj = variables.mockbox.createEmptyMock("model.user.UserService");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
variables.mocked.config = {};
}

Expand Down Expand Up @@ -142,7 +142,7 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeleteCurrentUserTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand All @@ -158,30 +158,32 @@ component extends="tests.xunit.BaseTest" {
}

private function setupLoginUserTests() {
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("getName");
variables.mocked.userGatewayObj
.$("newUser", variables.mocked.userObj, FALSE)
.$("getUserByCredentials", variables.mocked.userObj, FALSE);
variables.CUT
.$("populate")
.$("setCurrentUser");
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("addFailure")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("validate", variables.mocked.resultObj);
}

private function setupResetPasswordTests() {
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("setPassword");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User")
.$("getEmail")
.$("setPassword");
variables.mocked.userGatewayObj
.$("newUser", variables.mocked.userObj, FALSE)
.$("getUserByEmail", variables.mocked.userObj, FALSE);
variables.mocked.userServiceObj.$("newPassword", "");
variables.CUT
.$("populate")
.$("setCurrentUser");
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("addFailure")
.$("setSuccessMessage")
.$("setErrorMessage");
Expand Down
10 changes: 5 additions & 5 deletions _tests/xunit/model/user/UserServiceTests.cfc
Expand Up @@ -4,7 +4,7 @@ component extends="tests.xunit.BaseTest" {

function beforeTests() {
variables.mocked.userGatewayObj = variables.mockbox.createEmptyMock("model.user.UserGateway");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
}

function setup() {
Expand Down Expand Up @@ -87,23 +87,23 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeleteUserTests() {
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("getName");
variables.mocked.userGatewayObj
.$("deleteUser")
.$("getUser", variables.mocked.userObj);
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
}

private function setupSaveUserTests() {
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User");
variables.mocked.userObj = variables.mockbox.createEmptyMock("model.user.User").$("getName");
variables.mocked.userGatewayObj
.$("getUser", variables.mocked.userObj)
.$("populate")
.$("saveUser", variables.mocked.userObj, FALSE);
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("validate", variables.mocked.resultObj);
Expand Down
4 changes: 2 additions & 2 deletions _tests/xunit/model/utility/FileManagerServiceTests.cfc
Expand Up @@ -3,7 +3,7 @@ component extends="tests.xunit.BaseTest" {
// Testcase Lifecycle Methods

function beforeTests() {
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("framework.ValidateThis.core.ValidationFactory");
variables.mocked.validationFactoryObj = variables.mockbox.createEmptyMock("ValidateThis.core.ValidationFactory");
}

function setup() {
Expand Down Expand Up @@ -47,7 +47,7 @@ component extends="tests.xunit.BaseTest" {
// Helper Methods

private function setupDeleteFileTests() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setSuccessMessage")
.$("setErrorMessage");
variables.mocked.validationFactoryObj.$("newResult", variables.mocked.resultObj);
Expand Down
26 changes: 2 additions & 24 deletions _tests/xunit/model/utility/ValidatorResultTests.cfc
Expand Up @@ -8,28 +8,6 @@ component extends="tests.xunit.BaseTest" {

// Tests

function test_getMessage_calls_getSuccessMessage_if_success_message_exists() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result").$("getSuccessMessage", "the success message");
variables.CUT
.$("getSuccessMessage", "the success message")
.$property(propertyName = "message", propertyScope = "variables", mock = "the message")
.$property(propertyName = "super", propertyScope = "variables", mock = variables.mocked.resultObj)
.getMessage();
local.actual = variables.CUT.$once("getSuccessMessage");
$assert.isTrue(local.actual);
}

function test_getMessage_returns_message_if_success_message_does_not_exist() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result").$("getSuccessMessage");
variables.CUT
.$("getSuccessMessage", "the success message")
.$property(propertyName = "message", propertyScope = "variables", mock = "the message")
.$property(propertyName = "super", propertyScope = "variables", mock = variables.mocked.resultObj);
local.expected = "the message";
local.actual = variables.CUT.getMessage();
$assert.isEqual(local.expected, local.actual);
}

function test_getMessageType_returns_message_type() {
variables.CUT.$property(propertyName = "messageType", propertyScope = "variables", mock = "the message type");
local.expected = "the message type";
Expand All @@ -50,7 +28,7 @@ component extends="tests.xunit.BaseTest" {
}

function test_setErrorMessage_sets_error_message() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result").$("setIsSuccess");
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result").$("setIsSuccess");
variables.CUT
.$property(propertyName = "message", propertyScope = "variables", mock = "")
.$property(propertyName = "messageType", propertyScope = "variables", mock = "")
Expand All @@ -72,7 +50,7 @@ component extends="tests.xunit.BaseTest" {
}

function test_setSuccessMessage_sets_success_message() {
variables.mocked.resultObj = variables.mockbox.createEmptyMock("framework.ValidateThis.util.Result")
variables.mocked.resultObj = variables.mockbox.createEmptyMock("ValidateThis.util.Result")
.$("setIsSuccess")
.$("setSuccessMessage");
variables.CUT
Expand Down
4 changes: 4 additions & 0 deletions changelog.txt
@@ -1,3 +1,7 @@
Version 2015.2.24

- Amendments to make Xindi work on Lucee (http://lucee.org/).

Version 2015.2.23

- Upgrade to Bootstrap version 3.3.2.
Expand Down
2 changes: 1 addition & 1 deletion framework/ValidateThis/util/ObjectChecker.cfc
Expand Up @@ -31,7 +31,7 @@
<cfset ancestry = buildInheritanceTree( getMetadata(theObject) )>
</cfif>

<cfreturn listFindNoCase( ancestry, "WEB-INF.cftags.component" ) GT 0 OR listFindNoCase( ancestry, "railo-context.component" ) GT 0>
<cfreturn listFindNoCase( ancestry, "WEB-INF.cftags.component" ) GT 0 OR listFindNoCase( ancestry, "railo-context.component" ) GT 0 OR listFindNoCase( ancestry, "lucee.component" ) GT 0>
</cffunction>

<cffunction name="isWheels" access="public" output="false" returntype="any" hint="Returns true if the object passed in is a Wheels object.">
Expand Down
2 changes: 1 addition & 1 deletion model/content/MetaData.cfc
Expand Up @@ -33,7 +33,7 @@ component accessors="true" {
* I generate meta keywords
*/
string function generateMetaKeywords(string keywords="") {
return Left(replaceMultipleSpacesWithSingleSpace(removeUnrequiredCharacters(listDeleteDuplicatesNoCase(ListChangeDelims(removeNonKeywords(stripHTML(arguments.keywords)), ",", " .")))), 200);
return ListSort(Lcase(Left(replaceMultipleSpacesWithSingleSpace(removeUnrequiredCharacters(listDeleteDuplicatesNoCase(ListChangeDelims(removeNonKeywords(stripHTML(arguments.keywords)), ",", " .")))), 200)), "text");
}

/**
Expand Down
2 changes: 1 addition & 1 deletion model/user/User.xml.cfm
Expand Up @@ -8,7 +8,7 @@
</rule>
</property>
<property name="email" desc="email address">
<rule type="required" contexts="create,update" />
<rule type="required" contexts="create,update,login" />
<rule type="email" contexts="create,update" />
<rule type="custom" contexts="create,update" failureMessage="The email address is registered to an existing account.">
<param name="methodname" value="isEmailUnique" />
Expand Down

0 comments on commit 5691cf1

Please sign in to comment.