You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/05/11 13:32:31 UTC

git commit: ISIS-776: minor enhancements to todo app's fixtures

Repository: isis
Updated Branches:
  refs/heads/master 55c4ea853 -> 4743b3836


ISIS-776: minor enhancements to todo app's fixtures

1. install fixtures for current as a convenience method
2. split out ToDoItemsCreateFor into a new ToDoItemsCompleteForUser, (latter does the completion of the object), as a better demonstration of the composability of fixture scripts.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/4743b383
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/4743b383
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/4743b383

Branch: refs/heads/master
Commit: 4743b3836a80dcaf7032008250190db3774d3e26
Parents: 55c4ea8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun May 11 12:32:19 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun May 11 12:32:19 2014 +0100

----------------------------------------------------------------------
 .../fixture/todo/ToDoItemsCompleteForUser.java  | 92 ++++++++++++++++++++
 .../fixture/todo/ToDoItemsCreateForUser.java    |  4 +-
 .../java/fixture/todo/ToDoItemsFixture.java     |  5 ++
 .../fixture/todo/ToDoItemsFixturesService.java  | 21 +++++
 .../fixture/todo/ToDoItemsResetForUser.java     |  1 +
 5 files changed, 121 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
new file mode 100644
index 0000000..b425fa6
--- /dev/null
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
@@ -0,0 +1,92 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package fixture.todo;
+
+import java.util.Collection;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItems;
+
+import org.apache.isis.applib.fixturescripts.FixtureResultList;
+import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
+
+public class ToDoItemsCompleteForUser extends SimpleFixtureScript {
+
+    // //////////////////////////////////////
+    // Constructor
+    // //////////////////////////////////////
+
+    private final String user;
+    
+    public ToDoItemsCompleteForUser(String user) {
+        super(friendlyNameFor(user), localNameFor(user));
+        this.user = user;
+    }
+    
+    static String localNameFor(String user) {
+        return user != null? user: "current";
+    }
+
+    static String friendlyNameFor(String user) {
+        return "Complete selected ToDoItems for " + (user != null ? "'" + user + "'" : "current user");
+    }
+
+    @Override
+    protected void doRun(final FixtureResultList resultList) {
+        final String ownedBy = user != null? user: getContainer().getUser().getName();
+        installFor(ownedBy, resultList);
+        getContainer().flush();
+    }
+
+    private void installFor(final String user, final FixtureResultList resultList) {
+        complete(user, "Buy stamps", resultList);
+        complete(user, "Write blog post", resultList);
+
+        getContainer().flush();
+    }
+
+    private void complete(final String user, String description, final FixtureResultList resultList) {
+        final ToDoItem toDoItem = findToDoItem(description, user);
+        toDoItem.setComplete(true);
+        resultList.add(this, toDoItem);
+    }
+
+    private ToDoItem findToDoItem(final String description, final String user) {
+        final Collection<ToDoItem> filtered = Collections2.filter(toDoItems.allToDos(), new Predicate<ToDoItem>() {
+            @Override
+            public boolean apply(ToDoItem input) {
+                return Objects.equal(description, input.getDescription()) &&
+                       Objects.equal(user, input.getOwnedBy());
+            }
+        });
+        return filtered.isEmpty()? null: filtered.iterator().next();
+    }
+
+
+    // //////////////////////////////////////
+    // Injected services
+    // //////////////////////////////////////
+
+    @javax.inject.Inject
+    private ToDoItems toDoItems;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
index 33c7ada..9f81af1 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
@@ -63,7 +63,7 @@ public class ToDoItemsCreateForUser extends SimpleFixtureScript {
 
         createToDoItemForUser("Buy milk", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("0.75"), resultList);
         createToDoItemForUser("Buy bread", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("1.75"), resultList);
-        createToDoItemForUser("Buy stamps", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("10.00"), resultList).setComplete(true);
+        createToDoItemForUser("Buy stamps", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("10.00"), resultList);
         createToDoItemForUser("Pick up laundry", Category.Domestic, Subcategory.Chores, user, daysFromToday(6), new BigDecimal("7.50"), resultList);
         createToDoItemForUser("Mow lawn", Category.Domestic, Subcategory.Garden, user, daysFromToday(6), null, resultList);
         createToDoItemForUser("Vacuum house", Category.Domestic, Subcategory.Housework, user, daysFromToday(3), null, resultList);
@@ -71,7 +71,7 @@ public class ToDoItemsCreateForUser extends SimpleFixtureScript {
 
         createToDoItemForUser("Write to penpal", Category.Other, Subcategory.Other, user, null, null, resultList);
 
-        createToDoItemForUser("Write blog post", Category.Professional, Subcategory.Marketing, user, daysFromToday(7), null, resultList).setComplete(true);
+        createToDoItemForUser("Write blog post", Category.Professional, Subcategory.Marketing, user, daysFromToday(7), null, resultList);
         createToDoItemForUser("Organize brown bag", Category.Professional, Subcategory.Consulting, user, daysFromToday(14), null, resultList);
         createToDoItemForUser("Submit conference session", Category.Professional, Subcategory.Education, user, daysFromToday(21), null, resultList);
         createToDoItemForUser("Stage Isis release", Category.Professional, Subcategory.OpenSource, user, null, null, resultList);

http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
index ece3726..3d561ad 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
@@ -19,7 +19,11 @@
 
 package fixture.todo;
 
+import org.apache.isis.applib.fixturescripts.FixtureScript;
 
+/**
+ * Refactored to reuse the newer {@link FixtureScript} API.
+ */
 public class ToDoItemsFixture extends ToDoItemsResetForUser {
 
     public ToDoItemsFixture() {
@@ -28,6 +32,7 @@ public class ToDoItemsFixture extends ToDoItemsResetForUser {
     
     public ToDoItemsFixture(String user) {
         super(user);
+        setDiscoverability(Discoverability.NON_DISCOVERABLE);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 76d7d63..12ba74a 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -18,7 +18,13 @@
  */
 package fixture.todo;
 
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.Prototype;
+import org.apache.isis.applib.fixturescripts.FixtureResult;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
 
 /**
@@ -31,4 +37,19 @@ public class ToDoItemsFixturesService extends FixtureScripts {
         super("fixture.todo");
     }
 
+    @Prototype
+    public List<FixtureResult> runFixtureScriptForCurrent() {
+        return findFixtureScriptFor("current").run();
+    }
+    public String disableRunFixtureScriptForCurrent() {
+        return findFixtureScriptFor("current") == null? "Could not find fixture script 'current'": null;
+    }
+    private FixtureScript findFixtureScriptFor(String qualifiedName) {
+        List<FixtureScript> fixtureScripts = choices0RunFixtureScript();
+        for (FixtureScript fs : fixtureScripts) {
+            fs.getQualifiedName().equals(qualifiedName);
+            return fs;
+        }
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
index 49793a3..527067a 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
@@ -71,5 +71,6 @@ public class ToDoItemsResetForUser extends CompositeFixtureScript {
     protected void addChildren() {
         add("delete", new ToDoItemsDeleteForUser(user));
         add("create", new ToDoItemsCreateForUser(user));
+        add("complete", new ToDoItemsCompleteForUser(user));
     }
 }
\ No newline at end of file