Skip to content
Snippets Groups Projects
EntryValuesTest.php 3.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • Josh Pollock's avatar
    Josh Pollock committed
    <?php
    
    
    namespace calderawp\CalderaFormsQuery\Tests\Integration\Select;
    
    
    
    use calderawp\CalderaFormsQuery\Tests\Integration\IntegrationTestCase;
    use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField;
    
    class EntryValuesTest extends IntegrationTestCase
    {
    	use CanCreateEntryWithEmailField;
    
    	/**
    	 * Test query by entry ID
    	 *
    	 * @covers EntryValues::queryByEntryId()
    	 */
    	public function testQueryByEntryId()
    	{
    		$entry = $this->createEntryWithMockForm();
    		$entryValuesQueryGenerator = $this->entryValuesGeneratorFactory();
    		$entryValuesQueryGenerator->queryByEntryId($entry['id']);
    		$sql = $entryValuesQueryGenerator->getPreparedSql();
    		$results =  $this->queryWithWPDB($sql);
    		$this->assertTrue( ! empty( $results ));
    		$this->assertSame( 4, count( $results ) );
    		$this->assertEquals( $results[0]->entry_id, $entry['id']);
    		$this->assertEquals( $results[1]->entry_id, $entry['id']);
    		$this->assertEquals( $results[2]->entry_id, $entry['id']);
    		$this->assertEquals( $results[3]->entry_id, $entry['id']);
    
    	}
    
    	/**
    	 * Test query by field where field value equals a value
    	 *
    	 * @covers \calderawp\CalderaFormsQuery\Select\EntryValues::queryByFieldValue()
    	 */
    	public function testQueryByFieldValueEquals()
    	{
    		//Entry with no real email
    		$this->createEntryWithMockForm();
    		//Create entries for each of two emails
    		$emailOne = 'one@hiroy.club';
    		$emailTwo = 'two@hiroy.club';
    		$this->createEntryWithEmail( $emailOne );
    		$this->createEntryWithEmail( $emailTwo );
    
    		//One entry when querying by first email
    		$entryValuesQueryGenerator = $this->entryValuesGeneratorFactory();
    
    		$this->assertSame( 1, count(
    			$this->queryWithWPDB(
    				$entryValuesQueryGenerator
    					->queryByFieldValue(
    						$this->getEmailFieldSlug(),
    						$emailOne
    					)
    				->getPreparedSql()
    			)
    		) );
    
    		//One entry when querying by second email
    		$entryValuesQueryGenerator = $this->entryValuesGeneratorFactory();
    		$this->assertSame( 1, count(
    			$this->queryWithWPDB(
    				$entryValuesQueryGenerator
    					->queryByFieldValue(
    						$this->getEmailFieldSlug(),
    						$emailTwo
    					)
    				->getPreparedSql()
    			)
    		) );
    
    	}
    
    	/**
    	 * Test query by field where field does not equals a value
    	 *
    	 * @covers \calderawp\CalderaFormsQuery\Select\EntryValues::queryByFieldValue()
    	 */
    	public function testQueryByFieldValueNotEquals()
    	{
    		//Entry with no real email
    		$this->createEntryWithMockForm();
    		//Create entries for each of two emails
    		$emailOne = 'one@hiroy.club';
    		$emailTwo = 'two@hiroy.club';
    		$this->createEntryWithEmail( $emailOne );
    		$this->createEntryWithEmail( $emailTwo );
    
    		//Two entries when querying by NOT first email
    		$entryValuesQueryGenerator = $this->entryValuesGeneratorFactory();
    		$this->assertSame( 2, count(
    			$this->queryWithWPDB(
    				$entryValuesQueryGenerator
    					->queryByFieldValue(
    						$this->getEmailFieldSlug(),
    						$emailOne,
    						'notEquals'
    					)
    				->getPreparedSql()
    			)
    		) );
    
    		//Two entries when querying by NOT second email
    		$entryValuesQueryGenerator = $this->entryValuesGeneratorFactory();
    		$this->assertSame( 2, count(
    			$this->queryWithWPDB(
    				$entryValuesQueryGenerator
    					->queryByFieldValue(
    						$this->getEmailFieldSlug(),
    						$emailTwo,
    						'notEquals'
    					)
    				->getPreparedSql()
    			)
    		) );
    
    	}
    
    }