/** * Expecting integrity constraint violation exception because this test produce * member a duplication in a group. * * @expectedException Illuminate\Database\QueryException * @expectedExceptionCode 23000 */ public function testCanNotHaveDuplicateMembers() { // TODO : Find a better solution to validate this exception is raise. // This method works with MySQL and MariaDB, This test could fail using // other databases. $group = FactoryMuffin::create('DMA\\Friends\\Models\\UserGroup'); // Create member instances $members = FactoryMuffin::seed(2, 'RainLab\\User\\Models\\User'); foreach ($members as $member) { $group->users()->attach($member->id); } // Here this test should fail and raise and exception because // this member already exists $group->users()->attach($members[0]->id); }
FactoryMuffin::define('DMA\\Friends\\Models\\Location', ['title' => 'word', 'description' => 'optional:text', 'created_at' => 'dateTime|now']); FactoryMuffin::define('DMA\\Friends\\Models\\Reward', ['title' => 'sentence', 'description' => 'optional:text', 'excerpt' => 'optional:text', 'fine_print' => 'optional:text', 'points' => 'randomDigitNotNull', 'image' => 'optional:imageUrl|400;600', 'barcode' => 'randomLetter|3', 'date_begin' => 'optional:dateTime', 'date_end' => 'optional:dateTime', 'days_valid' => 'optional:randomDigit|2', 'inventory' => 'optional:randomDigit|3', 'enable_email' => 'boolean', 'redemption_email' => 'optional:text', 'is_published' => 'boolean', 'is_archived' => 'boolean', 'hidden' => 'boolean', 'created_at' => 'dateTime|now']); FactoryMuffin::define('DMA\\Friends\\Models\\Step', ['title' => 'sentence', 'created_at' => 'dateTime|now', 'updated_at' => 'dateTime|now']); FactoryMuffin::define('RainLab\\User\\Models\\User', ['name' => 'userName', 'username' => 'userName', 'email' => 'email', 'password' => 'password', 'password_confirmation' => 'password', 'is_activated' => 'boolean', 'activated_at' => 'dateTime', 'last_login' => 'dateTime', 'country' => function ($object, $saved) { return Country::orderByRaw('RAND()')->first(); }, 'state' => function ($object, $saved) { return State::orderByRaw('RAND()')->first(); }, 'created_at' => 'dateTime|now', 'updated_at' => 'dateTime|now', 'phone' => 'optional:phone', 'company' => 'optional:company', 'street_addr' => 'streetAddress', 'city' => 'city', 'zip' => 'postcode', 'points' => 'randomNumber']); FactoryMuffin::define('DMA\\Friends\\Models\\Usermeta', ['first_name' => 'firstName', 'last_name' => 'lastName', 'email_optin' => 'boolean', 'current_member' => 'boolean', 'current_member_number' => 'randomNumber']); /** * Create and empty group * @var DMA\Friends\Models\UserGroup */ FactoryMuffin::define('DMA\\Friends\\Models\\UserGroup', ['owner_id' => 'factory|RainLab\\User\\Models\\User', 'is_active' => 'boolean|100']); /** * Create a group with the maxium of members allow in a group. * The limit is set in the settings of the plugin * @var DMA\Friends\Models\UserGroup */ FactoryMuffin::define('filled:DMA\\Friends\\Models\\UserGroup', [], function ($object) { $limit = Settings::get('maximum_users_per_group'); $members = FactoryMuffin::seed($limit, 'RainLab\\User\\Models\\User'); $members_ids = array_map(function ($m) { return $m->id; }, $members); $object->users()->attach($members_ids); /* forEach($members as $user){ $object->addUser($user); }*/ });
FactoryMuffin::define('Needle', array('modality_id' => 'factory|Modality', 'name' => 'sentence', 'manufacturer' => 'company', 'file' => 'md5'), function ($object) { $parameters = FactoryMuffin::seed(3, 'Parameter'); foreach ($parameters as $parameter) { $parameter->paramable_id = $object->id; $parameter->paramable_type = 'needle'; } $object->parameters()->saveMany($parameters); }); FactoryMuffin::define('PowerGenerator', array('modality_id' => 'factory|Modality', 'name' => 'sentence', 'manufacturer' => 'company'), function ($object) { $needles = FactoryMuffin::seed(3, 'Needle'); $object->needles()->saveMany($needles); $parameters = FactoryMuffin::seed(3, 'Parameter'); foreach ($parameters as $parameter) { $parameter->paramable_id = $object->id; $parameter->paramable_type = 'power_generator'; } $object->parameters()->saveMany($parameters); }); FactoryMuffin::define('Protocol', array('modality_id' => 'factory|Modality', 'name' => 'sentence', 'algorithm' => 'text')); FactoryMuffin::define('Parameter', array('name' => 'word', 'type' => 'word', 'widget' => 'word', 'value' => 'float', 'priority' => 'integer', 'paramable_id' => '-1', 'paramable_type' => '')); FactoryMuffin::define('Requirement', array('protocol_id' => 'factory|Protocol', 'family' => 'word', 'parameter_id' => 'factory|Parameter'), function ($object) { $parameter = FactoryMuffin::create('Parameter'); $parameter->paramable_id = $object->id; $parameter->paramable_type = 'requirement'; $object->parameter()->save($parameter); }); FactoryMuffin::define('Combination', array('needle_id' => 'factory|Needle', 'power_generator_id' => 'factory|PowerGenerator', 'protocol_id' => 'factory|Protocol')); FactoryMuffin::define('User', array('username' => 'string', 'password' => 'string', 'email' => 'string'), function ($object) { $accounts = FactoryMuffin::seed(5, 'Account'); $object->accounts()->saveMany($accounts); });
/** * @Given /^there are (\d+) "([^"]*)"s$/ */ public function thereAreSomeNumberOfModel($num, $model_name) { FactoryMuffin::seed($num, $model_name); }
/** * Test if endpoint last connected is updated * * @throws InputException * @throws NoServerAvailableException */ public function testUpdateEndpoint() { $manager = new Manager(); /** @var Endpoint[] $endpoints */ $endpoints = FactoryMuffin::seed(3, 'WebservicesNl\\Common\\Endpoint\\Endpoint'); foreach ($endpoints as $endpoint) { $manager->addEndpoint($endpoint); } $endpoint = $manager->updateLastConnected(); $dateTime = new \DateTime(); self::assertInstanceOf('\\DateTime', $manager->getActiveEndpoint()->getLastConnected()); self::assertEquals($dateTime, $endpoint->getLastConnected(), 'DateTimes should be close to each other', 5); }